web-dev-qa-db-ja.com

/ usr / bin / Sudoはuid 0が所有し、setuidビットが設定されている必要があります

誤って次のコマンドを実行しました

Sudo chown [username] -hR /

Sudo suエラーを取得しています:

Sudo: /usr/bin/Sudo must be owned by uid 0 and have the setuid bit set

これを解決する方法は?

74
Pandya

データをバックアップして再インストールします。

これはおそらく極端に見えますが、これはSudoだけではありません。 ファイルシステム全体のパーミッション構造を破壊しました。他のいくつかの答えはSudo動作しますが、問題全体を無視すると、後の災害。

別のインストールから所有者をミラーリングすることもできますが、実際にインストールしたものに大きく依存する場合(/var/など)があります。問題の規模を把握したい場合は、 以前にこの種の問題を誰かが解決するのを手伝ったことがあります 。修正は手作業で行われ、長いため、システムが安全でなくなったり壊れたりする可能性があります。

その混乱を選択することは、クリーンインストールよりもかなり時間がかかります。


ここには、状況の深刻さを理解していない人々からのドライブバイがいくつかありました。彼らにとって、それは不必要な仕事の大きな山のように見えます。不正な配管工やメカニックが、より大きな仕事のためにあなたを揺さぶると言うようなことです。

/usr/bin/Sudoのアクセス許可のみを変更した場合は、必ず修正してください。 しかし、この質問はシステム全体の変更に関するものです。すべてのファイル(ランタイムのみのファイルを保存)は、ユーザーが所有しています。ユーザーが実行するすべてのもの(ブラウザー、ブラウザーエクスプロイトなど)は、システムファイルを上書きし、あなたをスパイし、データを抽出する可能性があります。これを修正する必要があります。上記ごとに、これは難しいです。最も簡単な方法は再インストールです。

だから、これについて怠けないでください。ファイルシステムの許可は、あなたを安全に保ち、修正するのに役立ちます。

30
Oli

SOのこの答え を読むとわかるように、この問題はnot人々が作っているほど難しくありません。次の簡単な手順に従って、再インストールせずにSudoコマンドが再び機能するようになりました。

  1. 現在のユーザーとしてログアウトしてから、ルートとして再度ログインします。
  2. chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudoを実行します
  3. ルートとしてログアウトし、現在のユーザーとして再度ログインします。

これはトリックを行い、他の回答で推奨されている「核オプション」よりもはるかに迅速で痛みが少ないです。

ルートパスワードが設定されていない場合は、 回復モード で起動して設定できます。

137
user10962
  1. 押し続けると回復モードになります Esc システムの起動中。

  2. 復旧モードに入った後に表示される長いリストでルートオプションを選択します(実際にはルートシェルです)

  3. type command-mount -o remount /(またはリカバリでは、grubオプションをクリックできます。これは、ファイルシステムの読み取り/書き込み権限を取得するのに役立ちました。これは、コマンドが実行されなかったため、ファイルシステムの読み取り/書き込みモードを基本的に更新しました最初は私のために働いています)

    読み取りおよび書き込みモードでファイルシステムを再マウントします。

  4. コマンド-chown -R root:root /usrこのコマンドは、所有権を「ユーザー」からルートに再度再帰的に変更します

  5. 今でもSudoコマンドに問題があるので、ステップ1、2、3を繰り返してchmod 4755 /usr/bin/Sudoを実行しました

今、私は本当に再インストールは本当に「核オプション」だったと思う

14
Hridaynath

Digital Oceanのドロップレットにも同じ問題がありました。

Sudo: /usr/bin/Sudouid 0が所有し、setuidビットが設定されている必要があります。以下は、実行して再起動するコマンドです。

chown -R root:root /usr/bin/Sudo
chmod -R a=rx,u+ws /usr/bin/Sudo
chown -R root:root /usr/lib/Sudo/sudoer.so
chmod -R a=rx,u+ws /usr/lib/Sudo/sudoer.so

それが役に立てば幸い。

残念ながら、完全バックアップがない場合は、おそらくこの時点でできることは再インストールすることです。

システムのセキュリティパラダイムを完全に台無しにして、すべてのファイルの所有権を同じユーザーに変更したことを考慮してください。

このサイトを検索すると、たとえば chmod -R a-wrx/commandから回復するにはどうすればよいですか?

3
Rmano

上記の方法は、「rootとしてログインし直す」ことができなかったため(パスワードは不明)、機能しませんでしたが、編集してルートシェルを取得しました。

vi /etc/lightdm/lightdm.conf

autologin-user=root
greeter-show-manual-login=true

再起動後、私は最終的に実行することができました

chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudo
2
Anno2001

実行中のシステムでlightdm.confファイルを編集できませんでした。私はこのようなものを修正しました:

  1. ubuntu Live USBを起動します
  2. インストールの/etc/lightdm/lightdm.confにアクセスするためにルートパーティションをマウントします
  3. Sudo -H gedit /mnt/etc/lightdm/lightdm.confおよび Anno2001's answer から次の行を追加します

    autologin-user=root
    greeter-show-manual-login=true
    
  4. リブート

  5. コマンドを実行します:

    chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudo
    
  6. /etc/lightdm/lightdm.confのデフォルトユーザーに戻す

  7. 再起動すると、システムは再び正常に動作します。
1
DrackG