私はRed Hat Enterprise Linuxを使用しています。詳細は次のとおりです。
uname -a
3.10.0-327.22.2.e17.x86_64
シャドウファイルの権限を確認すると、次のようになります。
ls -l /etc/shadow
----------. 1 root root 1467 /etc/shadow
これらの権限を見て驚きました。私の考えでは、 "passwd"はこのファイルを更新するために所有者から少なくとも読み取り/書き込み権限が必要だと思います。何が起こっているのか知っていますか?
答え1
これは正常です。
passwd
suidビットは設定されたルートとして実行されるため、読み取り/書き込み権限は必要ありません。
# ls -l /etc/shadow /usr/bin/passwd
---------- 1 root root 798 Jul 21 21:15 /etc/shadow
-rwsr-xr-x 1 root root 26688 Sep 10 2015 /usr/bin/passwd
#
より多くの情報が必要な場合は訪問してくださいStackexchange "'passwd'コマンドはどのようにrootユーザー権限を取得しますか?"欲しいなら
答え2
権限ビットは通常、適切な機能で実行されるプロセス(たとえば、root権限で実行されている場合)には適用されません。もっと正確な要約ありがとうHauke Larkinによる投稿:
(およびおよび
root
他のユーザー/プロセス)は常に実行できると仮定します。CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
すべてLSM(SELinux、AppArmorなど)がそうするのを妨げない限り。
〜のようにスティーブすでに指摘passwd
同様のプログラムにはsuidビットが設定されているか(誰でもroot権限で実行できます)、rootでのみ使用されるため、権限/etc/shadow
は重要ではありません。