パーミッション 4750 のプロセスがあります。私の Linux システムには 2 人のユーザーがいます。root ユーザーと appz ユーザー。このプロセスは、「appz」ユーザーとして実行されるプロセス マネージャーのアクセス許可を継承します。
2 つの基本的なルーチンがあります。
void do_root (void)
{
int status;
status = seteuid (euid);
if (status < 0) {
exit (status);
}
}
/* undo root permissions */
void undo_root (void)
{
int status;
status = seteuid (ruid);
if (status < 0) {
exit (status);
}
status = setuid(ruid);
if (status < 0) {
exit (status);
}
}
私のフローは次のとおりです。
int main() {
undo_root();
do some stuff;
do_root();
bind( port 80); //needs root perm
undo_root();
while(1) {
accept commads()
if ( commands needs root user access)
{
do_root();
execute();
undo_root();
}
}
ご覧のとおり、いくつかのコマンドを root として実行したいと考えています。アクセス許可を一時的に削除しようとしていますが、タスクにルート アクセスが必要な場合は、コマンドを do_root 呼び出しと undo_root 呼び出しの間にラップします。
しかし、私のプログラムは動作していないようです。
それを行う標準的な方法は何ですか?