setuidを使用してルートのパスワードを変更する

setuidを使用してルートのパスワードを変更する

setuidを使ってrootのパスワードを変更できますか?

ルート所有プログラムを呼び出してsetuidビットを設定する簡単なプログラムを書いてみましたが、うまくいきsystem("passwd root")ません。出力は次のとおりですYou may not view or modify password information for root.

答え1

プログラムで実際のuidと有効なuidを同じ値に設定することを無視した可能性があります。 Gid はルートの gid とも一致する必要があります。このような:

setuid(geteuid());
setgid(getegid());

例を見るsue(簡単な setuid/setgid ラッパー)。

答え2

Thomas Dickeyは絶対に正しかった。しかし、これをしないでください。代わりに使用してくださいsudo

作る/etc/sudoers.d/change_root_pass

YOURUSERNAME ALL = (ALL) passwd root

(ユーザー名を変更してください)。

関連情報