web-dev-qa-db-ja.com

突然sudoを実行できません

私は数日間インターネットを除いてコンピューターで何もしませんでしたが、突然やろうとしました:

$ Sudo apt-get update 

私が得た:

Sudo: effective uid is not 0, is /usr/bin/Sudo on a file system with the 'nosuid' option set
      or an NFS file system without root privileges?

最後にSudoを実行したことを覚えているのは、更新したときです。

4

Sudoは、setuidSet User ID)と呼ばれるメカニズムで動作します。 suid)とも呼ばれます。そのビットが実行可能ファイル(Sudoなど)に設定されている場合、アプリケーションはそのファイルの所有者であるユーザーの許可の下で実行されます(Sudoの場合、所有者はrootユーザー)。

つまり、Sudoはrootとして実行されます。ここまでは順調ですね。しかし、現在、setuidビットが設定されたシェルを搭載したUSBドライブを挿入することを妨げるものはありません。完全なルートアクセス権があります!そのため、通常、USBドライブはマウントオプションnoexecでマウントされ、そのようなデバイスでのバイナリ/スクリプトの実行を防ぎます。まだファイルを実行したい場合の別のマウントオプションは、質問のエラーメッセージに記載されているものです:nosuid

マウントマニュアルページ の抜粋をご覧ください。

[...]
nosuid     Do not allow set-user-identifier or set-group-identifier bits to take effect.
[...]

mountコマンドを使用すると、ルートファイルシステムがそのオプションでマウントされているかどうかを確認できます。入力するだけです:

$ mount

すぐにファイルシステムを再マウントし、マウントオプションを変更できます。

$ mount -n -o remount,suid /

これはsuidオプションを設定します。これはnosuidの正反対です。

3
chaos