리눅스

퍼미션 SUID, SGID, Sticky bit

ho-bolt 2021. 10. 17. 19:00

전 퍼미션을 다룰 때 chmod 를 r : 4 , w : 2, x : 1로 바꿀 수 있다고 하여 

chmod 777 이런 식으로 썼었다. 그러나 이것은 0777로 0이 생략된 것인데 

 

SUID SGID

여기서 0이 set(id), sgid이다. 

  1. => 실행 파일에서만 적용된다. 파일이 실행된 프로세스는 실행한 사용자 소유로 실행 권한이 부여되자만, suid, sgid 를 설정한 파일의 프로세스는 소유자나 그룹 소유자의 id로 실행된다. 실행 권한에 s 로 명시된다.  
  2. suid : 4000 ,u+s ( suid가 4로 설정되어 있으면 x가 s로 바뀐다. 
  3. sgid : 2000, g+s

만약 사용자나 그룹사용자 권한이 없다면 s가 대문자로 바뀐다.

 

chmod 4000으로 suid 권한을 주었지만 실행권한이 없어 S 로 나오고 chmod 4100으로 실행권한을 주니 s로 나오는 것을 볼 수 있다.

 

 

sticky bit

: 파일에 대해서 퍼미션과 관계없이 소유자만 삭제 가능하게 할 때 디렉터리에 other 권한을 제한하는 것 

  1. other 를 대상으로 설정
  2. 모든 권한 허가가 가능하지만 삭제는 소유자만 가능
  3. 1000 : o+t

=> 많은 사람들이 보지만 오직 소유자만 파일을 삭제하게 만드는 것 

 

 

suid(4) , sgid(2), stick bit(1) 

 

suid와 sgid는 user와 group 퍼미션에 s로 표시되고 sticky bit 는 other 퍼미션에 t로 표시된다. 

 

7777: rwsrwsrwt

4777: rwsrwxrwx(u+s)

2777 : rwxrwsrwx(g+s)

1777 : rwxrwxrwt(o+t)

 

chown , chgrp 

소유자 또는 그룹소유자 변경 

 

chown [-R] [유저명] [ 대상] 

chown [-R] [유저명] [ 그룹명] [ 대상] -비표준명령

chgrp [-R] [그룹명] [ 대상]   

 

 

umask 명령 ==기본 퍼미션 

==파일을 만들 때 기본적으로 정해져서 만들어지는 퍼미션 

ex) touch 로 a라는 파일을 만들었을 때 권한이 

-rw-r--r--인 경우 이것이 기본 퍼미션으로 되어 있기 때문이다.

 

umask 확인

# umask 확인

 

umask 변경

#umask [제외할 퍼미션]

#umask 077(0077) 

 

기본 퍼미션 설정 

 

디렉터리가 생성될 때 퍼미션 중에서 제외될 퍼미션을 지정 기본 unmask 는 022 ex) 만약 777이라면 022를 빼서 755가 된다.

 

디렉터리는 777 파일은 666 이다. 

 

파일의 속성

lsattr

파일의 속성 확인 

#lsattr [옵션] [대상] 

 

속성 

i : 변경, 삭제 링크 금지 

 

옵션 

-d ==파일 형식으로 출력(대상이 디렉터리인 경우 사용) 

-R ==하위의 모든 파일에 대한 속성 표시

-a == 숨김 파일 출력

 

chattr 파일의 속성 확인 #chattr [속성 연산] [옵션] [대상] 

 

속성 연산 + : 속성 추가- : 속성 삭제 = : 해당 속성만 갖도록 설정 옵션 -R : 하위의 모든 파일 대한 속성 변경

 

ps -ef 

jobs  

 

 

 

728x90