● id
EUID와 EGID 표시해주는 명령어

id {option} {username}
-a : 모든 정보 표시



UID는 시스템이 사용자를 식별시 사용함.
EUID는 Effictive UID로써 쉘에서 사용자를 변경했을 경우 적용되는 UID이다. EGID도 마찬가지이다.
초기 로그인시에는 UID와 EUID는 같다.
그러나 su명령을 이용해서 사용자를 전환하면 UID와 EUID는 다르다.



일반사용자가 자신의 암호를 바꾸려면 passwd 명령을 이용하면 된다.
패스워드를 바꾼다는 소리는 /etc/shadow파일을 열어 해당 줄의 패스워드를 변경하고 저장했다는 소리이다.
그러나 ls -l 명령으로 /etc/shadow 파일을 보면 일반사용자는 파일을 읽고 쓸 권한이 없다.
그렇다면 어떻게 암호를 바꿨을까?
which명령어를 이용해 passwd 라는 명령어가 위치한 곳을 알아보면 /usr/bin/passwd이다.
일반 사용자가 암호를 바꾸려고 passwd를 치면 /usr/bin/passwd를 실행시킨다.
ls -l /usr/bin/passwd를 해보면 s라는 처음보는 권한이 보인다. 이 s라는 권한은 무엇일까?
s가 들어가면 누가 되었든 루트가 실행시킨 것과 같은(/usr/bin/passwd파일은 루트의 소유임) 권한으로 실행시킨다. 즉, 해당 프로그램 주인(소유자)의 이름으로 실행시킨다.

setuid와 setgid는 마패의 개념과 같다. 어사 박문수는 평범한 인간에 속하지만 임금님의 명과 같은 마패를 보여주면 박문수의 말은 곧 임금님의 어명과도 같은 권한이 부여된다.


■ setuid
실행 파일을 실행 시 소유자의 실행권한으로 실행. 즉 이 파일의 소유자 이름으로 실행.
s는 기존에 실행권한이 있을 때, S는 기존에 실행권한이 없을 때를 뜻함.
사용자 부분의 실행권한 부분이 바뀜.

chmod 4555 file1
4000값이 setuid


■ setgid
실행 파일을 실행 시 소유그룹의 실행권한으로 실행. 즉, 이 파일의 소유그룹으로 실행.
s 또는 l로 표기됨.
디렉토리인 경우에는 symbolic으로 셋팅
그룹 부분의 실행권한 부분이 바뀜.

chmod 2555 file1
2000값이 setgid


■ sticky bit
파일이나 디렉토리를 생성한 사용자의 권한.
해당 사용자만이 권한을 가진다.
t 또는 T로 표기됨.
다른 사용자 부분의 실행권한 부분이 바뀜.
/temp/A
          B
          C

temp라는 디렉토리 밑에 각 개발자들의 디렉토리를 만들고 각자의 결과물을 저장한다고 가정하자.
temp디렉토리는 모두가 접근가능해야 하므로 777권한으로 주었다고 하면, A개발자가 B개발자의 결과물을 지울 수 있는 상황이 벌어질 수 있다. 이를 방지하기 위해 sticky bit를 두어 자기 것은 오직 자기만이 지울 수 있게끔 한다.

chmod 1555 file1
1000값이 sticky bit
Posted by 겨울섬
,