2

Solaris 環境でユーザーを無効または有効にする C++ スクリプトを作成しました。これは passwd を呼び出すことによって行われます

sprintf(cmd, "/usr/bin/passwd -l %s", argv[1]);

ただし、スクリプトはルートではなく、別のユーザーによって実行されます。スクリプトの実行中、passwd の変更は行われません。これは、passwd のユーザー権限に問題があるようです。

ただし、passwd を変更できるのは root だけのようです。これは本当ですか?他にできることはありますか?他のユーザーが passwd を変更できるという意味で?

4

2 に答える 2

1

そのためには root 権限が必要です。ただし、sudo指定したユーザーのルートとしてバイナリの実行を許可するように構成できます。

別の解決策は、バイナリを setuid することです。ただし、その際には注意が必要です。

于 2013-06-05T09:59:54.030 に答える
0

プロセスにはCAP_SETUID機能が必要であり、ユーザー ID は に設定され0ます。

于 2013-06-05T09:58:17.377 に答える