리눅스 파일 권한 및 소유 변경

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

참고