Linuxとコマンドラインの基礎
多くのLinuxで「ls -l /usr/bin/passwd」を実行すると「-rwsr-xr-x 1 root root ...」と表示される。所有者の実行の位置にある「s」の意味として、正しいものはどれか。
- Asetuid が設定されていて、誰が実行しても、そのプログラムはファイルの所有者(ここでは root)の権限で動く
- Bスティッキービットが設定されていて、所有者と root 以外の利用者は、このファイルを削除したり名前を変えたりできない
- Cこのファイルが共有ライブラリであることを表し、ほかのプログラムから呼び出されるだけで、コマンドとして直接は実行できない
答えと解説を見る
正解:A. setuid が設定されていて、誰が実行しても、そのプログラムはファイルの所有者(ここでは root)の権限で動く
s は setuid(set user ID)のビットと実行の権限が両方立っていることを表し、そのプログラムは実行した利用者ではなく、ファイルの所有者の権限で動きます。passwd は、一般の利用者が自分のパスワードを変えるときに、root しか書き込めない /etc/shadow を更新する必要があるので、setuid の root のプログラムになっています。setuid のプログラムに欠陥があると、一般の利用者が root の権限を得る足がかりになるので、むやみに付けてはいけません。8進数では 4000 の位で表し、chmod 4755 とすると -rwsr-xr-x になります。
- A. 正しい。実行した利用者ではなく、所有者の root の権限で動きます。
- B. スティッキービットは、その他の実行の位置に「t」と表示されます(/tmp の drwxrwxrwt など)。ディレクトリに付けると、中のファイルを所有者などしか削除できなくなります。
- C. 共有ライブラリかどうかは、権限の表記には表れません。s は、実行したときの権限についての印です。