私が見ると
usr/bin/
ディレクトリで、passwdのコマンドラインを見ました
-rwsr-xr-x. 1 root root 30768 2012-02-22 20:48 /usr/bin/passwd
そして、ルート権限を取得するために変更を許可します。 s 付き。
私は、rootだけが他のユーザーのパスワードを変更できるのではないかと疑問に思いました。
passwd user
このコマンドの場所を見つけて調べたいと思います。
このコマンドもusr/bin/ディレクトリの一部ですか?それとも別のものですか?
私がやりたいことは。
ログインする
user1
と入力
[user1] passwd user2
もちろん、何らかの形でブロックされています。しかし、私はそれについてもっと知りたいのです。
答え1
Unix(およびLinux)には、本物ユーザーと効果的ユーザー。 などの setuid プログラムは、/usr/bin/passwd
実効ユーザーをファイルの所有者に設定します。この場合、実効ユーザーは に設定されますroot
。
プログラムがこれらの昇格された権限を使用して何を実行するかは、プログラム自体に依存します。
プログラムの場合passwd
、ユーザー名を渡すと、本物ユーザーが root の場合、成功し、そうでない場合はエラーを返します。
したがって、root
ユーザーが/usr/bin/password user2
これを実行すると動作しますが、user
同じコマンドを実行すると失敗します。プログラムは 1 つだけですが、実行するユーザーに応じて動作が変わります。
答え2
バイナリpasswd
が suid されているのは、ファイルを変更するにはルート権限が必要であるためです/etc/shadow
。権限のないユーザーが別のユーザーのパスワードを変更することはできません。任意のユーザーのパスワードを変更することはできますroot
が、それが suid されている理由ではありません。