![root以外のユーザーはrootとしてpasswdコマンドを実行できますが、rootパスワードを変更できないのはなぜですか? [コピー]](https://linux33.com/image/82769/root%E4%BB%A5%E5%A4%96%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AFroot%E3%81%A8%E3%81%97%E3%81%A6passwd%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81root%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私は(root以外のユーザー)がユーザーとしてコマンドを実行できるようにするビットがファイルにあることをsetuid
知っています。コマンドを実行するには、ファイルの権限を変更する必要があります。/bin/passwd
root
passwd
root
/etc/shadow
私の質問は、コマンドを実行している場合、passwd
コマンドの実行中にパスワードを変更できないのはなぜですかroot
?root
root
edward@ArchLinux:~$ passwd root
passwd: You may not view or modify password information for root.
passwd
root以外のユーザーがパスワードを変更できないコマンドはありますか?passwd
ユーザーのパスワードを変更するためにsetuidビットを使用して悪意のあるコマンドを書くことはできますか?
(論理的に私はこれが災いになることを知っていますが、内部的にどのように機能するのか知りたいです。)
答え1
passwd(1)
呼び出したユーザーの資格情報を確認し、そうでない場合は、root
他のユーザーが関連項目を変更できないようにします。
あなたが説明するシナリオは、SUID / SGIDプログラムが予期しないことをしたり、何らかの方法で破損するのを避けるために非常に注意を払って書かなければならない理由です。