리눅스 파일에는 소유자, 그룹, 그 밖 사용자에게 각각 읽기, 쓰기, 실행 권한이 있다. chmod가 권한을 바꾸고, chown이 소유자와 그룹을 바꾼다. ls -l의 앞부분이 지금 값을 보여 준다.
숫자로 지정
읽기는 4, 쓰기는 2, 실행은 1이다. 한 자리 숫자는 그 셋을 더한 값이다.
chmod 644 file.txt
chmod 755 script.sh
chmod 700 secret.txt644는 `rw-r--r--`다. 소유자는 읽고 쓰고, 그룹과 그 밖은 읽기만 한다. 755는 `rwxr-xr-x`다. 소유자는 모두 할 수 있고, 나머지는 읽고 실행한다. 700은 소유자만 읽고 쓰고 실행한다.
디렉터리의 실행 권한은 그 안으로 들어가는 권한이다.
- 읽기와 실행이 있으면 목록을 보고 파일도 연다. - 실행만 있으면 이름을 아는 파일은 열 수 있고, 목록은 보지 못한다. - 읽기만 있으면 이름은 보여도 그 안의 파일을 열지 못한다.
그래서 공유 디렉터리는 755, 혼자 쓰는 디렉터리는 700을 많이 쓴다.
기호로 바꾸기
`u`는 소유자, `g`는 그룹, `o`는 그 밖, `a`는 모두다. `+`는 추가, `-`는 제거, `=`는 그 값으로 맞춘다.
chmod u+x script.sh
chmod g-w file.txt
chmod a+r file.txt
chmod o= file.txt
chmod -R u+rX shared/`-R`은 하위까지 적용한다. 대문자 `X`는 디렉터리이거나 이미 실행 권한이 있는 파일에만 실행 권한을 준다. `chmod -R a+x`는 일반 파일까지 전부 실행 파일이 되므로, 디렉터리만 열고 싶을 때는 `X`가 맞다.
새 파일의 기본 권한
새 디렉터리의 출발점은 777, 새 파일의 출발점은 666이다. 파일은 만들 때부터 실행 권한을 받지 않는다. umask에 있는 비트는 여기서 빠진다.
umask가 022이면 디렉터리는 755, 파일은 644가 된다.
umask
umask -S셸에서 umask를 바꾸면 그 셸에서 새로 만드는 파일에만 적용된다. 이미 있는 파일은 chmod로 고친다.
chown
chown user file.txt
chown user:staff file.txt
chown :staff file.txt
chown -R user:staff project/콜론 앞은 소유자, 뒤는 그룹이다. 그룹만 바꿀 때는 `:staff`처럼 적는다. 다른 사람의 파일 소유자를 바꾸려면 보통 root 권한이 필요하다.
`ls -l`에서 `x` 자리에 보이는 `s`와 `t`는 setuid, setgid, sticky다. 의미를 확인하지 않은 채 `4755` 같은 값을 붙이지 않는다. 설명이 필요하면 `man chmod`의 해당 절을 본다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.