티스토리 뷰

발생일: 2011.09.18


문제:
유닉스에서 파일 권한(permission 또는 mode) 변경하는 방법에 대해 알아보자.


해결책:
일단 현재 파일의 상태가 어떤 지 알아보기 위해 조회해본다.
ls -l    ("Long format" 으로 조회)


목록 중 가장 왼쪽의 컬럼이 현재 파일에 대한 권한(file mode) 정보를 나타내는 것이다.
-rwxr-xr--

위 문자열은 각각 아래를 의미한다.
-                rwx            rwx              rwx
파일타입     user 권한    group 권한    other 권한


파일 타입(file type)에는 아래와 같은 종류가 있다. (여기서는 - 와 d 만 알고 있어도 충분하다.)
- : plain file. 일반 파일. 실행 파일도 포함한다.
d : directory. 디렉토리 형식.
l : link. 다른 파일을 가리키는 링크 파일.
p : pipe. 두 개의 프로그램을 연결하는 파이프 파일. 
b : block device. 블럭 단위로 하드웨어와 반응하는 파일.
c : character device. 스트림 단위로 하드웨어와 반응하는 파일.


파일에는 3개의 권한이 표시되는데, 각각 유저(user), 그룹(group), 모든 사용자(other)를 나타낸다.
user 는 파일의 소유자를, group 은 파일이 포함된 그룹을, other는 그 외 나머지 사용자를 의미한다.
이 세 권한 그룹을 UGO 라고 표현하기도 한다.


rwx 문자열은 각각, 읽기(Read), 쓰기(Write), 실행(Execute)을 의미한다. 
해당 권한이 있을 경우, 각각 r,w,x 로 표시하고, 권한이 없을 경우엔 대시(-)를 표시한다.


고로, 위 예제에서 제시되었던 -rwxr-xr-- 는, 파일 정보가 아래와 같다는 것을 의미한다.
- : 일반 파일이다.
rwx : 파일 소유주는 읽고, 쓰고, 실행 가능하다.
r-x : 파일 그룹의 유저는, 읽기와 실행만 가능하다.
r-- : 나머지 유저는, 읽기만 가능하다.


유닉스에서 파일 권한을 변경하기 위해서 chmod 명령어를 사용한다. (chmod = "change mode")
chmod [권한] [파일]
chmod g+w test     # test 파일에, 그룹(g) 쓰기(w) 권한을 추가(+) 한다.
chmod o-x test      # test 파일에, 나머지 사용자(o)의 실행(x) 권한을 제거(-) 한다.


아래와 같이 여러 심볼을 묶어서 권한을 할당할 수도 있다.
chmod u+rwx test  # user 에 rwx 권한을 추가한다.
chmod ugo+rx test
chmod u+x,g+rw,o-r test


매번 심볼을 사용하기 불편하다면 간편하게 숫자로 설정할 수도 있다.
rwx 는 각각, 아래와 같은 숫자 값을 가진다.
r = 4
w = 2
x = 1 
- = 0 


각 그룹에 대한 권한을 숫자를 합한 값으로 한자리로 표현할 수 있다.
rw- = 4 + 2 + 0 = 6
r-x = 4  + 0 + 1 = 5
rwx = 4 + 2 + 1 = 7

 
숫자를 이용해 권한을 설정하는 예는 아래와 같다.
chmod 755 test     # test파일의 권한을 rwxr-xr-x 로 설정한다.
chmod 654 test     # 654 = rw-r-xr--
chmod 4 test = chmod 004 test


 
반응형
댓글
공지사항