Linux passwd ユーザー権限の変更

Linux passwd ユーザー権限の変更

私が見ると

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 されている理由ではありません。

関連情報