특수 권한(Special Permission)

  • 시스템 관리의 효율성을 높이기 위해 사용하는 특별한 권한
  • 보안의 취약점이 될 수 있으므로 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다.
특수 궈난 절대 모드 상대 모드
Setuid 4000 u+s
Setgid 2000 g+s
Sticky bit 1000 o+t

Setuid (4000 = u+s)

  • 파일을 실행하는 동안 해당 파일의 소유주의 구너한으로 실행
  • 일반적인 실행은 파일을 이용하려는 사용자의 소유권에 의해 실행권한이 부여되지만, setuid 권한이 적용되어 있는 파일은 실행되는 동안은 사용자가 아닌 파일의 소유주의 권한을 할당 받는다.
  • 실행 파일에만 설정이 가능 하다.
  • 소유자의 허가원에서 실행 권한이 x가 아닌 s로 표시 된다.(예:rwsr–r–)

  • 예(passwd)
    • 패스워드를 변경하려면 /etc/shadow 파일의 읽기 및 쓰기 권한을 가지고 있어야지 패스워드를 기록 할 수 있다.
    • passwd 실행 파일에 setuid 권한이 부여 되어 있으므로 passwd 명령이 실행되는 동안은 소유주의 권한(root)으로 동작하게 된다.

Setgid (2000 = g+s)

  • 파일을 실행하는 동안 해당 파일의 소속 그룹 권한으로 실행
  • 파일이 실행되는 동안은 사용자가 아닌 파일의 소속 그룹 권한을 할당 받는다.
  • 파일 및 디렉터리에서 설정 가능
  • 소속 그룹의 허가권에서 실행 권한이 x가 아닌 s로 표시 된다.(예:rwxr-sr–)

  • 디렉터리 적용
    • setgid가 적용된 디렉터리의 하위에 생성되는 디렉터리도 동일하게 setgid가 설정된다.
    • setgid가 적용된 디렉터리 안에서 새로운 디렉터리를 생성하면 setgid에 명시된 소속그룹으로 설정된다.

Sticky bit(1000 = o+t)

  • 모든 소유권에 모든 허가권을 부여하지만 삭제는 소유주만 가능 하다.
  • 디렉터리에 설정 한다.
  • 나머지 사용자(other)의 허가권에서 실행 권한이 x가 아닌 t로 표시 된다.(예:rwxr-xr-t)
  • /tmp,/var/tmp에 적용되어 있다.
  • 기본 소유권과 허가권을 먼저 확인하기 때문에 기본 허가권에 삭제 권한이 있으면 삭제가 가능 하다.

확장 권한(ACL)

  • 기본적인 소유권과 허가권 외의 세부설정이 필요한 경우 사용되는 permission
  • 파일 및 디렉터리에 특정 소유자/소유 그룹의 권한을 부여할 때 사용한다.
  • 파일 및 디렉터리의 세부 정보 중에서 권한 정보(rw-r–r–.)의 마지막 10번쨰 값으로 권한 ACL설정 여부를 확인한다.
rw-r-r–.  
. 권한 ACL이 설정되지 않았음
+ 권한 ACL이 설정되어 있음

확장 권한(ACL)관리 명령어

getfacl 권한 ACL 확인
setfacl 권한 ACL 설정

getfacl

  • 파일 및 디렉터리에 설정된 권한 ACL 확인

  • 사용법

    • #getfacl [옵션] [파일이름]
OPTIONS  
-n 소유자, 소속그룹의 정보를 uid,gid 형태로 출력
-d 기본 권한 정보만 출력
-c 확장 권한 정보만 출력
-R 디렉터리 하위의 파일, 디렉터리의 정보도 함께 출력

setfacl

  • 파일 및 디렉터리에 설정된 권한 ACL 설정

  • 사용법

    • #setfacl [옵션][정책][파일이름]
OPTIONS  
-m 권한 ACL 설정
-x 한 항목씩 ACL 설정 삭제
-b ACL 모두 삭제(초기화)
-R 이미 존재하는 하위 경로의 파일 및 디렉터리에도 함께 설정
-d 하위 경로의 파일 및 디렉터리가 생성될 때 즉시 설정
RULES
[소유권]:[확장할 사용자]:[허가권] (예: u:test:rx(=5)