2012-02-19 10 views
1

apache2とmysqlのようなプログラムは、世界中のさまざまなマシンにインストールされます。彼らは彼らが実行したいと思っている制限された権利のユーザのuidまたはgidを確実にどのように知っていますか?私は自分のプログラムをinit.dを通して最小の特権を持つユーザとのサービスとして実行したい。私はinit.dで開始されたサービスが最初はrootとして実行されていると仮定していますか?CプログラムでsetuidのユーザーのUIDを見つける方法は?

答えて

2

通常、サービスが使用するユーザーを指定する構成ファイルがあります。その後、サービスはgetpwnam(3)を使用してUIDを取得できます。

struct passwd *getpwnam(const char *name); 

struct passwd { 
    char *pw_name;  /* Login name (username) */ 
    char *pw_passwd; /* Encrypted password */ 
    uid_t pw_uid;  /* User ID */  <----- 
関連する問題