web-dev-qa-db-ja.com

「chmod -R 777 / usr / bin」の後にSudoを修正する方法は?

chmod -R 777 /usr/binと入力しましたが、Sudoは動作していません。

Sudo must be setuid rootと表示されます。

オンラインでchown root:root /usr/bin/Sudo chmod 4755 /usr/bin/Sudoを実行するようにアドバイスされています。

chown root:root /usr/bin/Sudoと入力すると、opened in readonly modeエラーが表示されます。

15
Manojkumar

受け入れられたステータスにもかかわらず、私は今確信していますこの答えは間違っています。 (アクセプトについてOPと相談した後、すぐに改善したいと思っています。)他の人はこれがうまくいったと言ったことを思い出すと思いますが、彼らの問題は少なくともわずかに異なっていたと思います。ここで説明する方法は、chmod -R 777 /usr/binが中断されるいくつかの状況で価値があります Ctrl+C または、完了しません。しかし、いったんそれが行われると、pkexecもSETUIDされず、DAMIEN ROCHEとOLIが正しくコメントしたように、Sudoよりもうまく動作しません。

Ubuntuデスクトップシステムに PolicyKit がインストールされているため、pkexec を使用して、破損したSudo実行可能ファイルまたはsudoersファイルを修復できます。リカバリモードで起動する必要はなく、ライブCDから起動する必要もありません。再起動する必要さえありません。

この場合、次のコマンドを実行します。

pkexec chown root:root /usr/bin/Sudo
pkexec chmod 4755 /usr/bin/Sudo

詳細については、 この質問 を参照してください。

10
Eliah Kagan

ライブCD /ペンドライブから実行する場合でも、chmodコマンドの前にSudoを付ける必要があります。したがって、手順は次のようになります。

  1. ライブCDからの起動/ Pendrive
  2. ディスクがすでに自動マウントされているかどうか(およびどこに)を確認します。そうでない場合は、マウントします(以下を参照)
  3. Sudo chmod 0755 <path>を使用して権限を調整します

ディスクがマウントされている場所を特定する方法:ターミナルウィンドウから、mount(引数なし)を実行します。これにより、マウントされているすべてのデバイスがリストされます。リストされているtypeを確認します-「実際のファイルシステム」を使用していないものはすべてスキップできます(おそらくディスクはext3またはext4を使用しています-proc、sysfsなどをスキップできます)。何かが有望と思われる場合(/dev/sda1 on /media/sda1 type ext3のように見える)、ls /media/sda1を使用してその内容を確認し、それが正しいかどうかを確認します。

マウントされていない場合は、/devエントリを使用して、ディスクがある場所を確認できます(ls /dev/ |grep '/dev/sdを使用して使用可能なデバイスを確認します。ディスクは/dev/sdaX/dev/sdbXなど-Xが数字の場合)。これをマウントされたデバイスのリストと比較します。存在しない場合は、マウントしてその内容を確認してください(上記を参照)。マウントするには、まずマウントポイントを作成します。 Sudo mkdir /mnt/mydiskを使用してから、mount /dev/sda1 /mnt/mydiskを使用してデバイスをマウントし、ls /mnt/mydiskを使用してその内容を確認してください。

正しいディスクを取得したら、Sudo chmod 0755 /mnt/mydisk/usrのように、usrディレクトリのパーミッションを変更します。

-Rパラメーターを使用して、最初にchmodコマンドを再帰的に実行した場合、依然として問題が発生する可能性があります。その場合は、各エントリを手動で修正しようとするか、直接インストールしてください...

4
Izzy

私はあまり知識がありません。しかし、これらの手順は、マシンを再起動しなくても問題を解決しました。次の手順を実行します:

su root
<enter root password>
cd /usr
chmod -R 755 *
1
Manu Mohan T

ローカルスクリプトのアクセス許可を設定しようとして、誤ってSudoアクセス許可を破棄し、所有権を変更しました。次の操作を行うことで、Sudoの所有権をルートに戻すことができました。

ステップ1:ubuntuリカバリモードに切り替えます。プロセスに気付いていない場合は、こちらで回答を参照できます。 https://askubuntu.com/a/172346/223901

ステップ2:リカバリモードになったら、root-ドロップしてルートシェルプロンプトにドロップします

ステップ3:次のコマンドを実行します

mount -o remount,rw /
chown root:root /usr/bin/Sudo
chmod 4755 /usr/bin/Sudo
reboot

システムがブートするのを待って正常にすると、Sudoの所有権がルートに戻ります。

1
ramsudharsan

Matは正しいと思います。/usr/binにビットを追加するにはrootでなければなりませんが、もちろんSudoは壊れています。ルートパスワードを持っている場合は、それを使用してルートとしてログオンし、上記のコマンドで権限を修正できます。ただし、そうしない場合(そして私もしません)、おそらく次のことが最善です。

  • linuxライブCDから起動する
  • そこでルートになる
  • 上記のシステムでパーティションをマウントします
  • 次に、ターミナルを使用して、そのファイルシステムのアクセス許可をまっすぐにします。

ルートは常にユーザー番号0であるため、どのシステムのルートでも、他のファイルシステムのルートに許可された変更を加えることができます。

1
John S Gruber