2012-02-19 2 views
1

apache2 및 mysql과 같은 프로그램이 전 세계의 다양한 컴퓨터에 설치됩니다. 그들은 어떻게 그들이 실행하고자하는 제한된 권리 사용자의 uid 또는 gid를 알도록 보장합니까? 내 프로그램이 init.d를 통해 최소한의 권한을 가진 사용자와 서비스로 실행되기를 바란다. init.d에서 시작된 서비스가 처음에 루트로 실행된다고 가정합니까?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 */  <----- 
관련 문제