권한이란?
파일 및 디렉토리에 접근을 제어하는 것을 말한다.
리눅스의 모든 파일과 디렉토리는 권한(Permission)을 가지고 있다.
리눅스의 파일시스템 상에 권한에 대한 정보를 저장하는 부분이 있다.
퍼미션들은 시스템 상에 존재하는 파일들에 대한 읽기,쓰기,실행에 대한 접근 여부를 결정한다
ls -l 명령어로 확인 가능 (첫번째 필드, -rwxr-wr--)
이러한 퍼미션은 다중 사용자 환경을 제공하는 리눅스 환경에서는 가장 기초적인 접근 통제 방법이다.
권한의 구조
총 10개의 문자 중 첫번째 문자는 해당 파일의 종류를 의미한다.
두번째 ~ 열번째 문자가 권한을 의미한다
소유자 : 일반적으로 파일이나 디렉토리를 생성한 사용자, 명령어로 변경 가능
관리그룹 : 파일이나 디렉토리를 생성한 사용자가 속한 그룹, 명령어로 변경 가능
나머지 : 소유자도 아니고 관리 그룹에 속한 사용자도 아닌 경우
r: 읽기 권한이 있음 / w : 쓰기 권한이 있음 / x : 실행 권한이 잇음 / - : 권한이 없음
chmod [권한] [파일 또는 디렉토리 이름] : 권한 설정과 관련된 명령어
[권한] : 권한을 입력할 때는 심볼릭 모드와 옥텟(8진수)모드 2가지 방식을 이용하여 입력 가능하다.
[파일 또는 디렉토리 이름] : 파일. 디렉토리 지정할 때는 절대 경로 또는 상대 경로 모두 가능하다.
1. 심볼릭 모드
2. 옥텟 모드
파일이나 디렉토리를 생성할 때 기본적으로 권한 값은 파일의 경우 644, 디렉토리의 경우 755로 설정 된다.
이 값은 umask 값에 의해 결정되는 값으로 파일은 666에서 umask값을 not 연산을 수행후 둘을 and 연산, 디렉토리는 777에서 같은 방식으로 구해진다. umask 값은 umask 명령어를 이용해서 변경 가능하며 재부팅하면 초기화 된다. 재부팅 후에도 적용을 시키려면 사용자 초기화 파일에 설정해야 한다.
ex) chmod 640 dir
권한 관련 파일 및 디렉토리 명령어
파일 권한에서 읽기와 실행이 같이 이루어져야한다 (하나만 가지고 동작하지 않는다)따라서 최소한 5(r-x)의 권한이 필요하다.
디렉토리 권한에서는 쓰기 권한에 대한 관리가 필요하다.
특수 권한
일반적인 권한과는 조금 다른 특수한 권한을 말한다.
1. SetUID : 나머지 사용자가 파일을 실행할 때 소유자의 권한으로 접근할 수 있게 해주는 권한
2. SetGID : 나머지 사용자가 파이을 실행할 때 관리 그룹의 권한으로 접근할 수 있게 해주는 권한3. StickyBit : 디렉토리에 부여하는 권한, 디렉토리를 마치 자유게시판 처럼 사용할 수 있게 해주는 권한
일반적으로 /tmp 디렉토리에 부여
find / -perm -4000 를 통해 SetUID가 걸린 명령어들을 찾을 수 있다.
3. StickBit
StickyBit가 부여된 디렉토리 내에서는 누구나 자신의 파일을 생성하거나 수정,삭제가 가능하다
하지만 다른 사용자의 파일을 수정하거나 삭제할 수는 없다. (관리자는 가능)
해당 디렉토리는 마치 인터넷 자유게시판 처럼 이용된다.