プロセス権限の削除

プロセス権限の削除

damonがrootとして実行するプロセスを始めましたが、そのプロセスの権限を一般ユーザーの権限として「ダウングレード」したいと思います。可能ですか?それではどうでしょうか?

PS:MacでUnixを実行する

ベストアンサー1

sudo tcpdump -Z独自のプロセスから root 権限を削除するには、initgroups(3)、setgid(2)、および setuid(2) を使用します。

# code taken from: 
# http://www.opensource.apple.com/source/tcpdump/tcpdump-32/tcpdump/tcpdump.c

/* Drop root privileges and chroot if necessary */
static void
droproot(const char *username, const char *chroot_dir)
{
...
            if (initgroups(pw->pw_name, pw->pw_gid) != 0 ||
               setgid(pw->pw_gid) != 0 || setuid(pw->pw_uid) != 0) {
                    fprintf(stderr, "tcpdump: Couldn't change to '%.32s' uid=%lu gid=%lu: %s\n",
                        username, 
                        (unsigned long)pw->pw_uid,
                        (unsigned long)pw->pw_gid,
                        pcap_strerror(errno));
                    exit(1);
            }
...
}

おすすめ記事