2010. 11. 9. 08:53

File/Directory 권한 설정하기 (02)

(cont'd 2010/11/05 - [Research/Ubuntu] - File/Directory 권한 설정하기 (01))

chmod 명령은 file과 directory의 접근 권한을 변경시켜 줍니다. 아래 몇몇의 chmod 명령예를 통해, 그 사용법을 확인해 봅시다.

명령 원래의 권한 새로운 권한 설명 
chmod 0700 * drwx------ directory의 소유자는 directory 하부의 파일들을 read/write하고 현재의 directory로 변경할 수 있다. other users(root 제외)는 접근 권한이 없다.
chmod 0711 * drwx--x--x 0700과 동일하다. 다만, other users는 현재의 directory로 변경할 수 있으나, directory의 file을 보거나 변경할 수 없다. 이는 server를 견고하는데 유용한데, 다른이들이 directory의 내용을 열거하는것을 방지하기 때문이다. 그리고, 물론 이미 그 directory에 파일이 있다는 것을 알고 있다면, 그 접근을 허락한다.
chmod go+r drwx------ drwxr--r-- directory에 read 권한을 추가한다. other user에 x가 없기 때문에, other user는 directory의 내용을 볼 수 없다.
chmod 0777
chmod a=rwx
* drwxrwxrwx 모든 원한을 열어준다.
chmod 0000
chmod a-rwx
* d--------- 모든 권한을 닫는다. directory를 보호하기에 좋다. 그러나 root user이외로 실행되는 프로그램에서는 이 directory의 내용을 backup하는데에는 실패할 것이다.
chmod 666 * -rw-rw-rw file의 read/write 권한을 모두 열어준다.
chmod go-rw -rw-rw-rw- -rw------- 소유자 이외의 user는 보거나 변경 혹은 삭제할 수 없다.
chmod 644 * -rw-r--r-- 소유자만이 변경 삭제가 가능하고, 소유자 포함 모든 이는 볼 수는 있다.

처음의 0은 취소 가능합니다. (즉, 0777 대신 777로 할 수 있습니다.) 그 위치는 특별한 의미를 가집니다. UID 프로그램(4), GID 프로그램(2), sticky 프로그램(1)의 값을 각각 가지는 8진수로서, 그 명령은 그 값에 따라 실행하게 해줍니다. UID나 GID로 실행하게 되면, 할당된 user나 group 권한으로 실행하게 됩니다.
sticky bit를 directory에 전달하게 되면, user는 자신이 소유하지 않는 디렉토리 하부의 파일을 삭제하거나 이름을 변경할 수 있습니다. /tmp가 그 예가 되겠습니다. 즉, 정확한 권한을 주었으나, user들은 sticky directory의 파일들을 소유하지 않았음에도 파일의 내용을 변경할 수 있습니다. 마지막 권한 문자를 x대신 t를 사용하여 sticky directory로 할 수 있습니다. sticky bit 명령이 실행되면, 사용하지 않더라도 메모리에 상주하게 됩니다. 이는 과거의 unix의 특징이며, 현재 linux에서는 지원하지 않습니다.

-R은 chmod 명령의 유용한 옵션입니다. -R을 사용하면, 하부 directory와 file까지 recursive하게 권한을 변경시켜주도록 합니다.

$ sudo chmod -R 700 /tmp/test
$ sudo chmod -R 000 /tmp/test
$ sudo chmod -R a+rwx /tmp/test

-R은 지정한 directory 자체도 적용된다는 것을 명심하십시요.