소개
Linux 권한은 누가 파일을 읽고, 수정하고, 실행할 수 있는지를 결정합니다. RHCSA 작업에서는 일반적으로 권한 문자열을 검사하고, 숫자 및 기호 모드를 설정하고, 소유권을 변경하며, 의도한 그룹이 파일을 사용할 수 있도록 디렉토리를 구성해야 합니다.
이 실습에서는 /home/labex/project 디렉토리 내에서 직접 작업하게 됩니다. 준비된 파일을 검사하고, chmod를 사용하여 표준 파일 모드를 적용하고, 스크립트를 안전하게 활성화하고, root 소유의 핸드오프 (handoff) 파일에 대한 소유권을 가져오고, setgid 공유 디렉토리를 구성합니다.
파일 권한 필드 검사
이 단계에서는 권한을 변경하기 전에 먼저 권한 상태를 검사합니다. ls -l 출력의 첫 번째 필드는 파일 유형과 권한을 보여주며, 소유자 및 그룹 필드는 누가 해당 파일을 제어하는지 보여줍니다.
표준 LabEx 프로젝트 디렉토리로 이동합니다.
cd /home/labex/project
준비된 실습 트리 목록을 확인합니다.
ls -l permissions-lab
준비된 설정 파일을 검사합니다. 긴 목록 형식에서 모드, 소유자 및 그룹을 확인할 수 있습니다.
ls -l permissions-lab/configs
stat 명령어를 사용하여 파일 정보를 간결하게 확인합니다. %a는 숫자 모드를, %U는 소유자 이름을, %G는 그룹 이름을 출력합니다.
stat -c '%n %a %U %G' permissions-lab/configs/private.conf
root 소유의 핸드오프 파일을 검사합니다. 소유자와 그룹이 현재 root로 설정되어 있음을 확인합니다.
ls -l permissions-lab/shared/handoff.txt
숫자형 chmod 를 사용한 파일 모드 설정
이 단계에서는 chmod와 숫자 모드를 사용합니다. 세 자리 숫자는 사용자, 그룹, 기타 사용자의 권한을 나타냅니다. 예를 들어, 600은 사용자만 읽기/쓰기가 가능함을 의미하며, 644는 사용자는 읽기/쓰기가 가능하고 그룹 및 기타 사용자는 읽기만 가능함을 의미합니다.
프로젝트 디렉토리에서 시작합니다.
cd /home/labex/project
private.conf 파일을 소유자만 읽고 쓸 수 있도록 설정합니다. 이는 민감한 설정이 포함된 파일에 적합한 권한입니다.
chmod 600 permissions-lab/configs/private.conf
readme.txt 파일을 모든 사용자가 읽을 수 있고 소유자만 쓸 수 있도록 설정합니다.
chmod 644 permissions-lab/configs/readme.txt
stat 명령어로 모드를 검사합니다.
stat -c '%n %a' permissions-lab/configs/private.conf permissions-lab/configs/readme.txt
private.conf는 600, readme.txt는 644로 표시되어야 합니다.
기호형 chmod 를 사용한 스크립트 실행 활성화
이 단계에서는 기호형 권한을 사용합니다. 기호 모드를 사용하면 전체 숫자 모드를 다시 작성하지 않고도 특정 권한을 추가하거나 제거할 수 있습니다.
프로젝트 디렉토리에서 시작합니다.
cd /home/labex/project
스크립트를 변경하기 전에 검사합니다. 읽기는 가능하지만 실행은 불가능한 상태여야 합니다.
ls -l permissions-lab/scripts/check-inventory.sh
소유자와 그룹에 실행 권한을 추가합니다. u+x,g+x에서 u는 사용자, g는 그룹, +x는 실행 권한 추가를 의미합니다.
chmod u+x,g+x permissions-lab/scripts/check-inventory.sh
해당 경로에서 스크립트를 실행합니다.
permissions-lab/scripts/check-inventory.sh
예상 출력:
inventory check ok
최종 모드를 검사합니다. 이제 사용자 및 그룹에 대한 실행 비트가 포함되어 있어야 합니다.
stat -c '%n %a' permissions-lab/scripts/check-inventory.sh
핸드오프 파일의 소유권 변경
이 단계에서는 sudo chown을 사용하여 root 소유 파일의 소유권을 가져옵니다. 소유권 변경에는 일반적으로 관리자 권한이 필요하므로, 이 실습 파일에는 sudo를 사용하는 것이 적절합니다.
프로젝트 디렉토리에서 시작합니다.
cd /home/labex/project
현재 소유자와 그룹을 검사합니다. 파일은 처음에 root:root로 설정되어 있습니다.
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
소유자와 그룹을 labex:labex로 변경합니다. user:group 형식을 사용하면 한 번의 명령으로 두 필드를 모두 설정할 수 있습니다.
sudo chown labex:labex permissions-lab/shared/handoff.txt
파일 권한을 소유자 읽기/쓰기 및 그룹 읽기 전용으로 제한합니다.
chmod 640 permissions-lab/shared/handoff.txt
labex가 파일 소유자가 되었으므로 운영 라인을 하나 추가합니다.
printf 'Handled by labex after ownership update.\n' >> permissions-lab/shared/handoff.txt
최종 소유자, 그룹, 모드 및 내용을 검사합니다.
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
cat permissions-lab/shared/handoff.txt
setgid 를 사용한 공유 디렉토리 구성
이 단계에서는 공유 디렉토리를 구성합니다. 디렉토리에 진입하고 검색하려면 실행 권한이 필요합니다. 디렉토리에 setgid 비트를 설정하면 새로 생성되는 파일이 디렉토리의 그룹을 상속받게 되어, 팀이 공유 콘텐츠를 일관된 그룹으로 유지하는 데 도움이 됩니다.
프로젝트 디렉토리에서 시작합니다.
cd /home/labex/project
현재 디렉토리 모드를 검사합니다.
stat -c '%n %a %U:%G' permissions-lab/teamdrop
디렉토리 모드를 2775로 설정합니다. 앞의 2는 setgid 를 활성화하고, 775는 소유자와 그룹에 전체 권한을 부여하며, 기타 사용자에게는 읽기/실행 권한을 부여합니다.
chmod 2775 permissions-lab/teamdrop
공유 디렉토리 내에 파일을 생성합니다.
printf 'team handoff ready\n' > permissions-lab/teamdrop/status.txt
소유자와 그룹이 읽고 쓸 수 있도록 파일 모드를 설정합니다.
chmod 664 permissions-lab/teamdrop/status.txt
디렉토리와 새 파일을 검사합니다.
stat -c '%n %a %U:%G' permissions-lab/teamdrop permissions-lab/teamdrop/status.txt
cat permissions-lab/teamdrop/status.txt
요약
RHCSA 준비를 위해 표준 Linux 권한 및 소유권을 연습했습니다. 권한 필드를 검사하고, 숫자형 파일 모드를 적용하고, 기호형 chmod를 사용하여 스크립트 실행을 활성화하고, sudo chown으로 소유권을 변경하고, 안전한 파일 모드를 설정하고, 새 파일이 의도한 그룹을 상속받도록 setgid 공유 디렉토리를 구성했습니다.



