chmod (change file mode)
chmod
는 대상의 파일 모드를 변경할 때 사용합니다. 여기서 파일 모드는 파일을 수정, 변경이나 실행, 또는 읽기 권한 등을 뜻합니다. 파일 모드에는 문자열 모드와 8진수로 이루어진 숫자 모드가 있습니다.
파일 모드를 확인은 ls -l
명령어를 사용합니다.
$ ls -l
drwxrwxrwx user group 255 dir1
-rw-r----x user group 50 example.txt
파일 모드는 가장 앞에 있는 문자 10개로 표시됩니다. 첫 번째칸은 파일의 종류를 표시하며, 디렉토리면 d
파일이면 -
로 표시됩니다.
그 다음 9개의 문자는 3개씩 3묶음으로 이루어집니다. 각 자리에는 -
r
w
x
로 표시됩니다. 각 문자가 무슨 뜻인지 간략하게 알아보고 아래에서 자세히 다루겠습니다.
-
: 권한 없음r
: 읽기 권한w
: 쓰기 권한x
: 실행 권한
첫 번째 묶음은 소유자의 권한, 소유자의 그룹의 권한, 다른 사용자의 권한을 뜻합니다.
그래서 ls 명령어로 조회한 내용을 확인해보면 dir1은 디렉토리이며, 사용자인 user와 사용자의 그룹인 group과 다른 사용자들 모두 읽고 쓰고 실행할 수 있다는 의미입니다.
다음 example.txt는 파일이고, 사용자는 읽고 쓰기가 가능하고, 그룹은 조회만 가능하며, 다른 사용자들은 실행만 가능합니다.
문자열 모드
문자열 모드는 알파벳과 기호를 이용하여 파일 모드를 변경할 수 있습니다.
chmod [options] [references][operator][permissions] file1 [file2 …]
- options : 명령어가 실행될 때 적용될 옵션을 나열하면 됩니다.
-R
: 폴더일 때, 폴더의 하위까지 모두 적용됩니다.-v
: 변경되고 있는 모든 파일을 표시합니다.
- references : 권한을 가질 대상을 지정합니다.
u
: 파일의 소유자g
: 파일을 소유한 그룹o
: 파일의 소유자나 소유한 그룹이 아닌 사용자a
: 모두 (=ugo)
- operator : 대상에게 권한을 추가하거나 제거할 수 있습니다.
+
: 대상에게 권한을 추가-
: 대상의 권한을 제거=
: 대상의 권한을 전부 제거한 뒤, 지정한 권한을 추가
- permissions : 특정 파일에 대상이 할 수 있는 행동을 나타냅니다.
r
: 파일을 읽거나 디렉토리 조회 가능w
: 파일에 쓰거나 디렉토리를 변경 가능x
: 파일을 실행하거나 디렉토리 조회 가능
example 파일 소유자에게 읽기, 쓰기 권한 부여
$ chmod u+rw example.txt
example 파일 소유자와 소유 그룹의 쓰기 권한 제거
$ chmod ug-w example.txt
example 파일 소유자의 권한을 모두 제거한 뒤, 쓰기 권한만 부여
$ chmod u=w example.txt
모든 사용자에게 example 파일 실행 권한 부여
$ chmod +x example.txt
8진수 숫자 모드
숫자 모드는 3, 4자리의 8진수를 이용해 파일 모드를 변경할 수 있습니다.
chmod [options] [x]xxx file1 [file2 …]
- options : 명령어가 실행될 때 적용될 옵션을 나열하면 됩니다.
-R
: 폴더일 때, 폴더의 하위까지 모두 적용됩니다.-v
: 변경되고 있는 모든 파일을 표시합니다.
- 첫 번째는 특별한 모드를 적용할 때 사용하며, 보통은 0이나 생략합니다.
- 두 번째부터 순서대로 사용자, 사용자의 그룹, 다른 사용자들의 권한을 설정할 수 있습니다. (각 자리는 권한은 8진수로 표현하며
4=r
,2=w
,1=x
입니다.)
example 파일에 대해서 사용자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹과 다른 사용자는 실행 권한만 부여
$ chmod 711 example.txt (= chmod u+rwx, go=x example.txt)
example 파일에 사용자에게만 쓰기 권한 부여
$ chmod 200 example.txt (= chmod u+w, go= example.txt)
chown (change the owner of a file)
chown
은 파일의 소유권을 바꿀 때 사용합니다. 해당 명령어는 root
계정이나 관리자 계정으로 실행 가능합니다.
chown [options] [user][:group] target1 [target2 …]
- options :
- user : 소유권을 가질 사용자 지정
- group :
:
을 접두사로 가지며, 소유권을 가질 그룹 지정 - target : 소유권을 바꿀 대상 지정 (하나는 필수이며, 여러 파일의 소유권을 한 번에 변경할 수도 있습니다.)
error.log 파일 소유권을 user1로 변경
$ chown user1 error.log
error.log 파일 소유권을 group1로 변경
$ chown :group1 error.log
dir1의 소유권을 root로 변경 (해당 디렉토리의 소유권만 root로 지정)
$ chown root dir1
dir1 및 하위의 소유권까지 모두 root로 변경
$ chown -R root dir1