프로그래밍 기술/리눅스(Unix) 시스템 프로그래밍

chmod 명령의 또 다른 기능 스티키 비트와 set user id bit

언제나휴일 2016. 11. 1. 09:15
반응형

4.4 chmod 명령의 또 다른 기능 스티키 비트와 set user id bit

 chmod 명령은 파일의 접근 허가 모드를 설정할 때 사용합니다. 그리고 이 외에도 chmod 명령은 스티키 비트와 set user id bit를 설정할 수 있습니다.

 

 스티키 비트를 설정한 프로그램 파일을 한 번 실행하면 사용한 프로그램의 Text 세그먼트(코드를 기계어로 번역한 영역)를 스왑 파티션에 배치하여 빠르게 실행할 수 있게 하였습니다. 하지만 가상 메모리 처리로 지금은 스왑 파티션에 배치하지 않아도 속도 차이가 나지 않습니다. 지금은 스티키 비트를 설정하면 사용 권한은 부여하지만 파일의 삭제를 하지 못하게 할 때 스티키 비트를 설정합니다. 그리고 스티키 비트를 설정할 때는 t 옵션을 추가합니다. 예를 들어 chmod o+t temp 처럼 설정합니다.

 

 그리고 chmod 명령을 통해 프로그램 파일에 set user id bit를 지정하면 실행할 때 프로세스는 로긴한 실제 사용자 ID(real user id) 권한이 아닌 소유자 ID 권한으로 동작합니다. 참고로 프로세스가 동작할 때 유효 사용자 ID 권한(effective user id) 권한으로 동작한다고 말합니다.

 

 다음은 실제 사용자 ID와 유효 사용자 ID를 확인하는 예제 코드입니다.

 

/***********************************************************************

* ex_suid.c                                                                        *

* example source - set user id bit                                          *

***********************************************************************/

#include <stdio.h>

#include <unistd.h>

 

int main(int argc,char **argv)

{       

    printf("real user id:%u\n",getuid());

    printf("effective user id:%d\n",geteuid());

    return 0;   

}

 

 

 위의 소스 코드를 root 계정에서 작성한 후에 ex_suib로 컴파일한 후에 chmod u+s ex_suib 를 명령하면 해당 파일은 set user id bit를 설정할 수 있습니다. 그리고 다른 계정으로 로긴한 후에 실행하면 실제 사용자 ID와 유효 사용자 ID가 서로 다른 것을 확인할 수 있습니다.



[그림 4.5] set user id bit을 설정

반응형