소유권 / 허가권 / 특수권한 / ACL

2017. 4. 29. 17:12Linux




dr-xr-xr-x.    2 root    root    4096    2017-04-22 13:42 bin

파일타입(d) / 허가권(r-xr-xr-x) / 링크수(2) / 소유자(root) / 소유그룹(root) / 파일크기 / 생성일자 / 파일명


< 소유권 >

- 파일 및 디렉터리에 대한 소유 권한

#chown [User]:[Group] [Path]

- 해당 경로의 파일 또는 디렉토리에 대한 소유권을 변경한다

- ' : ' 를 기준으로 왼쪽은 소유자 , 오른쪽은 소유 그룹을 지정한다


< 허가권 >

- 파일 및 디렉터리에 접근을 제한하는 것

- [ _ _ _ _ _ _ _ _ _ ] : 소유자, 소유그룹의 그룹원 , 기타사용자 들의 권한 

- r : 파일을 읽을 수 있는 권한

- w : 파일을 삭제하거나 수정 또는 생성할 수 있는 권한

- x : 파일을 실행 할 수 있는 권한


- 허가권 지정 방법

r : 4 , w : 2 , x : 1 => 7진법 이용

#chmod _ _ _ [Path]

- 해당 경로의 파일 또는 디렉토리에 대한 허가권을 변경한다

- _ _ _ 각각은 소유자, 그룹원, 기타사용자 의 허가권에 해당한다


rwx rwx rwx : 소유자,그룹원,기타사용자의 허가권

#chmod 421 testFile


소유자의 허가권은 4 => r / 소유그룹의 그룹원들의 허가권은 2 => w / 기타사용자들의 허가권은 1 => x


#chmod 765 testFile



rwx => 4+2+1 = 7 / rw => 4+2 =6 / r-x => 4+1 = 5 



< 특수 권한 > 


< SetUID >

- "실행파일" 에 한해서 설정한다. SetUID가 설정된 실행파일을 실행할 경우에는 해당 실행파일의 소유자 권한으로 프로세스가 실행된다

#chmod u+s testFile or #chmod 4765    =>     

=> 해당 파일을 다른 사용자로 로그인하여 실행하여도 root권한으로 파일이 실행된다

=> root사용자의 역할이 너무 많으므로 기타 사용자가 실행 할 수 있도록 역할을 나누어 준다

* 해당 실행파일에 SetUID를 설정하기 전에 소유자에게 'x' 즉 실행권한이 없었을 경우에는 rwS 대문자로 표시된다

* 원래의 허가권 765 에 +4000 옵션


< SetGID >

- "디렉토리" 에 설정한다

- 프로세스가 실행한 사용자의 GID가 아닌 파일을 소유한 그룹의 GID로 실행된다

- SetGID가 설정 되어있는 디렉토리에서 파일을 생성하면, 해당 디렉토리의 소유그룹이 그 파일의 소유권을 가진다



< setGID 설정하기 전 >

디렉토리 'testDir'의 소유자와 소유그룹이 hwan-3 이지만

해당 디렉토리에 파일을 생성하면 소유권과 소유그룹은 로그인한 사용자의 권한이 된다


< setGID 설정 한 후 >

#chmod 2755 [Path] or #chmod g+s [Path]

#chmod 2755 /testDir 실행결과 해당 디렉토리의 권한은 "rwxr-sr-x" 로 변경되었다

# 해당 디렉토리에 파일을 생성하면 자동적으로 소유권을 해당디렉토리의 소유그룹이 가지게 된다



< StickyBit >

- 모든 사용자가 생성이나 수정, 삭제가 가능한 디렉토리에 적용한다

- Sticky 설정 후에는 해당 디렉터리의 소유자만 파일을 삭제 할 수 있다.

- 위에서 지정했던 디렉터리의 SetGID 를 제거 해준다



< 디렉토리에 StickyBit 설정 >

- #chmod o+t [Path] or #chmod 1xxx [Path]

- 기타사용자의 허가권에 't'



< ACL ( Accessed Control List ) >

- 디렉터리 및 파일에 특정사용자나 그룹에게 특정 권한을 부여하는 기능

- 세세한 권한 관리시 사용한다


[1]

#getfacl [Option] [Path]

- 파일과 디렉터리의 ACl설정 확인

- d : 기본정보만확인

- r:  하위파일 및 디렉터리까지 확인

[2]

#setfacl [Option] [Rule] [Path]

- 파일과 디렉터리에 ACL을 설정한다

* Option

- m : 권한을 수정할 때

- x : 권한을 삭제할 때

- R : 하위 파일 및 디렉터리까지 설정할 때

- b : 권한 및 마스크 등 지정한 권한 모두 제거

* Rule

- u : UID or 유저명 : 권한

- g : GID or 그룹명 : 권한

- o : 권한



소유자에게는 모든권한이 있고 그룹과 다른사용자들은 읽기권한만 가지고 있다.

#setfacl 을 실행하여서 다른 특정사용자에게 쓰기권한을 부여해보자



#setfacl -m u:hwan-3:5 testDir

-> 유저 "hwan-3" 에게 "testDir" 디렉터리에 대한 "5(r+x)" 권한을 부여한다




#setfacl -x u:hwan-3 /testDir

-> 유저 "hwan-3"이 "testDir"디렉터리에 가진 권한을 제거한다


#setfacl -b testDir

-> "testDir" 디렉터리에 설정된 모든 ACL 설정 제거