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
(ユーザー名を変更してください)。