소개
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비트라고 합니다. - 기호 표기법 (
g+s) 이나 숫자 표기법으로setgid비트를 적용할 수 있습니다. - 숫자 표기법에서
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 의 지적 재산을 보호하면서 원활한 협업을 지원하는 요새가 되었습니다.
이번 챌린지에서 다음과 같은 핵심 Linux 보안 기술을 익혔습니다.
- 파일 생성 및 기본 권한: 정확한 권한 제어로 민감한 프로젝트 키를 보호했습니다.
- 소유권 관리: Sarah 의 개발 팀과 기술 리더에게 소유권을 정확하게 지정했습니다.
- 디렉터리 보안: 주요 프로젝트 인프라의 접근성과 보안을 균형 있게 설정했습니다.
- 고급 권한:
setgid권한을 설정하여 그룹 소유권을 자동으로 상속하는 협업 팀 작업 공간을 구축했습니다. - 협업 작업 공간: 보안을 유지하면서 생산성을 높일 수 있는 팀 협업 공간을 구성했습니다.
이러한 고급 보안 기술을 통해 선임 시스템 관리자 역할을 맡을 준비가 되었음을 입증했습니다. 내일은“키의 수호자”로서 마지막 챌린지를 수행합니다. Project Phoenix 의 보안에서 사람과 관련된 요소를 관리하며 시스템 접근을 제어하게 됩니다!



