[Linux] 파일과 디렉터리의 소유권,허가권

참고교재:

 

이것이 리눅스다 with RedHat CentOS 8 - 예스24

- 리눅스 분야 5년간 부동의 1위,『이것이 리눅스다』최신 CentOS 8을 반영한 개정판 출간!2015년 출간 후 리눅스 도서 분야 부동의 베스트셀러 1위를 지켜오던 『이것이 리눅스다』가 CentOS 8 버전을

www.yes24.com


파일과 디렉터리의 소유권과 허가권

리눅스는 각각의 파일과 디렉터리마다 소유권과 허가권이라는 속성이 있다.

root 사용자가 자신의 홈 디렉터리에 다음과 같은 명령을 실행해 빈 파일을 만든 후 파일의 리스트를 살펴보자

touch sample.txt
ls -l

ls -l 명령을 통해 자세한 파일의 리스트

방금 생성한 sample.txt 파일 정보는 다음과 같다.

-


파일 유형
rw-r--r--


파일 허가권
1


링크 수
root


파일 소유자
이름
0


파일 크기(Byte)
10월 4일 19:54


마지막 변경 
날짜/시간
sample.txt


파일 이름

표시된 정보의 의미를 각 항목별로 확인해보자.

 

파일 유형

  • 파일이 어떤 종류인지 나타낸다. 디렉터리인 경우 ' d '가 일반적인 파일인 경우 ' - ' 가 표시된다.
    그 외에 b(블록 디바이스), c(문자 디바이스) , I(링크) 등이 있다.

 

파일 허가권

  • 파일 허가권(permission)은 rw-, r--, r-- 3개씩 끊어서 인식하면 된다.
    r은 read, w는 write , x는 execute의 약자다. 즉 rw-는 읽거나 쓸 수 있지만 실행할 수는 없다는 의미며 rwx로 표시되면
    읽고 쓰고 실행이 가능한 파일을 의미한다.
  • 또한 첫번째 rw-는 소유자(user)의 파일 접근 권한을, 두번째 r--는 그룹(group)의 파일 접근 권한을, 세번째 r--는 그 외 사용자(other)의 파일 접근 권한을 의미한다.
  • sample.txt 파일의 소유자는 읽거나 쓸 수 있고 그룹은 읽기만 가능하고 그 외 사용자도 읽기만 하능하도록 허가되어 있다는 의미이다. 

sample.txt 파일의 허가권을 다음과 같이 숫자(8진수)로도 표현할 수 있다.

소유권(User) 그룹(Group) 그 외 사용자(Other)
r w - r - - r - -
4 2 0 4 0 0 4 0 0
5 4 4

소유자의 허가권인 6이라는 숫자는 2진수 110이므로 rw-로 표현할 수 있고, 그룹의 허가권인 4라는 숫자는 2진수 100이므로 r--로 , 그 외 사용자 허가권인 4라는 숫자도 2진수로 100이므로 r--로 표현되는 것이다.

참고로 디렉터리(=폴더)의 경우 해당 디렉터리로 이동하려면 반드시 실행(x)권한이 있어야하므로 디렉터리는 일반적으로

소유자/그룹/기타 사용자 모두에게 실행(x) 권한이 설정되어 있을 것이다.

 

파일 확장명
Windows 의 경우 *.exe 실행파일, *.txt는 텍스트 파일 등과 같이 확장명으로 해당 파일의 종류를 판단 가능하지만,
리눅스는 확장자에 별 의미를 두지 않는다. 즉 실행 파일이든 텍스트 파일이든 모두 일반적으로 확장명을 갖지 않으며, 확장명을 갖더라도 편리함을 위해서일뿐 확장명이 파일의 종류를 판단하는 절대적 의미는 아니다. 그래서 해당 파일이 어떤 파일인지 알려면 file 명령을 사용해야 한다.

파일의 허가권을 변경하는 명령어로 chmod 명령이 있다. 

이 명령어는 root 사용자 또는 해당 파일의 소유자만 실행 가능하다.

chmod 777 sample.txt

명령을 실행하면 sample.txt 파일은 모든 사용자가 읽고 쓰고 실행할 수 있는 파일이 된다.

 

chmod 명령을 상대 모드(Symbolic method)로도 사용할 수 있다. chmod u+x 파일이름 명령은 

