0

私は次のコードを持っています:

std::string cmd = "sudo chmod a+x file";
int r = system(cmd.c_str());

これは正しく機能します。

system()関数を呼び出さずに同じことを行うにはどうすればよいですか?

私が得ることができるのは:

#include <sys/stat.h>
int r = chmod("file", S_IXUSR | S_IXGRP | S_IXOTH);

この場合、どうすれば「sudo」を使用できますか?

ありがとうございました。

4

2 に答える 2

3

できません。あなたのプログラムが suid root でない限り、そうではない可能性が高いです - そうでない場合は、sudo を使用しません。

ただし、プログラムの内容によっては、setuid-root を指定するのが実際の方法である場合があります。root 権限と への sudo アクセスを必要とする操作を実行する必要がありchmod、特に任意のモード/パスでは、通常、root 以外のユーザーには付与されません。

于 2012-05-14T09:39:51.953 に答える
1

特権はプロセスに基づいています。これを処理する1つの方法は、プログラムにsetuidビットを設定し、rootが所有するようにすることです。起動後、特権が必要なことを実行し、setuidシステムコールを使用して特権ステータスを削除します。

于 2012-05-14T09:47:44.460 に答える