[Centos 7] Ownership / Permissions (소유자/권한)

2022. 11. 20. 16:55리눅스(Linux)

Ownership/Permission
$ 관련된 구성요소 
   - 파일 유형
   - 파일 허가권
   - 링크 수
   - 파일 소유자 이름
   - 파일 소유 그룹 이름

 

drwxr-xr-x 2 root root 4096 3월 11 18:23 Desktop
-rw------- 1 root root 1655 3월 11 06:02 anaconda-ks.cfg
-rw-r--r-- 1 root root 46643 3월 11 06:01 install.log
-rw-r--r-- 1 root root 6863 3월 11 05:59 install.log.syslog
-rw-r--r-- 1 root root 74625 3월 17 23:17 iptables.txt
-rw-r--r-- 1 root root 199 3월 11 18:06 scsrun.log

 

$ Owner/Group/Others

Owner/Group/Others

UID(Owner) → 소유자 , 소유자랑 그룹 둘다 같다면 소유자 권한 먼저 해당됨

GID(Group) → 그룹

Other → 소유자도 아니고 그룹도 아니면 해당하는곳

 

# id
uid=1000(user) gid=1000(user) groups=1000(user)
   - rwx(소유자) rwx(그룹) rwx(other)

 

$ 자주 사용되는 명령어 예제(Permission)

# chmod 644 test
   - test 파일의 사용자 권한은 rw, 그룹의 권한은 r, 그 외 사용자의 권한은 r 로 설정 (numeric method)

# chmod g+rx test
   - test 파일의 그룹에 읽기와 실행권한을 허가(symbolic method)

# chmod o+rwx 2test
   - test 파일의 그 외 사용자에게 읽기/쓰기/실행 권한 허가
   
 
# rm /backup/test
# rm /backup/testfile
   - other일 경우 상위 경로에 변경사항이 있어야 적용됨
   상위경로 backup 디렉터리에 권한이 있어야 하위 test, testfile 권한 사용 가능

 

파일에서의 r 권한
   - cat , more , vim , cp, tail, head 등과 같은 파일의 내용을 읽어 들이는 것과 관련이 있다.

파일에서의 w 권한
   - cat , echo , vim 등과 같은 파일의 내용을 수정,변경 하는 것과 관련이 있다.

   - vim 같은 경우는 :wq!로 저장이 가능하긴 하다. (소유주만 적용)

파일에서의 x 권한
   - 실행 파일 같은 경우 실행 여부와 관련이 있다.

   - 모든 명령어 실행(문서파일은 의미 없음)

 

디렉터리 에서의 r 권한
   - ls , dir등과 같은 디렉터리의 내부 내용을 읽어 들이는 것과 관련이 있다.

디렉터리 에서의 w 권한
   - mkdir , touch , rm , mv등과 같은 디렉터리 내부에 생성,삭제와 관련이 있다

디렉터리 에서의 x 권한
   - 디렉터리의 접근과 관련이 있다. (cd)
   - 디렉터리에 x가 없다는것은 대부분의 명령어를 이용 할 수가 없게 된다는 것.

 

$ 자주 사용되는 명령어 예제(Changing Ownership)

# chown testuser1 test 
   - test 파일의 소유자를 testuser1 으로 바꿈

# chown testuser1:testuser1 test 
   - test 파일의 소유자와 그룹을 testuser1 으로 바꿈
   
# chown testuser1:root test 
   - test 파일의 소유자는 testuser1 그룹은 root 로 바꿈
   
# chown user. a  
-rw-r--r-- 1 user user 0  5월 24 11:27 a
   - .뒤에 두면 UID, GID 전부 변경

# chown .root a  
-rw-r--r-- 1 user root 0  5월 24 11:27 a
   - .앞에 두면 GID만 변경

 

$ Group Ownership

# chgrp testgroup1 test 
   - test 파일의 소유그룹을 testgroup1 으로 바꿈

특수권한

   - 특수한 동작을 하는 권한

   - 특수한 목적으로 사용하는 권한

   - setUID, setGID, sticky bit 3가지의 특수 권한이 있다.

 

4777r w s r w x r w x: setUID (안쓰는걸 강추)

2777r w x r w s r w x: setGID

1777r w x r w x r w t: sticky bit

 

* x 위치의 문자가 s/t로 변경(x가 있는 상태였다면 소문자 s/t, x가 없는 상태였다면 대문자 S/T)

ex> rwsr-xr-x : 4755

rwSr-xr-x : 4655

 

$ SetUID

 # chmod 4XXX <파일> 
   - S나 s 로 표현되고 8진수 모드로는 4000 으로 표현됨
   - 사용자가 SetUID 권한이 설정되어 있는 실행파일을 실행 할 경우 
   그 파일의 소유자 권한을 가지게 된다
   
# chmod 2XXX <파일> 
   - S 나 s로 표현되고 8진수 모드로는 2000 으로 표현된다
   - SetUID와 동일한 내용을 가지며 다만 그룹의 권한으로 실행 된다는 것만이 다름

- 허가 되지 않은 setuid 유입시 버퍼플로우 당할 우려가 있다.

- 관리자는 바로 내부 라이브러리에 새로운 기능을 적용시키지않고 테스트환경에서 확인 후 적용해야한다.

- setuid는 기존에 걸려있는거 말곤 건드리지 않는게 좋다.

- 보통 조정하게되면 심볼릭 방식을 사용한다. ex) chmod u-s

 

$ Sticky bit

# chmod 1XXX<파일> 
   - T 나 t로 표현되며 8진수 모드로는 1000 으로 표현된다
   - 해당 권한이 설정되어 있는 디렉터리의 모든 유저는 파일을 생성하고 
   삭제하는 것이 자유롭지만, 삭제시에는 소유권자 혹은 슈퍼유저만 지울 수 있다

$ chattr 명령어

   - 리눅스의 second extended 파일 시스템에서 제공되는 파일 속성 변경 명령어

# chattr [option] [+-=] [속성값] [File / Directory] 
   - 사용 형식

속성값

   - a(append) : 추가 모드만 지원함(소유주만 가능)
   - c(compressed) : 압축상태로 저장함
   - d(no dump) : 덤프를 하지 않음
   - i (immutable) : 변경 불가능 상태로 설정
   - j(journaling) : 저널링으로 기록하게 함(ext3맊 가능)
   - s(secure deletion) : 안전한 쓰기를 제공
   - u(undelete) : 삭제한 데이터를 debugfs 명령어로 복구 함

 

$ UMASK

# umask [mode]

UMASK
UMASK 구동방식 (계산법)

 

$ ACL (Access Control List)
   - ACL은 특별한 권한 설정기능을 제공한다.

   - 우리는 기존에 파일이나 디렉터리에 부여하던 소유자, 그룹, 기타 사용자의 권한을 특정 사용자, 특정 그룹에게 추가해서 설정할 수 있다.
   - ACL은 그룹에게는 읽기 권한만 주고, 특정 유저에게는 읽기/쓰기 권한을 줄 수도 있다.

 

$ Setfacl

# setfacl [option] [u,g,o::---] [File / Directory]

option

$ Getfacl

# getfacl [option] [File / Directory]

option