Ubuntuでsudoを取得する方法は?


12

私はこれをやった:

sudo chown -R myname /usr/

そして今、私sudoはこのエラーのためにコマンドを使用できません:

sudo:setuidルートである必要があります

そして私が読んだように、これはこのファイルの所有者が/usr/bin/sudoルートではないことを意味します。/usrフォルダーのチャウンのため、今では私のユーザーです。

多くのフォーラムやブログでは、これをrootで行うことを提案しています:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

...しかし、これに関する問題は、ルートとしてログインする必要があることですsuが、端末に書き込むとパスワードが間違っているため、実際にはできません(実際にユーザーに追加したパスワードを使用します):

$ su
Password:
su: Authentication failure

sudoコマンドを取り戻すことはできますか?

編集:私のUbuntuはMac OS XのParalellsの下にあります。


「ユーザーに追加したパスワードを使用する」とはどういう意味ですか?を使用するとsu、のようにユーザーのパスワードではなく、ルートのパスワードの入力を求められますsudo。このマシンのrootパスワードを知っていますか?
カレブ

いいえ、追加または変更する必要はありません。デフォルトはありますか?
アダム

シングルユーザーモードで再起動する必要があります。どのディストリビューションを実行していますか?
ジル 'SO-悪であるのをやめる'

1
好奇心が強いのですが、sudo chmod -R cirk:cirk /usr何を実行しようと思ったのですか?
loosecannon

1
P:私は全体USRフォルダにchownコマンドを使用することにしたプログラムの正確な位置を知らなかったので、私は、私は再びすべてを台無しにnoobのだからでは/ usr /どこかにインストールされていたものをAプログラム
アダム・

回答:


5

すべてのファイルの正しい所有権を確認するためのガイドとして使用できる類似のシステムがある場合、レスキューモードで起動し、ルートシェルにドロップして、すべてのファイルの正しい所有権を手動で復元できますのファイル/usr

最も簡単な方法は、OSを再インストールするか、バックアップから復元することです。

Ubuntuなどでは、デフォルトではrootパスワードはありません(アカウントは無効になっています)。それができない理由ですsu


8
すごい簡単です、これはウィンドウズの再インストールではなく、常に最も簡単または最速の方法であるとは限らず、確かに人々に問題を修正する方法を教えません。この場合、彼がする必要があるのは、LiveCDなどの別の環境にファイルシステムをマウントすることで簡単に実行できるアクションを逆にすることです。
カレブ

@Calebは、ファイルシステムの主要なチャンクのパーミッションを完全に破棄するとき。彼は単にsudoを台無しにしたのではなく、おそらく-Rを使用したことを投稿で言及するのを忘れていました(そうでなければ、/ usrディレクトリの所有者のみを変更し、sudoは変更しなかったでしょう)。プロセスを逆にする方法も説明しましたが、非常に時間がかかり骨の折れる作業です。
-psusi

1
これはchownnotの場合ですchmod/usrフォルダ内のすべてがである必要があるためroot:root、これは簡単な修正であり、chmodクロバーが意味するような骨の折れる修正ではありません。
カレブ

2
@Calebは、/ usrのすべてがroot:rootである必要はありません。
-psusi

6
@Caleb chownはsetxidビットをリセットします。/usrルートが所有していないファイルがいくつかあります。異なるグループに属するもの(特にのsetgidプログラム/usr/bin)。
ジル「SO-悪であるのをやめる」

11

ルートレベルのアクセスを許可する唯一のものに対する許可をホースでつないだので、これを修正するには現在のソフトウェア環境の外部からの助けが必要です。

最も簡単な方法は、ディストリビューション用のLiveCDを起動し、ドライブをマウントし、chmodそこからリストされているものを使用してファイルのアクセス許可を変更することです。

ルートシェルを取得するために、シングルユーザーモードで起動することもできます。

通常、/usr/ディレクトリ内のすべてのものを所有rootする必要があるため、chown壊れたものを修正するために再帰を実行できるようにする必要があります。(編集:実行中の@Gillesのコメントごとにchownsetuidとsetgidのビットが破損しているため、所有権を再度修正したら、既存のシステムと手動で比較してそれらをすべて復元する必要あります。)

ただし、非常に少ないはずです4111。余分なアクセス許可は特別なアクセス許可ですが、ユーザーとして実行する場合でもrootとして実行されます!sudoいくつかのコマンドのみに、この許可ビットを設定する必要があります。最初にa chmodを実行しなかった場合、おそらくこれをまったく修正する必要はないでしょうが、すべての許可はすでに正しいはずです。chmodすべてのアクセス許可が何であるかを知らずに大きな操作を実行しないでください。


OSが仮想マシンにある場合は可能ですか?
アダム

はい、違いはありません。ランレベル1(ブートプロセスの最初にgrub / liloから、またはブートローダーが何であれ)を使用するか、LiveCDのISOイメージをブートデバイスとして使用するようにVMをセットアップできます。
カレブ

ああ、私はそれを再インストールする前に、あなたのアドバイスを試してみます:)
アダム

OK私はLiveCDにいると思うのですが、これをターミナルに書き込む必要がありますか?sudo chown -R root /usr/
アダム

Yaでそれを開始し/usrますが、LivdCD 上ではなく、どこかにマウントして、そのパスに対して実行する必要があります/mnt/mydrive/usr。次に、setuidビットをonに修正する必要があります/mnt/mydrive/usr/bin/sudo。次に、livecdの/ usrを調べて、root以外の所有権があるかどうかを確認します。find /usr -not -uid 0一致するように変更します。次に、異なるsetuidビットまたはsetgidビットが設定されているものを探し、それらも一致することを確認します。実際のUbunutuシステムがある場合は、それと比較するのが最善でしょう。
カレブ

4

Ubuntuのリカバリモードで、次のコマンドを入力します。これにより、問題が修正されました。

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

これがあなたの問題を解決することを願っています。(または他の誰かの)

このブログ投稿でこれを見つけました。


2

これは、他の回答で提案されているよりもはるかに簡単です。ライブCDをフォーマット、再起動、または使用する必要はありません。

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

これは、この問題を修正する最も簡単な方法です。説明、sudoが破損しています(破損という用語は間違っていることはわかっていますが、機能していないため、sudoの使用を避ける必要があります)

  • コマンド1 (su root)を使用して、sudoを使用せずにユーザーをrootに変更します。
  • コマンド2 (chown root:root / usr / bin / sudo && chmod 4755 / usr / bin / sudo)を使用してsudoの許可/所有権を修正します。
  • コマンド3 (終了)を使用して、元のユーザーに戻ります。

Linux mintでこのメソッドをテストしました。これはUbuntuのようなシステムです。この方法は他のOSでは動作しないことを教えてください。それに応じて答えを更新します。

ありがとう


私は理解して、最初のステップでパスワードを入力することは不可能であるので、デフォルトではrootアカウントは、パスワードを持っていないsu root、とためsudoていない作業を行い、それが設定されたルートパスワードには不可能である
TitanFighter

1
おかげで助かりました。
アルン

1

これは、人々が作っているよりも簡単です。以下を試してください:

  1. 壊れたsuコマンドを使用してrootとしてログインする代わりに、現在のユーザーとしてログアウトし、通常のディスプレイマネージャー(つまり、ログイン画面)を介してrootとして再度ログインします。
  2. ターミナルで次を実行します。 chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

これにより、sudoコマンドが修正され、すぐに実行できるようになります。


0

suまたはsudoなしでrootとしてログインするには、pkexecを使用できます。

pkexec su

次に、ファイルの権限を変更します。

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