사용자 추가는 admin만 할 수 있다.
$ sudo adduser {username}
Linux에서는 동시에 여러 사용자로 접속 가능
UID : 사용자에게 부여된 ID 번호
Real User ID : 최초에 process를 실행한 user의 UID, 일반적으로 로그인 되어 있는 사용자
Effective User ID(EUID) : 현재 process가 행사(wield)하는 UID, process가 가진 권한 판단에 사용.
Safed user ID(SUID) : process의 최초의 effective user id. process 실행 후 EUID를 변경할 수 있음. 원래 EUID로 돌아가기 위해 사용.
현재 process가 행사하는 UID 권한.
기본적으로는 Real UID와 같음.
실행 파일의 setuid bit = 1인 경우 해당 파일 소유자(owner)의 UID가 effective UID가 됨
Effective UID는 process 실행중 파일 권한 관련 처리가 필요할 때 사용한다.
SUID는 윈도우의 권한 상승과 비슷한데 다만 관리자로 권한을 상승 하는게 아니라 해당 파일 소유자(owner)의 UID로 변경 되는 것이다.
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(void) {
// 처음 uid, euid 출력
uid_t uid = getuid();
uid_t euid = geteuid();
printf("[Init] UID=%d, EUID=%d\n", (int)uid, (int)euid);
// euid를 uid로 설정 후 출력
seteuid(getuid());
int cur_euid = (int)geteuid();
printf("[seteuid(uid)] UID = %d, EUID=%d\n", (int)uid, (int)cur_euid);
// 처음 euid로 복구 후 출력
seteuid(euid);
cur_euid = (int)geteuid();
printf("[seteuid(euid)] UID = %d, EUID=%d\n", (int)uid, (int)cur_euid);
return 0;
}
struct passwd
{
char* pw_name;
...
};
암호화 된 사용자 정보. 사용자 password를 암호화 해서 저장하고 있음.
계정은 그룹에 포함될 수 있다. 그룹에 대한 ID를 Group ID(GUID)라고 한다.
그 이외에 UID와 같은 메커니즘으로 동작 한다.
그룹 정보를 답고 있는 파일. 역시 group에 대한 구조체도 제공