다음은 ls -l 명령어를 통해 살펴본 index.html 파일의 정보이다.
허가권 (Permission)
파일 및 디렉토리의 권한은 소유자 권한 (UID), 그룹 권한 (GID), 그 외 사용자 권한 (OTHER) 순으로 기재되어있으며, UID > GID > OTHER 순으로 우선순위가 결정된다. 따라서, UID 와 GID 가 같은 경우에는 UID 권한으로 실행된다.
1) r 권한
read 의 약자로, 4 의 값을 가지며 읽기 권한을 의미한다.
- 파일에서의 r 권한 : 문서 열람 권한을 의미한다. (cat , vi ,......)
- 디렉토리에서의 r 권한 : 디렉토리 열람 권한을 의미한다. (ls....)
2) w 권한
write 의 약자로, 2 의 값을 가지며 쓰기 권한을 의미한다.
- 파일에서의 w 권한 : 문서 수정, 저장 및 쓰기 권한을 의미한다. ( vi......)
- 디렉토리에서의 w 권한 : file / dir 생성 삭제 이름변경 (touch ,mkdir ,rm ,mv ..... )
3) x 권한
excute 의 약자로, 1의 값을 가지며 접근 및 실행 권한을 의미한다.
- 파일에서의 x 권한 : 파일에 대한 실행권한 (일반사용자 sh명령, 스크립트, 명령어...)
- 디렉토리에서의 x 권한 : 디렉토리 접근 권한 (cd ..... )
[예제]
접근 권한 관련 명령어 (cd), 읽기 권한 관련 명령어 (ls), 쓰기 권한 관련 명령어 (touch)
1) 1번 예제
- cisco 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
- test 사용자 : 읽기, 접근 권한 (ls, cd)
- yejun 사용자 : 읽기, 접근 권한 (ls, cd)
2) 2번 예제
- cisco 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
- test 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
- yejun 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
3) 3번 예제
- cisco 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
- test 사용자 : 읽기, 쓰기 권한이 있으나 접근 권한이 부여되지 않았으므로, 관련 명령어 사용 불가 (ls, touch)
- yejun 사용자 : 읽기, 접근 권한 (ls, cd)
4) 4번 예제
- cisco 사용자 : 읽기, 접근 권한 (ls, cd)
- test 사용자 : 읽기, 쓰기 권한이 있으나 접근 권한이 부여되지 않았으므로, 관련 명령어 사용 불가 (ls, touch)
- yejun 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
5) 5번 예제
- cisco 사용자 : 읽기, 쓰기, 접근 권한 (ls, touch, cd)
- test 사용자 : 읽기, 접근 권한 (ls, cd)
- yejun 사용자 : 접근 권한 (cd)
5) 6번 예제
- cisco 사용자 : x
- test 사용자 : x
- yejun 사용자 : x
chmod ( 허가권 변경 )
파일이나 디렉토리에 대한 허가권을 변경한다. -R 옵션을 사용하면 하위 디렉토리 및 파일까지 재귀적으로 변경한다.
1) numeric ( 숫자 )
chmod [숫자] [파일 및 디렉토리] 형식으로 허가권을 변경한다.
/chtest 디렉토리의 하위에 1, 2, 3, 4 라는 이름의 파일 총 4개를 생성하였다. 현재 모든 파일들의 허가권은 -rw-r--r-- 로 644 값을 가지고 있음을 확인할 수 있다.
1번 파일의 허가권을 111 로 변경한다. 111 은 --x--x--x 와 동일하다.
2번 파일의 허가권을 222 로 변경한다. 222 는 -w--w--w- 와 동일하다.
3번 파일의 허가권을 456 으로 변경한다. 456 은 r--r-xrw- 와 동일하다.
4번 파일의 허가권을 753 으로 변경한다. 756 은 rwxr-x-wx 와 동일하다.
앞선 과정에서 111로 설정되었던 1번 파일의 허가권을 777 로 변경한다. 777 은 rwxrwxrwx 와 동일하다.
2) symbolic
chmod [문자 + 기호] 형식으로 허가권을 변경한다. u 는 소유자 권한, g 는 그룹 권한, o 는 그 외 사용자 권한, a 는 전체 사용자 권한 을 의미한다. 그리고 부분적으로 권한을 부여할때는 +, 부분적으로 권한을 회수할 때는 -, 특정 권한을 부여할 때는 = 기호를 사용한다.
현재 /chtest 디렉토리 하위에 위치한 4개 파일들의 허가권은 다음과 같다.
rwxrwxrwx 권한을 가지던 1번 파일에서 u 사용자 권한 rwx 회수, g 그룹 권한 rwx 회수, o 그 외 사용자 권한 rwx 를 회수하여 모든 권한이 --------- 로 해제된 것을 확인할 수 있다.
모든 권한이 회수되었던 1번 파일에 u 사용자 권한 rx 부여, g 그룹 권한 w 부여, o 그 외 사용자 권한 x 를 부여하였다. 여기까지 살펴보면 -r-x-w---x 가 되어야 하지만, a 모든 사용자에 대해 r 권한을 부여했으므로 -r-xrw-r-x 권한을 가지는 것을 확인할 수 있다.
-r-xrw-r-x 권한을 가지던 1번 파일에 대해 u 사용자 권한 r 회수 + w 부여, a 모든 사용자 권한 x 를 부여하였으므로 --wxrwxr-x 권한으로 변경된 것을 확인할 수 있다.
--wxrwxr-x 권한을 가지던 1번 파일에 대해 u 사용자 권한 wx 회수, g 그룹 권한 wx 회수 및 r 부여, a 모든 사용자 x 를 회수하였으므로 ---r--r-- 권한으로 변경된 것을 확인할 수 있다.
---r--r-- 권한을 가지던 1번 파일에 대해 u 사용자 권한은 --x , g 그룹 권한은 -w- 을 부여하였기에 ---x-w-r-- 권한으로 변경되어야 한다. 하지만, a 모든 사용자 권한을 r-- 설정하도록 하였기 때문에 -r--r--r-- 권한으로 변경된 것을 확인할 수 있다.
chown, chgrp (소유권 변경)
1) chown 명령어
파일 및 디렉토리의 소유자를 변경한다. -R 옵션을 사용하면 하위 디렉토리 및 파일까지 재귀적으로 변경한다.
특수 기호 사용 X : 파일 및 디렉토리의 소유자 (UID) 만을 변경한다.
. (dot) 기호 : 기호 앞에 대상 파일 및 디렉토리를 지정하면 소유자 + 그룹 변경, 뒤에 지정하면 그룹만 변경한다.
: (colon) 기호 : . (dot) 기호의 사용법과 동일하다.
실습 전, 사전 환경 설정을 위해 /chown 디렉토리를 만들었다.
/chown 디렉토리의 하위에 1, 2, 3, 4, 5, 6, 7, 8 이라는 이름의 총 8 개 파일을 생성한다. 현재 모든 파일의 소유권은 다음과 같다. UID -> root, GID -> root
*참고*
다수의 규칙적인 이름을 가진 파일을 생성할 때는 스크립트를 사용하는 편이 좋다.
for i in {1..8}; do touch $i done
기호 사용없이 파일 1번의 소유권을 korea 로 변경하고자 하였으므로, 해당 파일의 소유자가 korea2 로 변경된 것을 확인할 수 있다.
기호 앞에 소유권을 지정하였으므로, 2번 파일의 소유자와 그룹 소유권이 모두 변경된 것을 확인할 수 있다.
기호 뒤에 소유권을 지정하였으므로, 3번 파일의 그룹 소유권만 변경된 것을 확인할 수 있다.
기호 앞뒤로 소유권을 모두 지정하면, 4번 파일이 순차적으로 소유자(UID):소유 그룹(GID) 으로 변경된 것을 확인할 수 있다,
기호 사용없이 파일 5번의 소유권을 변경하고자 하였으므로, 해당 파일의 소유자가 변경된 것을 확인할 수 있다.
.(dot) 기호 사용법은 : (colon) 사용법과 동일하다. 따라서 기호 앞에 소유권을 지정하게 되면, 소유자 및 그룹 소유권까지 모두 변경되는 것을 확인할 수 있다.
기호 뒤에 소유권을 지정하였으므로, 7번 파일의 그룹 소유권만 변경된 것을 확인할 수 있다.
기호 앞뒤로 소유권을 모두 지정하면, 8번 파일이 순차적으로 소유자(UID):소유 그룹(GID) 으로 변경된 것을 확인할 수 있다,
2) chgrp 명령어
파일 및 디렉토리의 그룹 소유권만을 변경한다. -R 옵션을 사용하면 하위 디렉토리 및 파일까지 재귀적으로 변경한다.
chown 명령어와 달리 그룹 소유권만 변경 가능하므로, 1번 파일의 소유 그룹이 변경된 것을 확인할 수 있다.
허가권, 소유권 변경을 통한 접근 예제
먼저, 테스트 환경을 구축하기 위해 /ctest 디렉토리를 생성한 후 이동한다.
/ctest 디렉토리의 하위에 스크립트를 활용하여 test1 ~ test7 까지 총 7개의 디렉토리를 생성한다.
그 후, /ctest/test1 ~ /ctest/test7 디렉토리의 하위에 test1 ~ test7 까지 총 7개의 파일을 생성한다. 즉, /ctest/test1/test1 ~ /ctest/test7/test7 까지 생성된다.
실습 환경이 모두 조성되면, 위와 같이 디렉토리의 소유권과 허가권을 변경한다.
/ctest/test1 ~ /ctest/test7 디렉토리의 허가권과 소유권은 다음과 같다. (sevas 계정에서 실습)
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)
'OS > Rocky' 카테고리의 다른 글
[Linux /Rocky] 웹 브라우저로 파일 및 디렉토리 권한 확인 (0) | 2025.01.14 |
---|---|
[Linux / Rocky] FTP 로 파일 권한 확인 (0) | 2025.01.13 |
[Linux / Rocky] 리눅스 계정 관리 (0) | 2025.01.11 |
[Linux / Rocky] 사용자 환경 설정 파일 (0) | 2025.01.09 |
[Linux / Rocky] vi 에디터 사용 예제 (0) | 2024.12.30 |