소개
LabEx Corporation의 4일 차에 오신 것을 환영합니다, 요새의 수호자님! 어제 Project Phoenix의 심각한 문제를 해결하며 보여준 뛰어난 탐정 실력 덕분에, CTO는 당신을 프로젝트 전체의 보안 책임자로 임명했습니다.
"더 이상의 보안 사고는 용납할 수 없습니다." CTO가 아침 브리핑에서 설명합니다. "당신의 조사 결과, 이전의 보안 설정이 매우 미흡했다는 사실이 밝혀졌습니다. Sarah Chen과 개발 팀이 일정대로 Project Phoenix를 완료하려면 완벽한 보안 환경이 필요합니다."
최근의 위기는 강력한 보안 조치의 필요성을 일깨워주었습니다. 개발 속도를 높이기 위해 새로운 계약직 직원이 팀에 합류할 예정이므로, 당신은 접근 제어가 완벽하게 구성되도록 해야 합니다. 안전한 파일 시스템을 생성하고, 정확한 소유권을 할당하며, 세밀한 권한을 설정하고, TechNova의 지적 재산을 보호할 수 있는 협업 공간을 구축해야 합니다.
Project Phoenix의 성공, 그리고 회사의 미래가 오늘 당신이 구축할 디지털 요새에 달려 있습니다. 시스템을 안전하게 보호해 봅시다!
새 프로젝트를 위한 보안 파일 생성
첫 번째 작업은 민감한 프로젝트 키를 저장할 파일을 만드는 것입니다. 이 파일은 엄격하게 기밀로 유지되어야 하며, 소유자만 접근할 수 있어야 합니다.
작업
~/project/phoenix_project디렉토리 내에project_keys.txt라는 이름의 비어 있는 새 파일을 생성합니다.- 이 파일의 권한을 설정하여 소유자만 읽기 및 쓰기 권한을 가지도록 하고, 다른 사용자(같은 그룹의 사용자 포함)는 전혀 접근할 수 없도록 합니다.
요구 사항
- 파일 이름은 반드시
project_keys.txt여야 합니다. - 파일은 반드시
~/project/phoenix_project/project_keys.txt경로에 위치해야 합니다. chmod명령어를 사용하여 숫자 표기법으로 권한을 설정하세요.
힌트
touch명령어를 사용하여 빈 파일을 생성할 수 있습니다.- 권한의 숫자 값을 기억하세요: 읽기(4), 쓰기(2), 실행(1).
- 최종 권한은
600이어야 합니다(소유자는 읽기+쓰기, 그룹 및 기타 사용자는 권한 없음).
예시
작업을 완료하면 다음과 같이 보여야 합니다:
$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt
파일 권한 -rw-------는 다음을 의미합니다:
- 소유자는 읽기 및 쓰기 권한을 가짐
- 그룹은 권한 없음
- 기타 사용자는 권한 없음
프로젝트 리소스의 소유권 할당
Project Phoenix는 Sarah Chen의 개발 팀이 이끌고 있으며, 기술 리드인 dev_lead가 핵심 개발 작업을 관리합니다. 이 사용자는 이번 주 내내 작업해 온 developers 그룹에 속해 있습니다. 적절한 접근 제어를 보장하기 위해 모든 프로젝트 파일과 디렉토리의 소유권을 이전해야 합니다.
작업
~/project/phoenix_project디렉토리와 그 안의 모든 내용물의 소유자를dev_lead사용자로 변경합니다.~/project/phoenix_project디렉토리와 그 안의 모든 내용물의 그룹 소유자를developers그룹으로 변경합니다.
요구 사항
- 사용자 소유자는
dev_lead여야 합니다. - 그룹 소유자는
developers여야 합니다. - 소유권 변경은
~/project/phoenix_project내의 모든 파일과 하위 디렉토리에 재귀적으로 적용되어야 합니다. chown명령어를 사용해야 합니다.
힌트
chown명령어는user:group구문을 사용하여 사용자와 그룹을 동시에 변경할 수 있습니다.chown명령어에서 파일과 디렉토리에 재귀적으로 작동하게 하는 옵션을 찾아보세요.man chown명령어가 도움이 될 것입니다.- 현재 파일들의 소유자가 root이므로, 소유권을 변경하려면
sudo를 사용해야 합니다.
예시
작업을 완료하면 다음과 같이 보여야 합니다:
$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/
$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src
이제 모든 파일과 디렉토리의 소유자는 다음과 같아야 합니다:
- 사용자:
dev_lead - 그룹:
developers
메인 프로젝트 디렉토리 보안 설정
소유권이 올바르게 설정되었으므로, 이제 메인 프로젝트 디렉토리인 ~/project/phoenix_project에 대한 기본 권한을 설정해야 합니다. 정책은 다음과 같습니다: 소유자는 모든 제어 권한을 가져야 하고, 그룹은 파일을 나열하고 디렉토리에 들어갈 수 있어야 하며, 외부인은 전혀 접근할 수 없어야 합니다.
작업
~/project/phoenix_project디렉토리에 대한 권한을 설정합니다.
요구 사항
- 소유자(
dev_lead)는 읽기, 쓰기, 실행 권한을 가져야 합니다. - 그룹(
developers)은 읽기 및 실행 권한을 가져야 합니다. - 기타 사용자는 권한이 없어야 합니다.
chmod명령어를 사용하여~/project/phoenix_project디렉토리 자체에만(재귀적이지 않게) 이 권한을 적용하세요.- 디렉토리의 소유자가
dev_lead이므로, 권한을 변경하려면sudo를 사용해야 할 수도 있습니다.
힌트
- 디렉토리에 대한 "실행" 권한은 해당 디렉토리로
cd할 수 있게 해줍니다. - 소유자, 그룹, 기타 사용자에 대한 숫자 권한 값을 계산하세요.
- 소유자 (rwx) = 4+2+1 = 7
- 그룹 (r-x) = 4+0+1 = 5
- 기타 사용자 (---) = 0+0+0 = 0
예시
작업을 완료하면 다음과 같이 보여야 합니다:
$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/
디렉토리 권한 drwxr-x---는 다음을 의미합니다:
- 소유자(
dev_lead)는 읽기, 쓰기, 실행 권한을 가짐 - 그룹(
developers)은 읽기 및 실행 권한을 가짐 - 기타 사용자는 권한 없음
즉:
dev_lead는 디렉토리에 완전히 접근할 수 있습니다.developers그룹 멤버는 내용을 나열하고 디렉토리에 들어갈 수 있습니다.- 외부인은 디렉토리에 접근할 수 없습니다.
개발 팀을 위한 협업 권한 설정
참고: 모든 프로젝트 디렉토리(src 포함)의 소유권을
dev_lead:developers로 설정하는 2단계를 먼저 완료했는지 확인하세요. 이 단계는 해당 소유권 설정을 기반으로 합니다.설정 스크립트가
labex사용자를developers그룹에 추가하지만, 현재 셸은 새로운 그룹 멤버십을 자동으로 인식하지 못할 수 있습니다.~/project/phoenix_project/src에서의 접근 권한을 테스트하기 전에 터미널에서newgrp developers를 실행하세요. 그렇지 않으면 소유권과 권한이 올바른데도Permission denied오류가 발생할 수 있습니다.
개발 팀은 ~/project/phoenix_project/src 디렉토리 내에서 효과적으로 협업해야 합니다. 원활한 협업을 위해 src 내부에 생성되는 모든 새 파일이나 디렉토리는 자동으로 developers 그룹에 속해야 합니다. 이 특수 권한은 그룹 소유자에게만 영향을 미칩니다. 사용자 소유자는 여전히 파일을 생성한 계정이 되며, 파일의 읽기/쓰기 권한은 해당 사용자의 umask에 따라 결정됩니다.
작업
~/project/phoenix_project/src디렉토리에 특수 권한을 설정하여, 그 안에 생성되는 모든 새 파일과 하위 디렉토리가src디렉토리 자체의 그룹 소유권(developers)을 상속받도록 합니다.
요구 사항
~/project/phoenix_project/src내의 새 파일이 자동으로developers그룹을 상속받아야 합니다.- 최종 권한은 소유자와
developers그룹 모두가src디렉토리를 읽고, 쓰고, 들어갈 수 있도록 허용해야 하며, 기타 사용자는 접근할 수 없어야 합니다. - 이 특수 권한을 설정하려면
chmod명령어를 사용해야 합니다. - 다른 사용자가 소유한 디렉토리에 권한을 설정하려면
sudo를 사용해야 할 수 있습니다.
힌트
- 이 특수 권한을 "set group ID" 또는
setgid비트라고 합니다. setgid비트는 심볼릭(g+s) 또는 숫자 표기법을 사용하여 적용할 수 있습니다.- 숫자 표기법에서
setgid비트의 값은2입니다. 이는 표준 세 자리 권한 숫자 앞에 위치합니다(예:2770).
예시
작업을 완료하면 다음과 같이 보여야 합니다:
$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/
그룹 실행 위치의 s는 setgid 비트가 설정되어 있고 그룹이 실행 권한을 가지고 있음을 나타냅니다. 이제 새 파일을 생성하면:
$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw-r-- 1 labex developers 0 Apr 15 18:28 /home/labex/project/phoenix_project/src/new_file.txt
다른 사용자로 로그인했더라도 새 파일이 자동으로 developers 그룹에 속하는 것을 확인할 수 있습니다. 파일 소유자는 여전히 파일을 생성한 사용자로 유지되지만, 그룹 소유자는 src 디렉토리로부터 상속받습니다. 이는 적절한 그룹 소유권을 유지하면서 개발 팀 내의 협업을 보장합니다.
권한은 다음을 보여줍니다:
- 소유자(
dev_lead)는 읽기, 쓰기, 실행 권한을 가짐 - 그룹(
developers)은 읽기, 쓰기, 실행 권한을 가짐 - 기타 사용자는 권한 없음
- 그룹 실행 위치의 소문자
s는 setgid 비트가 설정되어 있고 그룹이 실행 권한을 가지고 있음을 나타냄
요약
훌륭합니다, 요새의 수호자님! Project Phoenix를 위한 난공불락의 보안 기반을 성공적으로 구축했습니다. CTO와 Sarah Chen은 당신의 포괄적인 보안 구현에 감탄했습니다. 프로젝트 디렉토리는 이제 TechNova의 지적 재산을 보호하면서 원활한 협업을 가능하게 하는 요새가 되었습니다.
이번 챌린지를 통해 당신은 다음과 같은 중요한 리눅스 보안 기술을 마스터했습니다:
- 파일 생성 및 기본 권한: 정밀한 권한 제어로 민감한 프로젝트 키를 보호했습니다.
- 소유권 관리: Sarah의 개발 팀과 기술 리더십에 소유권을 전문적으로 할당했습니다.
- 디렉토리 보안: 메인 프로젝트 인프라를 위한 접근성과 보안의 균형을 맞췄습니다.
- 고급 권한: setgid 권한을 구성하여 자동 그룹 소유권 상속이 가능한 협업 팀 작업 공간을 보장했습니다.
- 협업 작업 공간: 보안을 유지하면서 생산성을 높이는 팀 협업 공간을 구성했습니다.
이러한 고급 보안 기술은 당신이 시니어 시스템 관리자로서의 책임을 맡을 준비가 되었음을 증명합니다. 내일은 '열쇠의 관리자'로서 마지막 챌린지에 도전하게 됩니다. 시스템에 대한 사용자 접근을 제어하여 Project Phoenix 보안의 인적 요소를 관리하게 될 것입니다!



