본문 바로가기
리눅스

[리눅스 API] 프로세스 자격증명

by 목가 2015. 8. 6.
반응형

리눅스에서 사용자/그룹 ID는 다음과 같이 구성된다.

 - 실제 사용자 ID(real), 유효 사용자 ID(effective), 저장된 사용자 ID(saved)


아래와 같이 프로그램에 set-user/group-ID 권한 비트를 켜면 실행시 슈퍼유저 특권을 갖게 된다.

chmod u+s prog : set-user-ID 권한 비트를 켠다

chmod g+s prog : set-group-ID 권한 비트를 켠다


#include <unistd.h>

uid_t getuid(void) : 호출 프로세스의 실제 사용자 ID를 리턴

uid_t geteuid(void) : 호출 프로세스의 유효 사용자 ID를 리턴


int setuid(uid_t uid) : 성공하면 0을 리턴하고, 에러가 발생하면 -1을 리턴

 - 호출 프로세스의 유효 사용자 ID를 uid 인자로 주어진 값으로 바꾼다. (특권 프로세스인 경우 real, saved ID 도 변경될 수 있음)

int seteuid(uid_t uid)

 - 유효 사용자 ID를 바꾼다. 특권 프로세스는 유효 ID를 어떤 값으로든 바꿀 수 잇고, 0이 아닌 값으로 바꾸면, 특권을 잃게 된다.

int setreuid(uid_t ruid, uid_t euid)

 - 실제, 유효 ID를 바꾼다. 둘 중 하나만 바꾸고 싶은 경우 나머지 인자에 -1을 넣어주면 된다.

int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid)

 - 호출 프로세스의 실제 사용자 ID, 유효 사용자 ID, 저장된 사용자 ID 값을 세인자에 넣어준다.

int setresuid(uid_t *ruid, uid_t *euid, uid_t *suid)

 - 호출 프로세스는 세 가지 사용자 ID의 값을 독립적으로 바꾼다. 바꾸고 싶지 않은 ID에 해당하는 인자는 -1로 지정하면된다.


#include <sys/fsuid.h>

int setfsuid(uid_t fsuid) : 언제나 이전의 파일 시스템 사용자 ID를 리턴한다.

 - 프로세스의 파일 시스템 사용자 ID를 fsuid로 지정한 값으로 바꾼다. 위에 함수들은 언제나 파일 시스템 ID도 함께 바꾸므로 파일 시스템 ID만 독립적으로 바꾸려면 이 함수를 사용한다.



반응형

'리눅스' 카테고리의 다른 글

[리눅스] vim 설정 (vimrc)  (0) 2015.08.09
[리눅스] udev, rules.d 사용  (0) 2015.08.09
[리눅스 API] 사용자와 그룹  (0) 2015.08.05
[리눅스 API] 메모리 할당  (0) 2015.08.03
[리눅스] 파일시스템  (0) 2015.07.31

댓글