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을 설정
'프로그래밍 기술 > 리눅스(Unix) 시스템 프로그래밍' 카테고리의 다른 글
표준 입출력 라이브러리 (0) | 2017.07.25 |
---|---|
파일 삭제, unlink, remove, rmdir 함수 (0) | 2017.07.25 |
물리적 파일에 접근하기 위한 경로, 하드 링크(link)와 심볼릭 링크(symlink) (2) | 2016.11.03 |
소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown (2) | 2016.11.03 |
umask 값을 설정하여 파일 접근 권한 모드를 안전하게 (1) | 2016.11.02 |
chmod, fchmod 시스템 호출로 파일의 접근 권한 변경 (0) | 2016.10.31 |
access 시스템 호출 (1) | 2016.10.31 |
stst 시스템 호출로 파일 종류 확인 (1) | 2016.10.31 |
파일의 상태, fstat, lstat, stat 시스템 호출 (1) | 2016.10.31 |
[리눅스/유닉스 시스템 프로그래밍] fnctl, sync, fsync (0) | 2016.04.05 |