'소유자(user)에게 실행(eXecute)권한을 허가하라(+)' 는 의미이다. 예를 들면 u-wx는 사용자에게 쓰기와 실행 권한을 제거하라는 의미며, g+rx는 그룹에게 읽기와 실행 권한을 허가하라는 의미고, o+rwx는 그 외 사용자에게 읽기/쓰기/실행 권한을 허가하라는 의미이다.

 

파일 소유권

파일 소유권(ownership)은 파일을 소유한 사용자와 그룹을 의미한다. sample.txt 파일은 root라는 이름의 사용자가 소유자이며, 그룹도 root로 되어 있다. 파일의 소유권을 바꾸는 명령어는 chown 이다.

사용법은 chown 새로운사용자이름(.새로운그룹이름) 파일이름 명령의 형식으로 사용하면 된다.예를 들어

chwon centos sample.txt 명령은 sample.txt 파일의 소유자를 centos 사용자로 바꾸라는 의미고,

chwon centos.centos sample.txt 명령은 파일의 그룹도 centos 그룹으로 바꾸라는 의미다.

또한 chgrp centos sample.txt 명령은 그룹만 centos 그룹으로 변경하라는 의미이다.

 

 

파일 허가권 및 소유권 실습

 

1. 연습용 파일 생성 후 파일 속성 확인

2. 파일의 속성 변경

#whoami	-> 현재 사용자가 누군지 알려줌
#./test	-> 현재 디렉터리의 test파일을 실행 ('./는 현재 디렉터리에 있는 파일을 의미)

허가 거부 라는 메세지가 나왔다. 현재 사용자인 root의 실행 권한이 rw-이므로 실행할 수 없기 때문이다.

 

3. 파일이 실행 가능하도록 허가권을 변경

 

  • 파일이 실행 가능하도록 rwxr-xr-x (755)로 변경

  • ./ test 명령을 입력 후 실행

test 파일

실행은 되었지만, 첫 번째 행인 아무거나 입력...은 명령이 아니므로 오류가 발생했고, 두 번째 행인 

ls /var는 실행이 되어 /var 디렉터리의 내용이 출력되었다.

이렇듯 실제로 실행 코드가 없는 파일을 실행되도록 변경하는 것은 주의해야 한다.

 

4. 파일의 소유권 변경

  • chown centos test 명령을 입력해 test 파일의 소유권을 centos 사용자로 변경

4-1 파일의 그룹 소유권 변경

  • chgrp centos test 명령을 입력해 centos 그룹으로 변경

사용자와 그룹을 한꺼번에 바꾸려면 chown centos.centos test  또는 centos:centos test 명령을 입력

 

5. centos 사용자로 접속 후 test파일의 속성을 모두 읽기/쓰기/실행(777)할 수 있도록 변경

#su - centos	-> centos 사용자로 접속(root가 접속할 경우 암호를 물어보지 않음)
#pwd		-> 현재 디렉터리 확인(centos 사용자의 홈 디렉터리가 나옴)
#ls -l /root/test
#ls -ld /root	-> /root 디렉터리의 속성 확인

앞에서 test 파일의 소유권을 centos에게 넘겼지만 centos사용자는 /root/test 디렉터리의 접근이 거부됐다.

그 이유는 /root 디렉터리의 속성이 r-xr-x---로 되어있기 때문이다. 기타 사용자 허가권이 읽기/쓰기/실행 권한이

허가되지 않았으므로 centos 사용자는 /root 디렉터리의 접근이 거부된 것이다. 그래서 /root 디렉터리 안에 있는 

test 파일의 소유자가 centos 사용자에게 있더라도 사용할 수 없다.

 

5-1. root 사용자로 test 파일을 /home/centos 디렉터리로 옮긴 후 허가권을 변경

#exit			-> 다시 원래 접속한 사용자(root)로 돌아감
#mv test ~centos	-> centos는 centos 사용자의 홈 디렉터리(/home/centos와 동일)
#su - centos
ls -l test
chmod 777 test
ls -l test

5-2 다시 root 사용자에게 소유권을 변경

  • chown root.root test 명령을 입력해 test의 소유권을 다시 root 사용자에게 돌려준다.

그런데 명령을 허용하지 않는다는 메세지가 출력된다. 정상적인 상황이다. 

파일의 소유권을 바꾸는 chown 명령은 root  사용자만 실행 가능하다.