리눅스는 하나의 컴퓨터를 여러 사람이 사용할 수 있는 다중 사용자 운영체제(OS)이기 때문에 권한 관리가 매우 중요합니다. 파일과 디렉토리의 권한을 변경하고 소유권을 변경하는 방법을 알아봅시다. 보안에 중요한 내용이므로 Linux 관리자가 되려면 정확히 이해하고 넘어가는 것이 좋습니다.
Linux 파일, 디렉토리 권한 확인
ls-l 명령을 사용하여 파일, 디렉토리 목록을 출력하면 권한(퍼미션, 허가권)을 확인할 수 있습니다.
- rwxr-xr-x1 pi pi5720 Jul3 20:06 a.out-rw-r–r-1 pi pi722 Jul2 21:12 crontab.bak-rw-r–1 pi pi52 Jul2 21:10 test.c
- 출력 결과는 각각 파일의 종류와 권한(퍼미션), 링크 수, 사용자(소유자), 그룹, 파일 크기, 수정 시간, 파일 이름을 나타냅니다.
- – rwxr-xr-x1 pi pi5720 Jul 3 20:06 a.out
- 파일의 권한은 ‘-rwxr-xr-x’에서 확인할 수 있으며 소유권은 ‘pipi’에서 확인할 수 있습니다.앞에 있는 pi는 사용자를 나타내고 뒤에 있는 pi는 그룹을 나타냅니다.(리눅스에서는 기본적으로 사용자와 같은 이름의 그룹을 만듭니다.)
- – rwxr-xr-x 위의 정보는 네 부분으로 나눌 수 있습니다.
- – 파일(-), 디렉토리(d)를 구분 rwx 사용자(owner, 소유자) 권한(퍼미션) r-x 그룹(group) 권한 r-x 다른 사용자(other) 권한
- rwx는 각각 읽기(read), 쓰기(write), 실행(execute) 권한을 나타냅니다.(참고로 디렉토리의 경우 실행 권한이 없으면 디렉토리에 들어갈 수 없습니다.)
- rwxr-xr-x1 pipi5720 Jul 320:06 a.out 상의 정보의 권한 부분만을 해석하면 a.out은 파일(-)이다.사용자가 읽고 쓰고 실행할 수 있으며 그룹과 다른 사용자는 읽기 실행(r-x)할 수 있다.사용자(소유자)는 pi이고 그룹도 pi이다.
파일 권한 변경(chmod 명령어 사용법) 파일, 디렉토리의 권한을 변경하려면 chmod 명령을 이용해야 합니다. chmod 명령은 다양한 방법으로 파일 권한을 변경할 수 있지만 그 방법을 정리합니다.
개별적으로 파일 권한을 변경하다
chmodg+wtest.c 그룹에 쓰기 권한을 부여한다.chmodo-retest.c 다른 사용자에게 읽기 권한을 빼앗는다.
위와 같이 사용자, 그룹, 다른 사용자를 구분하여 권한을 지정합니다. u 사용자, g그룹, o 다른 사용자, a 모두에 권한을 지정할 수 있고 더하기(+)를 사용하여 권한을 추가하고 빼기(-)를 사용하여 권한을 삭제할 수 있습니다.
다른 사용 예 chmodu+xfile.txt 소유자에게 실행 권한을 부여한다.chmodg+rwxfile.txt 그룹에 읽고 쓰기, 실행 권한을 부여한다.chmodgo+rfile.txt 그룹과 다른 사용자에게 읽기 권한을 부여한다.
숫자로 한번에 권한 변경하는 리눅스를 자주 사용하는 사람에게는 위와 같은 방식이 번거롭게 느껴집니다. 따라서 숫자를 활용하여 사용자, 그룹, 다른 사용자의 권한을 한 번에 지정할 수 있습니다.
chmod000 test.c 사용자, 그룹, 다른 사용자의 모든 권한을 삭제한다.chmod777 test.c 사용자, 그룹, 다른 사용자의 모든 권한을 추가한다.chmod700test.c 사용자에게만 모든 권한을 부여한다.chmod744 test.c 사용자에게는 모든 권한을 부여하고 그룹, 다른 사용자에게는 읽기 권한만 부여한다.
744라는 숫자는 이렇게 해석할 수 있습니다.
사용자 rwx4+2+1=7
그룹 r-4
다른 사용자 r-4
읽기는 4, 쓰기는 2, 실행은 1로 나타내며 필요한 권한을 더해 지정할 수 있습니다. (2진수 비트 계산이므로 4, 2, 1의 형식을 하고 있습니다.)
파일 소유권 변경(chown 명령어, 루트 사용자만 가능) 리눅스 chmod 명령은 파일, 디렉토리의 권한(퍼미션, 허가권)을 변경하는 역할을 합니다. 한편, chown 명령을 사용하면 파일, 디렉토리의 사용자, 그룹을 변경할 수 있습니다. 간단히 말하면 파일의 소유권을 변경하는 것입니다.
sudochownuser 01a.outchown 명령으로 파일을 사용자(소유자)를 user01로 변경한다.
sudochgrpuser01 test.cchgrp 명령에서 파일의 그룹을 user01로 변경한다.그룹만 변경할 때 chgrp 명령어를 사용한다.일반 사용자는 자신이 속한 그룹에서만 변경이 가능하다.
sudochownuser 02.user 02 contab.bakchown 명령에서 파일의 사용자와 그룹을 동시에 변경한다.
sudochownuser 01tmp/디렉트리의 사용자(소유자)를 변경한다.
sudochown-Ruser 01tmp/-R 옵션을 사용하면 디렉토리와 그 안에 들어있는 모든 파일의 사용자를 변경한다.