유닉스(리눅스) 파일권한(퍼미션)

2017.06.06 07:00


유닉스(리눅스) 파일권한(퍼미션)


퍼미션(Permission)은 파일을 다룰 수 있는 권한 또는 허가를 의미. 


리눅스가 멀티유저용 OS이기 때문에 시스템에 접속하는 다른 사용자들이 파일에 접근을 허가하거나 금지하기 위해서 필요한 개념. 




파일 타입 (파일의 종류)


ls -l 명령어로 파일 리스트를 확인할 때 맨 앞에 표시되는 문자.


d : 디렉토리

b : 블록타입 특수 파일

c : 문자타입 특수 파일

l : 심볼릭 링크

p : 파이프

s : 소켓

- : 일반 파일


유닉스 리눅스 파일권한 퍼미션 파일 종류






파일 권한(퍼미션)의 종류


파일 타입 뒤에 나오는 9개의 문자로 각 3글자씩 소유자, 그룹 사용자, 기타 사용자의 권한 표시




파일에 부여할 수 있는 권한은 기본적으로 읽기, 쓰기, 실행의 3가지 형태


읽기 권한(r)은 파일을 열어볼 수 있고, 파일의 수정은 불가능하지만 복사는 가능


쓰기 권한(w)은 파일에 덧붙여 쓸 수 있다.

(읽기 권한과 쓰기 권한을 가졌다면 파일 편집 가능

 읽기 권한 없이 쓰기 권한만 있다면 기존 파일 뒤에 정보를 덧붙여 쓸 수 있는 권한만 가능 - 로그파일)


실행 권한(x)은 주로 프로그램 파일이나 쉘 스크립트 파일, perl같은 인터프리터 프로그래밍 언어로 작성된 텍스트 파일에 부여. 




일반적 파일 권한의 표시


---     접근 불가

r--     읽기만 가능

r-x     읽기와 실행 가능(프로그램이나 쉘스크립트)

rw-     읽기와 쓰기 가능(일반 파일)

rwx     모든 권한. 프로그램 파일의 경우.





디렉토리에 부여된 파일권한



디렉토리에 대한 파일권한은 일반 파일과 동일한 개념.

(쓰기 권한을 부여해야 파일 수정, 생성 등 가능)



---     디렉토리 접근 불가능

r-x     읽기 가능, 변경 불가

rwx     디렉토리에 모든 권한 부여





디렉토리에 부여된 권한과 관련한 특이점(?)


ㅇ 디렉토리에 실행(x)권한이 없다면??  

-> 디렉토리로 접근(cd) 불가능


1
2
3
4
5
6
7
8
[test01@centos6 /home/test]$ls -l
합계 4
dr--r--r--2 root root 4096 2017-06-04 08:44 r
 
 
[test01@centos6 /home/test]$cd r
bash: cd: r: 허가 거부
 
cs


위 그림에서 디렉토리 r은 읽기 권한(r)만 가진 상태임. 

실행권한(x)이 없기 때문에 cd로 해당 디렉토리로 접근 불가능. 



ㅇ 디렉토리에 읽기(r)만 부여 

->  디렉토리에 저장된 항목 조회 가능. 그러나 그 디렉토리에 저당된 해당 파일 조회 불가


1
2
3
4
5
6
7
8
9
10
[test01@centos6 /home/test]$ls -ld r
r--r--r--2 root root 4096 2017-06-04 06:51 r
 
 
[test01@centos6 /home/test]$ls -l r
ls: cannot access r/only_r.txt: 허가 거부
합계 0
 
-????????? ? ? ? ?                ? only_r.txt
 
cs


읽기권한(r)이 있는 경우 해당 디렉토리 안에 only_r.txt 파일이 있다는 것 까지는 알 수 있다.




ㅇ 디렉토리에 실행(x)만 부여 

-> 디렉토리내 파일목록 조회 불가. 그러나 어떤 파일이 있는지 알고 있다면 파일 조회 가능.

(이 경우 쉘에서 탭으로 파일명 입력 불가능. 파일의 경로와 이름을 정확히 입력해야 조회 가능)


1
2
3
4
5
6
7
8
[test01@centos6 /home/test]$ls -ld x
d--x--x--x. 2 root root 4096 2017-06-04 06:51 x
 
[test01@centos6 /home/test]$ls -l x
ls: cannot open directory x: 허가 거부
 
[test01@centos6 /home/test]$ls -l x/only_x.txt
-rw-r--r--1 root root 0 2017-06-04 06:51 x/only_x.txt
cs


읽기 권한(r)이 없기 때문에 ls -l 로 조회해도 디렉토리(/home/test/x) 안에 있는 파일 리스트를 알 수 없지만

실행권한(x) 때문에 파일명(x/only_x.txt)을 정확히 입력하면 파일 조회 가능




ㅇ 디렉토리에 쓰기(w)만 부여 

-> 아무 권한도 부여하지 않은 상태와 동일





파일과 디렉토리


파일의 삭제나 파일명의 변경은 파일에 대한 접근권한에 의해 결정되지 않고 그 파일이 저장된 상위 디렉토리의 접근허가에 따라 결정된다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[test01@centos6 /home/test/rx]$ls -l
합계 0
-rwxrwxrwx. 1 root root 0 2017-06-04 06:51 rwx.txt
 
 
[test01@centos6 /home/test/rx]$mv rwx.txt rename_rwx.txt
mv: cannot move `rwx.txt' to `rename_rwx.txt': 허가 거부
 
 
[test01@centos6 /home/test/rx]$rm rwx.txt 
rm: cannot remove `rwx.txt' : 허가 거부
 
 
[test01@centos6 /home/test/rx]$ls -ld /home/test/rx
dr-xr-xr-x. 2 root root 4096 2017-06-04 08:44 /home/test/rx
cs


위의 예는 rwx.txt 파일에 대해서는 rwx의 모든 권한을 가지고 있지만 파일 이름 수정이나 삭제가 불가능.

해당 디렉토리에 쓰기 권한(w)이 없기 때문.



파일의 삭제는 파일에 대한 권한이 아무 것도 없어도 디렉토리에 쓰기권한과 실행권한이 있다면 가능하다는 것도 주의해야한다.(디렉토리에 쓰기 권한을 부여할 때 조심해야)


참고로 삭제할 때 파일보호(write-protect)를 무시할 것인지 확인하기는 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[test01@centos6 /home/test]$ls -ld rwx
drwxrwxrwx. 2 root root 4096 2017-06-04 09:42 rwx
 
 
[test01@centos6 /home/test]$ls -l rwx
합계 0
----------1 root root 0 2017-06-04 06:51 r.txt
 
 
[test01@centos6 /home/test]$rm rwx/r.txt 
rm: remove write-protected 일반 빈 파일 `rwx/r.txt? y
 
 
[test01@centos6 /home/test]$ls -l rwx
합계 0
 
cs


위의 rwx 디렉토리의 경우 모든 권한(rwx)을 가지고 있기 때문에

파일에 대해서는 아무 권한(---)도 없지만 삭제 가능.



* chmod 4755 ?? 퍼미션의 확장 setuid

 - [Linux, Unix] - 리눅스] setuid


또루아빠 Linux, Unix , , , , , ,

  1. Blog Icon
    퍼미션

    잘 읽었습니다~~