07. 파일 접근 권한[chmod 와 chown]
참고: http://eunguru.tistory.com/93
0. 파일 권한
ls- al 명령을 실행하면 파일의 자세한 정보를 볼 수 있는데, 가장 왼쪽에 파일 접근 권한이 나타난다.
예를 들면 파일 접근 권한을 다음과 같은 비슷한 형태로 확인이 가능하다.
ex) drwxr-xr-x
각각,
1필드 : 타입
- 인 경우 : 파일
d 인 경우 : 디렉토리
| 인 경우 : 다른 파일을 가리키는 링크
p 인 경우 : pipe. 두 개의 프로그램을 연결하는 파이프 파일.
b 인 경우 : block device. 블럭 단위로 하드웨어와 반응하는 파일
c 인 경우 : character device. 스트림 단위로 하드웨어와 반응하는 파일
2~4필드 : 소유주 (USER) 권한
5~7필드 : 그룹 (Group) 권한
8~10필드 : 나머지 (Others) 권한
을 나타낸다.
또한 알파벳은 순서대로 각각,
r : 읽기권한(read) = 4
w : 쓰기권한(write) = 2
x : 실행권한(eXecute) = 1
- : 권한 없음 설정 = 0
을 나타내며, 해당 권한이 없을 경우 그 위치에 - (권한없음) 으로 표기된다.
위의 예를 다시 보자.
ex) drwxr-xr--
1필드는 파일의 형식을 나타내므로, d 이기 때문에 이 파일은 디렉토리를 의미한다.
rwx / r-x / r-- 로 끊어서 해석하면 되며,
해석해보면
소유자는 해당 파일에서 읽기, 쓰기, 실행의 모든 권한을 가지고,
그룹은 해당 파일에서 읽기, 실행 권한만 가지며,
기타 사용자는 해당 파일에서 읽기만 가능하다.
1. 명령어 chmod ( change mode )
- 기존 파일 또는 디렉토리에 대한 접근 권한(파일 모드)을 변경할 때 사용
- 파일 모드의 변경은 파일 소유자나 슈퍼 유저만 가능
- 파일 모드는 기호(문자)나 8진수로 지정
사용 방법 : chmod [권한][파일]
chmod o+rw a_file // others에게 읽기, 쓰기 권한을 추가(+)한다.
chmod o-x test // test 파일에, 나머지 사용자(o)의 실행(x) 권한을 제거(-)한다.
여러 심볼을 묶어서 권한을 할당하는 것도 가능.
chmod ugo+rx a_file // user, group, others에 읽기, 쓰기 권한을 추가한다
chmod u+x,g+rw,o-r test // user에게 쓰기 권한을 추가하고, group에게 읽기,쓰기 권한을 추가하고, others에게 읽기 권한을 제거한다.
그룹에 대한 권한을 숫자를 합한 값으로 한자리로 표현할 수도 있다.
0 = --- = 0+0+0
1 = --x = 0+0+1
2 = -w- = 0+2+0
3 = -wx = 0+2+1
4 = r-- = 4+0+0
5 = r-x = 4+0+1
6 = rw- = 4+2+0
7 = rwx = 4+2+1
chmod 755 a_file // 소유자에겐 7(rwx), 그룹과 나머지에겐 5(r-x) 권한부여
chmod 700 * //현재 위치의 모든 파일과 폴더 권한 수정
chmod -R 654 test // 옵셕 -R : 하위 디렉토리와 파일의 권한까지 변경
2. umask (접근 권한 마스크)
- chmod가 기존 파일의 접근 권한을 변경할 때 사용 했다면,
- umask는 앞으로 만들어질 파일에 미치는 명령
- umask 명령으로 지정한 8진수는 새로 만들어질 파일에서 제거될 권한을 명시
- 보통 group과 other의 쓰기권한에 제한을 두는 022를 많이 사용
ex) # umask 022
3. chown
- 파일 또는 디렉토리의 소유자, 소유그룹 수정에 사용
- 명령을 실행하고 나면 파일에 대한 이전 소유주는 해당 파일에 이 명령을 다시 실행할 수 없음
- 명령어를 사용하기 위해서는 슈퍼유저 권한이 필요함(보안의 특성상 슈퍼유저만 사용)
chown prankster file1 //file1 파일의 소유자를 prankster로 수정
chown user1:user2 file2 //file2 파일의 소유자를 user1로 그룹을 user2로 수정
chown -cR nobody:nobody dir //dir 폴더와 그안의 모든 파일,디렉토리의 소유자,소유그룹 변경
chown -R prankster:webhost uploads --from=nobody:nobody
(uploads디렉토리 내의 파일중 소유자가 nobody이고 소유그룹이 nobody로 되어 있는 파일의 소유자를 prankster로 변경하고 소유그룹을 webhost로 변경 )