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


15

私は入ったが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エラーが表示されます。


1
これらのコマンドを実行するには、rootである必要があります

マノジ・クマール:私の答え(あなたが受け入れたとマークした)pkexec方法は、この問題を解決しましたか?Damien RocheとOliがコメントしたように、sudo chmod -R 777 /usr/binコマンドが正常に完了した後、この方法は実際には機能しないと確信しました。のようにsudo、動作するにpkexecはsetuid rootである必要があります。(なぜpolkit サービスを使用するのかはわかりませんが)。しかし、他の人がこれが彼らのために働いたと言うのを聞いたことがあると思います。777chmodコマンドが終了する前にCtrl + Cを押しましたか?
エリアカガン14

こんにちは。この方法は、私が誤って正常に実行した後、実際に機能しましたがsudo chmod -R 777 /usr/bin、それはrootアカウントにログインした後のみです。
iHowell

回答:


10

受け入れられたステータスにもかかわらず、私は今この答えが間違っていると確信しています。(受け入れについてOPに相談した後、すぐに改善したいと思っています。)他の人はこれがうまくいったと言ったことを思い出すと思いますが、彼らの問題は少なくともわずかに異なっていたと思います。ここで説明する方法chmod -R 777 /usr/binは、Ctrl+ で中断されるCか、完了しない場合に価値があります。しかし、いったんそれが設定されると、pkexecsetuidが解除さsudoれ、Damien RocheとOliが正しくコメントしているように、それ以上機能しなくなります。

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

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

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

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


9
pkexec must be setuid root!なんて悪夢だ!
ダミアンロシュ

1
Damienが指摘しているように、このアプローチの問題pkexecはとまったく同じ苦境にありsudoます。通常はsetuidで、にあります/usr/bin。私はそれをテストしましたが、これは後に機能しませんchmod -R 777 /usr/bin
オリ

@ DamienRoche、Oli:早くこの方法で修正しないでごめんなさい!あなたは両方とも正しい。なぜpkexecsetuid root で動作する必要があるのか​​わかりません(他の非setuidプロセスのようにpolkitデーモンを介して動作しないのですか?)が、それは必要です。OP(これを受け入れた人)が、この答えについて何か正しいと思われるものがある場合、それを明らかにすることができるかどうかを確認するために質問にコメントしました。そして、この記事の上部に一時的なバナーを追加したので、誤解を招くことはありません。場合は、この答えは存在し続け、その改善の形は、おそらくそのバナーに、現在いくつかの情報を組み込みます。
エリアケイガン14

su/ binの下にあるを使用できます
-FliiFe

@FliiFeのファイルのアクセス許可(または所有権)を修正するに/usr/binはルート権限が必要ですがsu、ほとんどのUbuntuシステムではルートログインがデフォルトで無効になっているため、ルートにすることはできません。異なり、sudoそしてpkexecあなたが使用している場合、surootシェルを取得するか、rootとしてコマンドを実行するために、あなた自身ではない、rootのパスワードを提供する必要があります。しかし、Ubuntuではデフォルトでrootにパスワードがありません(つまり、rootのパスワードベースの認証は常に失敗し、空のパスワードを入力しても機能しません)。詳細については、RootSudoを参照してください。
エリアケイガン

4

ライブ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ます。

そこで適切なディスクを取得したら、usr dir:のパーミッションを変更しますsudo chmod 0755 /mnt/mydisk/usr

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


私はマウントポイントを作成しようとしましたが、私は読んで誤りだポイントMNT / MYDISKが存在しないマウントは、いくつかのことで、ちょうど私が書いた記録のために交換するMYDISKですmount /dev/sda /mnt/mydiskからroot@Ubuntu:/dev#
VIN

a)mountコマンドを発行する前にマウントポイント(ディレクトリ)を作成し(説明どおり)、b)先行スラッシュも処理しましたか?試してみてくださいmkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(私はあなたが上で何のパーティションを持っていないとは思わない/dev/sda。あなたにもパーティション番号を見逃している必要がありますので、必ず正しいデバイスを指定(またはマウントしてくださいに失敗します)。
イジー

1

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

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

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


1

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

su root
<enter root password>
cd /usr
chmod -R 755 *

1
少なくとも「cd」コマンドがありません。このようにすると、rootのホームディレクトリで「chmod」を実行します。それは事態を悪化させます。
リンツウィンド

thaks ...私の答えを編集しました...私は/ usrフォルダーにいました
マヌモハンThekkedath

2
これは、パスワードがrootUbuntuのデフォルト設定ではないに設定されている場合にのみ機能します。
デビッドフォースター

1

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

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

ステップ2:リカバリモードになったら、ルートを選択-ルートシェルプロンプトにドロップ

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

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

システムが正常に起動するまで待ちます。sudoの所有権がルートに戻ることがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.