출처 : https://www.youtube.com/watch?v=fA68g96PEpA&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=19
리눅스는 각 파일과 디렉토리마다 소유권과 허가권이라는 속성이 있다.
root 사용자가 자신의 홈 디렉토리에서 touch sample.txt 명령을 실행해 빈 파일을 만들고 ls -l 명령을 실행하면 다음과 같이 파일의 정보가 터미널에 표시된다.
-(파일 유형) rw-r--r--(파일 허가권). 1(링크 수) root(파일 소유자 이름) root(파일 소유그룹 이름) 0(파일 크기 Byte) 12월 18 21:22 (마지막 변경 날짜/시간) sample.txt(파일 이름)
파일 유형
파일 유형이란 파일의 종류를 나타낸다. 디렉토리 = 'd', 파일 = '-', 블록 디바이스(HDD, CD/DVD 등의 저장 장치) = 'b', 문자 디바이스(키보드, 마우스, 프린터 등의 입출력 장치) ='c', 링크(바로가기 아이콘) = 'l' 등으로 표시된다.
파일 허가권 (Permission)
파일 허가권이란 파일을 읽고, 쓰고, 실행할 수 있는 권리를 의미한다.
9개의 문자로 이루어져 있으며 rw-, r--, r-- 3개씩 끊어서 읽는다.
r, w, x 3개의 문자로 표현되어 있으며 r은 read, w는 write, x는 execute을 의미한다.
첫번째 rw- 는 소유자(User)의 파일 접근 권한을 나타낸다. rw-는 read와 write 권한을 가지고 있고, execute 권한은 없다는 것을 의미한다.
두번째 r-- 는 그룹(Group)의 파일 접근 권한을 나타낸다. r--는 read 권한을 가지고 있고, write와 execute 권한은 없다는 것을 의미한다.
세번째 r-- 는 그 외의 사용자(Other)의 파일 접근 권한을 나타낸다. r--는 read 권한을 가지고 있고, write와 execute 권한은 없다는 것을 의미한다.
8진수의 숫자로도 표시가 가능하다. ex) rw- = 4 + 2 + 0 = 6
chmod 명령으로 파일 허가권을 변경할 수 있다.
chmod는 root 사용자와 해당 파일의 소유자만 실행할 수 있다.
ex) chmod 777 sample.txt : sample.txt 파일의 허가권이 모든 사용자와 그룹이 읽고 쓰고 실행할 수 있도록 변경 (rwxrwxrwx)
파일 소유권 (Ownership)
파일 소유권이란 파일을 소유한 사용자와 그룹을 의미한다. sample.txt 파일은 root라는 이름의 사용자가 소유자며 그룹도 root이다.
chown + 새로운 사용자 이름(.새로운 그룹 이름) + 파일 이름 명령으로 파일의 소유권을 바꿀 수 있다.
chgrp + 그룹 이름 + 파일 이름 명령으로 그룹만 해당 그룹으로 변경할 수 있다.
파일의 허가권 및 소유권 실습
- 파일의 허가권에 대한 개념과 명령어를 익힌다.
- 파일의 소유권에 대한 개념과 명령어를 익히고, 보안과 관련된 내용을 확인한다.
파일 생성 및 소유권 확인
nano test 파일을 하나 생성한다.
첫째 줄에 아무 내용을 쓰고 둘째 줄에는 ls /var 명령어를 입력한다. 저장하고 나가보자.
ls -l test 명령을 실행하면 test 파일의 정보가 표시된다.
파일 허가권을 보면 rw- r-- r-- 이다. 파일 소유자인 root는 read와 write가 가능하고, 나머지 그룹과 사용자들은 read만 가능하다.
파일 속성(파일 허가권) 변경
whoami 명령을 입력하면 현재 사용자가 누구인지 알려준다. root 사용자로 접속하고 있으므로 root 가 나타난다.
./test 명령을 통해 test 파일을 실행하는 명령을 입력했지만 파일 소유자인 root 사용자는 execute(실행) 권한이 없기 때문에 허가 거부 메시지가 나타나게 된다.
chmod 755 test 명령으로 test의 파일 허가권을 7(rwx) 5(r-x) 5(r-x) 로 변경한다.
ls -l test 명령으로 파일을 확인하면 파일 허가권이 변경된 것을 확인할 수 있다.
다시 ./test 명령을 실행하면 첫 번째 행인 안녕하세요 ~~ 는 명령이 아니기 때문에 에러 메시지가 출력되고, 두번째 행의 ls /var 명령이 실행되어 /var 디렉토리의 내용이 출력되게 된다.
파일 소유권 변경
chown rocky test 와 chgrp rocky test 명령을 통해 파일의 소유자와 소유 그룹을 root에서 rocky 로 변경한다.
ls -l test 명령을 실행하면 test 파일의 소유자와 소유 그룹이 rocky로 변경된 것을 확인할 수 있다.
su - rocky 명령을 실행하면 rocky 사용자로 접속하게 된다.
whoami 명령을 실행하면 rocky 사용자로 접속했다는 것을 확인할 수 있다.
ls -l /root/test 명령을 실행하면 허가 거부가 출력된다. test 파일의 소유권을 rocky 사용자에게 넘겼음에도 /root 디렉토리에 속성이 r-xr-x---로 root 외의 다른 사용자는 그 어떤 권한도 가지고 있지 않기 때문에 rocky 사용자는 /root 디렉토리의 접근이 거부되어 /root 디렉토리 안에 있는 test 파일을 사용할 수가 없게 된다.
rocky 사용자에게 root 디렉토리 접근 권한을 주는 것 보다는 test 파일을 rocky 디렉토리로 옮기는 방법이 보안상 더 안전하다.
exit 로 로그아웃을 하면 다시 root 사용자로 돌아오게 된다.
mv test ~rocky/ 명령어를 통해 test 파일을 rocky 사용자의 홈 디렉토리로 이동시킨다.
다시 rocky 사용자로 접속해서 ./test 명령을 실행하면 정상적으로 동작하는 것을 확인할 수 있다.
우리가 test 파일을 다 사용하고 다시 root 사용자에게 test 소유권을 돌려준다고 해보자.
chown root.root test 명령으로 root 사용자에게 다시 test 파일의 소유권을 돌려주려고 하면 '명령을 허용하지 않음'이라는 메시지가 출력된다.
chown 명령은 root 사용자만 실행할 수 있는 명령이기 때문에 일반 사용자가 명령하면 허용되지 않는다.
exit 명령으로 다시 root 사용자로 돌아와서 rocky 디렉토리에 있는 test 파일을 root 디렉토리로 옮긴다.
그 다음 root 사용자로 chown root.root test 명령을 실행하면 test 파일의 소유권을 성공적으로 root 사용자에게 돌려줄 수 있다.
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (9) - 프로그램 설치를 위한 RPM 명령 (0) | 2023.12.19 |
---|---|
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (8) - 링크(하드 링크, 심볼릭 링크) (0) | 2023.12.19 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (6) - 사용자와 그룹 관련 명령 (1) | 2023.12.18 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (5) - 리눅스 기본 명령 (1) | 2023.12.18 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (4) - 리눅스 필수 개념과 명령 : 마운트와 CD/DVD/USB의 활용 (1) | 2023.12.18 |