Linux command

퍼미션 좀 바꿔주세요! - chmod 명령어

쥴리정 2024. 5. 23. 23:14

혼자가 아닌 여러 구성원이 같은 과제를 수행하다 보면 DB나 파일을 공유해야 하는 경우도 많이 있다.

Version control tool을 적용할 경우에는 파일을 체크인,체크아웃 하는 것으로 permission을 쉽게 주고 받을 수 있지만, 그렇지 않을 경우에는 내가 처음 만든 파일이나 디렉토리를 다른 사람도 편집할 수 있게 하기 위해서는 파일 owner가 read, write permission을 바꿔 줘야 한다.

처음 업무 할 때는 누군가가 "제가 편집할 수 있게 permission 좀 바꿔주세요~!" 라는 한마디를 남기고 떠난다면 당황할 수도 있으니 이 때 사용하는 리눅스 명령어 chmod 사용법을 알아보자.

 

일단, 터미널에서 ls -l 을 실행해 본다. 각 파일이 아래와 같은 형식으로 출력될 것이다.

 

-rw-r--r--  julie layout   12345  Jan 27 05:02  test.file

 

파일 또는 디렉토리 제일 앞에 노랑색으로 표시된 열개의 character 로 표시되는 부분이 permission과 관련된 부분이므로 조금 더 뜯어보기로 한다.

첫글자는 파일 타입을 나타낸다.(일반 파일은 - , 디렉토리이면 d, 링크 파일이면 l 이런 식으로)

다음 세 글자는 파일 owner의 read/write/execute , 그 다음 세 글자는 file owner가 속한 group의 read/write/execute , 마지막 세 글자는 others의 read/write/execute 을 나타낸다. 

해당 순서의 권한이 있으면 r,w,x 글자로 표시되고, 권한이 없으면 - 로 표시된다.

 

파일을 처음 만들면 디폴트 값으로 "-rw-r--r--" 이렇게 생성된다. 즉, file owner만 read,write 모두 가능하고 group 및 다른 사용자는 read만 가능하다.


Permission 바꾸는 법 1

 

File owner,group,others 에 대해 각각 read/write/execute permission을 지정하는 방법

 

 

Reference class 설명
u 사용자 파일의 소유자
g 그룹 그 파일의 그룹 멤버인 사용자
o 다른 사람들 그 파일의 소유자나 혹은 그 그룹의 멤버가 아닌 사용자
a 모든 사람 위의 셋 모두, "ugo"와 같다

 

사용 예:

chmod u+rw  test    : user에게 read,write 권한 주기

chmod ug+rwx        : user 및 그룹 멤버들에게 read,write,execute 권한 주기

chmod -w                : user의 write 권한 없애기


Permission 바꾸는 법 2 

 

  읽기(r) 쓰기(w) 실행(x) 읽기 + 쓰기 읽기 + 쓰기 + 실행
유저(u) 4 2 1 6 7
그룹(g) 4 2 1 6 7
다른 사람들(o) 4 2 1 6 7

 

 

chmod 명령어는 rwx 를 위의 표와 같이 세자리 2진수로 계산하여 바꿀 수 있다. r(=4)w(=2)x(=1)숫자를 더하면 간단하다.

물론 앞의 숫자부터 user, group,others 순서.

 

" chmod 666 test.file " 이렇게 실행하면 test.file은 모든 이에게 read,write 권한을 주게 된다.

 

위의 1번, 2번 방법 중에 편한 대로 사용하면 된다.

필자의 경우도 그 때 그 때 편한 방법으로 사용하기 때문에 어떤 것이 더 편하다고는 할 수 없지만, 타이핑이 간단한 2번을 좀 더 선호하는 편.

 

자, 그럼 누군가 permission을 바꿔달라고 하면 바로 아래와 같이 실행하면 된다.

 

chmod 664 file1, file2,......  (누군가가 나와 같은 그룹일 때 write 권한 주기)

chmod 666 file1, file2,......  (누군가가 나와 다른 그룹일 때 write 권한 주기 )

chmod -R 664 directoryname   ( directory 아래 전체 파일의 권한 변경)

 


주의사항:

만약 clio-soft 같은 version control system이 적용되어 있는 layout library의 DB을 이와 같은 방법으로 write 권한을 주고 편집하는 일은 위험하다.

나의 workspace에 있는 파일인데 다른 user가 편집하여 owner가 바뀌어 버리면 체크인이 되지 않고 DB가 꼬여버리는 수가 있으니 이런 경우에는 반드시 체크인-체크아웃 기능을 이용하여 편집 권한을 주고 받아야만 한다.