파일이나 디렉터리의 소유권과 허가권을 확인하기 위해서는 'ls -l' 명령어나 'ls -n' 명령어를 사용한다.
# ls -l [file]
-rw-r--r-- 1 apple apple 60 Jan 31 20.21 [file]
파일 유형
-: 일반 파일
d: 디렉터리
l: 심볼릭 링크
b: 블록 디바이스
c: 캐릭터 디바이스
p: FIFO
s: 소켓
허가권(permission)
허가권은 소유자 허가권, 그룹 허가권, 다른 사용자 허가권으로 구분된다.
소유자 허가권: 파일이나 디렉터리를 소유한 사용자의 허가권을 의미한다.
그룹 허가권: 파일이나 디렉터리를 소유한 그룹의 허가권을 의미한다. 즉 그룹에 속한 사용자에 대한 허가권이다.
다른 사용자 허가권: 소유자나 그룹에 속하지 않은 사용자에 대한 허가권이다.
[파일] 소유자, 그룹, 다른 사용자에게 읽기, 쓰기, 실행 권한을 부여할 수 있다.
읽기 권한(r): 파일의 내용을 확인하거나 복사할 수 있다.
쓰기 권한(w): 파일의 내용을 수정할 수 있다.
실행 권한(x): 실행 가능한 파일이라면 파일을 실행할 수 있다. 가령 읽기 권한과 실행 권한을 셸 스크립트에 부여하면 해당 스크립트를 실행할 수 있다.
[디렉터리] 소유자, 그룹, 다른 사용자에게 읽기, 쓰기, 실행 권한을 부여할 수 있다.
읽기 권한(r): ls 명령어 등으로 디렉터리 내에 포함된 파일과 디렉터리를 확인할 수 있다.
쓰기 권한(w): 디렉터리가 포함하고 있는 파일 등을 수정할 수 있다. 즉 파일을 생성하거나 삭제할 수 있다.
실행 권한(x): 디렉터리 안으로 접근할 수 있는 권한이다. 실행 권한이 없다면 cd 명령어로 디렉터리 안으로 들어갈 수 없다.
소유권(ownership)
리눅스는 다수의 사용자가 공동으로 사용할 수 있는 멀티 유저 시스템이다. 따라서 각 파일이나 디렉터리를 소유한 사용자나 그룹을 지정하여 시스템을 효과적을 이용할 수 있다.
사용자 소유권: 파일이나 디렉터리를 소유한 사용자
그룹 소유권: 파일이나 디렉터리를 소유한 그룹, 즉 그룹에 속한 사용자가 소유권을 갖는다.
허가권 변경하기
파일이나 디렉터리에 대한 허가권을 변경하기 위해 chmod 명령어를 사용한다. chmod는 기호를 통하거나 8진수 숫자를 통해 허가권을 변경할 수 있다.
[기호]
읽기는 'r', 쓰기는 'w', 실행은 'x'
권한의 추가는 '+', 삭제는 '-', 지정은 '='
사용자 허가권은 'u', 그룹 허가권은 'g', 다른 사용자 허가권은 'o'로 표기한다. 특별히 'a'는 사용자, 그룹, 다른 사용자 모두를 의미한다.
[8진수]
읽기는 '4', 쓰기는 '2', 실행은 '1'로 표기한다. 권한을 주지 않으려면 '0'으로 표기한다. 이들은 조합으로 표현할 수 있는데, 읽기 및 쓰기의 경우는 4+2=6이 된다.
8진수 중 4번째 자리는 특수 권한이고 3번째 자리는 사용자 허가권, 2번째 자리는 그룹 허가권, 1번째 자리는 다른 사용자 허가권을 의미한다.
예로서 '755'라면 사용사 허가권은 읽기, 쓰기, 실행 권한을 갖고, 그룹과 다른 사용자 허가권은 읽기, 실행 권한을 가진다는 것을 의미한다.
형식: chmod [option] mode file(s)
옵션
-R, --recursive: 특정 디레터리 내의 파일과 디렉터리에 대하여 재귀적으로 허가권을 변경한다.
-C, --changes: 변경된 파일이나 디렉터리에 대한 자세한 정보를 출력한다.
-f, --silent, -quite: 대부분의 에러 메시지의 출력을 제한한다.
--reference: 모드 대신에 파일에 지정한 모드를 사용한다.
chmod 644 t2
chmod -R 755 t
chmod u=rw t1예제
사용자 및 그룹 소유권 변경하기
파일이나 디렉터리의 사용자 및 그룹의 소유권을 변경하기 위해 chown 명령어를 사용할 수 있다. 소유권 변경은 오직 루트 사용자만 가능하다.
사용자 및 그룹의 소유권은 이름뿐 아니라 UID, GID를 의미하는 숫자로 지정이 가능하다.
형식: chown [options] owner[:group] file(s)
옵션
-R, --recursive: 특정 디렉터리 내의 파일과 디렉터리에 대하여 재귀적으로 소유자를 변경한다.
-C, --changes: 변경된 파일이나 디렉터리에 대한 자세한 정보를 출력한다.
-f, --silent, --quite: 대부분의 에러 메시지의 출력을 제한한다.
--reference: 지정한 파일에 설정되어 있는 사용자의 그룹으로 소유자를 설정한다.
예제
그룹 소유권만 변경하기
파일이나 디렉터리의 그룹 소유권만 변경할 때는 chown 대신 chgrp를 사용한다. chown은 루트 사용자만 가능했지만, chgrp는 본인이 소유한 파일에 대한 본인이 속한 그룹 내에서 소유권을 변경할 수 있다.
형식: chgrp [options] group file(s)
옵션
-R, --recusive: 특정 디렉터리 내의 파일과 디렉터리에 대해 재귀적으로 그룹 소유자를 변경한다.
-C, --changes: 변경된 파일이나 디렉터리에 대한 자세한 정보를 출력한다.
-f, --silent, --quite: 대부분 에러 메시지 출력을 제한한다.
-h, --no-dereference: 심볼릭 링크 자체의 파일 및 그룹의 소유권을 변경한다. 이 옵션을 설정하지 않으면 심볼릭 링크가 가리키는 파일의 소유권을 변경한다.
예제
$ sudo chgrp fruit t1
$ sudo chgrp -R fruit t
기본 허가권 변경하기
시스템상에 파일이나 디렉터리를 생성할 때 기본 허가권을 지정하기 위해 umask 명령을 사용한다. 리눅스의 기본 허가권 값은 파일의 경우 666(rw-rw-rw-)이고 디렉터리의 경우는 777(rwxrwxrwx)이다. 파일이나 디렉터리 생성 시 이 값에서 umask에 설정된 마스크 값을 뺀 결과값을 허가권으로 지정한다. 예를 들면 umask가 022라면 파일 생성 시 644가 기본 허가권이 되고 디렉터리의 경우는 755가 된다.