/ etc/shadowファイルの内容を変更しようとしていますが、読み取り専用であることに気付きました
sghk1> ls -l /etc/shadow
-r-------- 1 root sys 4045 Aug 19 16:13 /etc/shadow
/ etc/shadowファイルのパーミッションは読み取り専用です。その場合、/ usr/bin/passwdはその内容をどのように変更しますか?
e.g. passwd -x 30 username
Linux/unixシステムのrootユーザーは、書き込みフラグが設定されていなくてもファイルに書き込むことができます。したがって、彼は/etc/shadow
またはその他のファイルの内容をその権限とは無関係に変更できます。
passwd
ユーティリティにはsetuidビットが設定されています。で参照してください:
ls -la /usr/bin/passwd
次のようになります。
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
ファイル所有者権限のs
に注意してください。これは setuidビット を示します。通常のユーザーがpasswd
ユーティリティを実行する場合、ファイル所有者の許可を得て実行されます。この場合はルートです。
Setuidビットは、/etc/shadow
や/etc/passwd
などのシステムファイルの変更など、特定のタスクを実行するための一時的に昇格された特権を取得します。
Setuidビットは注意して扱う必要があります。このメカニズムは、間違ったバイナリに設定されている場合、いくつかの脆弱性に使用される可能性があります。想像してみてください。/bin/bash
ユーティリティはsetuidビットを設定します。したがって、システム内のすべてのユーザーがルートシェルを開始できます。