본문으로 바로가기

Day-10 사용자 계정관리 3

category Linux 2016. 12. 31. 11:44

getfacl [옵션] - 파일과 디렉토리에 ACL 설정 확인
getfacl [옵션] [파일/디렉토리명]

 

-옵션
 -d 기본 정보에 대해 확인
 -R Directory인 경우 하위 Directory의 내용까지 확인 가능

 

#파일 및 디렉토리의 이름
#해당 파일/디렉토리 소유자
#해당 파일/디렉토리 소유 그룹

정된 사용자권한::rwx 
설정된 그룹 권한 ::rwx
설정된 기타 권한 ::rwx
ACL MASK  ::rwx

 

::사이에는 계정 혹은 그룹이 채워짐

 


setfacl - 파일과 디렉토리에 ACL 설정
setfacl [옵션] [규칙] [파일/디렉토리명]

 

- 옵션
 -m (modify) 권한을 수정할 때 사용한다.
 -x 권한을 삭제할 때 사용한다.
 -R 하위 Directory 및 파일의 권한을 변경
 -b 권한 및 mask 등 지정한 권한을 전부 제거 

 

- 규칙
 u:[uid]:[권한] - 사용자에 대한 ACL을 설정, 사용자명이나 UID를 지정
 g:[gid]:[권한] - 그룹에 대한 ACL을 설정, 그룹명이나 GID를 지정
 o:[perms] - 기타 사용자에 대한  ACL을 설정

 

- 권한
 읽기, 쓰기와 실행을 가리키는 r, w, x 문자를 조합 (숫자모드도 가능)
 만일 파일이나 디렉토리가 이미 ACL을 가지고 있는 경우, setfacl 명령어 적용 시 추가 규칙이
 기존 ACL에 추가되거나 기존 규칙이 수정

 

- ACL MASK
 추가되는 퍼미션의 제한하는 값
 유효 접근 권리 마스크(effective rights mask)
 
- ACL 마스크(mask)라는 것은, 유저와 그룹에 지정된 모든 ACL의 퍼미션 마스크로서 동작
  이것은 umask와 비슷하지만, 약간 다르다. 예를 들어, ACL마스크를 r-- 로 설정하면,
  일치하는 모든 ACL은 자신의 갖고 있는 퍼미션(예: rw-)이 효력을 잃게 되어, r--로 설정된다.   

 

- Default ACL
 디렉터리는 디폴트 ACL을 가질 수 있는데, 이것은 해당 디렉터리에 내에서 생성되는
 파일이나 서브디렉터리의 디폴트 ACL이다.
 

규칙에 사용되는 문자는 줄임말, u=user d=default 숫자로도 지정 가능하며, 여러 인자 지정가능
setfacl -m d:u::7,d:g::5,d:o::5

 

ACL 사용 조건
- 2.6버전 이상의 커널에서 동작하며, 오래된 파일시스템에서는 지원하지 않는다.
- mv로 이동하면 ACL설정은 유지되나 cp로 복사하면 ACL설정은 사라진다.
- cp에 -p 옵션을 붙이면 ACL설정은 유지.
- ACL은 ACL옵션이 적용된 파티션에만 쓸 수 있다.
  (확인 명령어 : tune2fs -l)


특수권한의 종류 SetUID, SetGID, StickyBit

 

SetUID
실행파일에 한해서 설정이 가능하며 SetUID 속성이 있는 경우
실행한 사용자가 아닌 파일을 소유한 사용자의 권한으로 프로세스가 실행된다.
SetUID는 보통 Root가 소유한 파일에 적용되며 이경우 해당 명령을 실행하는 순간에는
Root권한을 가지게 된다.

 

SetUID 속성은 Root가 어떤 행위를 하지 않아도 해당 파일을 사용 할 수 있어 시스템 운영을
효율적으로 할 수 있으나 잘못된 SetUID 속성은 보안상 큰 위험 요소로 작용할 수 있다.

SetUID 파일

/usr/bin/passwd
/bin/ping

 

 passwd 명령어(파일)로 패스워드 지정, 변경 시 /etc/passwd, /etc/shadow파일이 변경됨
- /etc/passwd의 접근권한: 0644 (root만 수정 가능)
- /etc/shadow의 접근권한: 0400 (root만 수정 가능)
- passwd 명령어(파일)은 setuid 비트가 설정되어 있으므로 실행 시 소유자인
  root의 권한으로 실행됨

 

