소개
LabEx Corporation의 4일 차에 오신 것을 환영합니다, 요새의 수호자님! 어제 프로젝트 피닉스(Project Phoenix)의 심각한 문제를 해결한 당신의 뛰어난 활약에 힘입어, CTO는 당신을 프로젝트 전체의 보안 책임자로 임명했습니다.
"더 이상의 보안 사고는 용납할 수 없습니다." 아침 브리핑에서 CTO가 말합니다. "당신의 조사 결과, 이전의 보안 설정이 매우 미흡했다는 사실이 밝혀졌습니다. 사라 첸(Sarah Chen)과 개발팀이 프로젝트 피닉스를 일정대로 완수하려면 철통같은 환경이 필요합니다."
최근의 위기는 강력한 보안 조치의 필요성을 일깨워주었습니다. 개발 속도를 높이기 위해 새로운 계약직 직원이 팀에 합류할 예정이며, 당신은 접근 제어가 완벽하게 구성되도록 해야 합니다. 안전한 파일 시스템을 생성하고, 정확한 소유권을 할당하며, 세밀한 권한을 설정하고, TechNova의 지적 재산을 보호할 수 있는 협업 공간을 구축해야 합니다.
프로젝트 피닉스의 성공과 회사의 미래는 오늘 당신이 구축할 디지털 요새에 달려 있습니다. 시스템을 안전하게 보호해 봅시다!
새 프로젝트를 위한 보안 파일 생성
첫 번째 과제는 민감한 프로젝트 키를 저장할 파일을 만드는 것입니다. 이 파일은 엄격하게 기밀로 유지되어야 하며, 소유자만 접근할 수 있어야 합니다.
작업
~/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-------는 다음을 의미합니다:
- 소유자는 읽기 및 쓰기 권한이 있음
- 그룹은 권한이 없음
- 기타 사용자는 권한이 없음
프로젝트 리소스의 소유권 할당
프로젝트 피닉스는 사라 첸의 개발팀이 이끌고 있으며, 기술 리드인 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단계를 먼저 완료했는지 확인하세요. 이 단계는 해당 소유권 설정을 기반으로 합니다.
개발팀은 ~/project/phoenix_project/src 디렉터리 내에서 효과적으로 협업해야 합니다. 원활한 협업을 위해 src 내부에 생성되는 모든 새 파일이나 디렉터리는 자동으로 developers 그룹에 속해야 합니다. 이 특수 권한은 그룹 소유자에게만 영향을 미칩니다. 사용자 소유자는 여전히 파일을 생성한 계정이 되며, 파일의 읽기/쓰기 권한은 해당 사용자의 umask에 따라 결정됩니다.
작업
~/project/phoenix_project/src디렉터리에 특수 권한을 설정하여, 그 안에서 생성되는 모든 새 파일과 하위 디렉터리가src디렉터리 자체의 그룹 소유권(developers)을 자동으로 상속받도록 합니다.
요구 사항
~/project/phoenix_project/src내의 새 파일이 자동으로developers그룹을 상속받아야 합니다.- 이 특수 권한을 설정하려면
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 비트가 설정되어 있고 그룹에 실행 권한이 있음을 나타냄
요약
훌륭합니다, 요새의 수호자님! 프로젝트 피닉스를 위한 난공불락의 보안 기반을 성공적으로 구축했습니다. CTO와 사라 첸은 당신의 포괄적인 보안 구현에 감탄했습니다. 이제 프로젝트 디렉터리는 TechNova의 지적 재산을 보호하면서 원활한 협업을 가능하게 하는 요새가 되었습니다.
이번 챌린지를 통해 당신은 다음과 같은 중요한 리눅스 보안 기술을 마스터했습니다:
- 파일 생성 및 기본 권한: 정밀한 권한 제어로 민감한 프로젝트 키를 보호했습니다.
- 소유권 관리: 사라의 개발팀과 기술 리더십에 소유권을 전문적으로 할당했습니다.
- 디렉터리 보안: 메인 프로젝트 인프라에 대한 접근성과 보안의 균형을 맞췄습니다.
- 고급 권한: 자동 그룹 소유권 상속을 통해 협업 팀 작업 공간을 보장하는 setgid 권한을 구성했습니다.
- 협업 작업 공간: 보안을 유지하면서 생산성을 높이는 팀 협업 공간을 구성했습니다.
이러한 고급 보안 기술은 당신이 시니어 시스템 관리자로서의 책임을 맡을 준비가 되었음을 증명합니다. 내일은 '열쇠의 관리자'로서 마지막 챌린지에 도전하게 됩니다. 시스템에 대한 사용자 접근을 제어하여 프로젝트 피닉스 보안의 인적 요소를 관리해 보세요!



