root以外のユーザーはrootとしてpasswdコマンドを実行できますが、rootパスワードを変更できないのはなぜですか? [コピー]

root以外のユーザーはrootとしてpasswdコマンドを実行できますが、rootパスワードを変更できないのはなぜですか? [コピー]

私は(root以外のユーザー)がユーザーとしてコマンドを実行できるようにするビットがファイルにあることをsetuid知っています。コマンドを実行するには、ファイルの権限を変更する必要があります。/bin/passwdrootpasswdroot/etc/shadow

私の質問は、コマンドを実行している場合、passwdコマンドの実行中にパスワードを変更できないのはなぜですかrootrootroot

edward@ArchLinux:~$ passwd root
passwd: You may not view or modify password information for root.

passwdroot以外のユーザーがパスワードを変更できないコマンドはありますか?passwdユーザーのパスワードを変更するためにsetuidビットを使用して悪意のあるコマンドを書くことはできますか?

論理的に私はこれが災いになることを知っていますが、内部的にどのように機能するのか知りたいです。)

ベストアンサー1

passwd(1)呼び出したユーザーの資格情報を確認し、そうでない場合は、root他のユーザーが関連項目を変更できないようにします。

あなたが説明するシナリオは、SUID / SGIDプログラムが予期しないことをしたり、何らかの方法で破損するのを避けるために非常に注意を払って書かなければならない理由です。

おすすめ記事