- 일반 사용자 계정에서 passwd 명령어 실행 시에 소유자 root 권한으로 실행되기댸문에
  Root만 수정가능한 /etc/passwd, /etc/shadow 파일의 수정이 가능해 짐

 

SetUID 설정방법
- 기호모드 (u+s)
- 숫자모드 (4000)

 

#cd /practice/11_22/
#touch SetUID1, 2
#chmod 4644 SetUID1
#chmod 4544 SetUID2

 

Setuid 비트가 설정되어 있으면 사용자 접근권한의 실행 권한 자리에
실행 권한이 있으면 소문자 s로 실행권한이 없으면 대문자 S로 표시됨


SetGID
프로세스가 실행한 사용자의 GID가아닌 소유한 그룹의 GID권한으로 실행된다
SetGID가 디렉토리에 설정되어 있는경우, 디렉토리에서만들어지는 파일이
모두 해당 디렉토리의 그룹 허가권을 갖는다.

 

ex) /home/web-user-1 //web-user-1 사용자가 web_user라는 그룹에 속해있으면
    해당 web-user1의 홈디렉토리에 SetGID 설정을하면 web-user-1의 생성되는 모든 파일은
    생성한 사용자와 무관하게 모두 web_user그룹 허가권을 갖느다.

 

팀단위로 작업할 경우 모든 사용자가 파일을 공유하도록 할때 사용된다.
setuid 비트처럼 유효 그룹 ID(EGID)를 사용자의 실제 그룹 ID에서 파일 소유자의 그룹 ID로 변경함

 

SetGID 설정방법
- 기호모드 (g+s)
- 숫자모드 (2000)

StickyBit
파일에도 적용이가능하나 지금은 의미가 없어 졌다. 자주 사용하는 프로그램일 경우
실행되는 로딩과정을 없에주는 기능을 해서 성능을 향상시킬 수 있었다.
가상메모리 기술이 발달해서 사용할 필요가없다.

 


명령어 실행 과정

 명령어
   |       NO
현재 디렉토리 확인 --> $PATH 확인
YES   |                   | YES
실행 권한 확인    <--------
YES   |            
명령어를 실행한  --> 명령어 파일 SetUID 확인
계정의 ID로 실행       |YES    |NO
YES   |          |          |
명령어 실행            명령어의 소유자    -->명령어 실행 불가
                  권한으로 실행



속성(attribution),
- 특정 파일의 속성자체에 설정하는 방법으로 파일을 삭제하지 못하게하는 속성이
  걸려있는경우 파일소유자이더라도 해당파일을 삭제하지 못한다.

 

즉, 파일마다 특정속성을 부여하여 권한과는 다른개념으로 파일을 관리할수 있다.

 

chattr - 명령어는 특정파일에 속성을 변경하고자 할때 사용되
lsattr - 명령어는 특정파일에 대한 속성을 확인하고자 할때 사용

 

속성 지정,제거(chattr명령어) <<
chattr명령어를 이용하여 특정파일 및 디렉토리에 위에서 나열된 속성을 지정할수 있다.
연산자를 이용하여 속성을 변경한다.

 

속성
i속성(immutable)
해당파일의 변경, 삭제, 이름변경뿐 아니라 파일추가 및 링크파일도 만들수 없다.

변경추가가 거의 없는 부팅관련 파일들에 설정하면 부팅되지않는 문제로 인한
시스템장애를 줄일수 있다.

 

a속성(append only)
해당파일을 추가(append mode)만 할수 있다. 파일보안을 위해 주로 사용하는 속성이다.
디렉토리에 설정하면 해당디렉토리에 파일을 생성만 할수 있다.

 

e는 ext4 포맷을 ext3 포맷으로 변형시켜 주는 것

 

chattr [옵션][기호 와 속성옵션][파일]

 

기호
연산자   의미
   +        지정한 속성을 추가
   -        지정한 속성을 제거
   =        기존 속성을 초기화후 지정한 속성만을 부여
 
-. chattr의 주요 옵션
-R : 디렉토리내의 서브디렉토리까지 속성을 일괄변경한다.

 

- 특정파일에 삭제,변경,내용추가등 불가능하게 설정(i) immutable

'Linux' 카테고리의 다른 글

Day-12 프로세스 관리 2  (0) 2017.01.06
Day-11 프로세스 관리 1  (0) 2017.01.03
Day-9 사용자 계정관리 2  (0) 2016.12.31
Day - 8 사용자 계정관리 1  (0) 2016.12.26
Day-7 환경변수  (0) 2016.12.24