私は数日間インターネットを除いてコンピューターで何もしませんでしたが、突然やろうとしました:
$ 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
を実行したことを覚えているのは、更新したときです。
Sudo
は、setuid(Set 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
の正反対です。