DAY 05: 열쇠의 관리자

LinuxBeginner
지금 연습하기

소개

LabEx Corporation에서의 첫 주 마지막 날에 오신 것을 환영합니다! 첫 정찰 임무부터 요새의 수호자가 되기까지 정말 놀라운 여정이었습니다. 이제 회사는 여러분을 프로젝트 피닉스(Project Phoenix)의 **열쇠의 관리자(Keeper of the Keys)**라는 최고의 신뢰가 필요한 직책으로 승진시킵니다.

CTO가 여러분을 따로 불러 중요한 브리핑을 합니다. "프로젝트 피닉스가 마지막 단계에 진입했습니다. 우리 시스템에 누가 접근할 수 있는지에 대한 절대적인 통제가 필요합니다. 프로젝트의 마지막 단계를 이끌 새로운 수석 개발자 브렌다 스미스(Brenda Smith)가 합류할 예정입니다. 불행히도, 이전 팀의 계약직이었던 존 도(John Doe)가 앞서 조사했던 보안 사고 당시 무단으로 접근했다는 사실을 발견했습니다. 그의 접근 권한을 즉시 취소해야 합니다."

열쇠의 관리자로서, 여러분은 이제 프로젝트 피닉스로 향하는 인간 관문을 통제하게 됩니다. 여러분의 사용자 관리 결정에 따라 TechNova의 가장 중요한 프로젝트에 누가 기여할 수 있는지, 그리고 보안상의 이유로 누가 차단되어야 하는지가 결정됩니다.

지금이 바로 Linux 사용자 관리의 완벽한 숙련도를 증명할 순간입니다. 프로젝트 피닉스의 미래는 필요한 사람에게는 접근 권한을 부여하고, 시스템을 위협할 수 있는 사람에게는 접근을 거부하는 여러분의 능력에 달려 있습니다. 임무를 완수해 봅시다!

시스템에 새로운 개발자 온보딩

첫 번째 과제는 프로젝트 피닉스의 마지막 개발 단계를 이끌 수석 개발자 브렌다 스미스를 위한 새 사용자 계정을 생성하는 것입니다. TechNova의 정책에 따라 사용자 이름은 first_initial.last_name 형식을 따라야 합니다.

과제

  • 브렌다 스미스를 위한 새 사용자 계정을 생성하세요.

요구 사항

  • 사용자 이름은 b.smith여야 합니다.
  • useradd 명령어를 사용하여 시스템에 새 사용자를 추가하세요. sudo 권한이 필요합니다.

힌트

  • 이 챌린지는 대화형 adduser 도우미가 아닌 표준 useradd 명령어를 사용해야 합니다.
  • 관리자 권한으로 명령어를 실행하려면 sudo를 사용하는 것을 잊지 마세요.

예시

새 사용자 계정을 성공적으로 생성한 후, 시스템 사용자 데이터베이스에서 사용자 항목을 확인할 수 있습니다:

$ grep "b.smith" /etc/passwd
b.smith:x:5002:5004::/home/b.smith:/bin/sh

사용자 계정은 시스템이 할당한 사용자 ID와 그룹 ID로 생성됩니다. 다음 명령어를 사용하여 계정이 존재하는지 확인하고 세부 정보를 확인할 수 있습니다:

$ id b.smith
uid=5002(b.smith) gid=5004(b.smith) groups=5004(b.smith)

새 사용자를 위한 전용 홈 디렉토리 생성

사용자를 생성했지만 중요한 단계를 잊었습니다! 프로젝트 피닉스의 마지막 단계를 이끄는 수석 개발자인 브렌다는 중요한 프로젝트 파일과 개발 도구를 저장할 자신만의 안전한 작업 공간이 필요합니다. 그녀를 위한 홈 디렉토리가 생성되도록 해야 합니다.

과제

  • 사용자 b.smith를 위한 홈 디렉토리를 /home/b.smith에 생성하세요.

요구 사항

  • 홈 디렉토리는 사용자 b.smith를 위해 생성되어야 합니다.
  • useradd 명령어의 옵션을 사용하여 홈 디렉토리를 자동으로 생성해야 합니다. 만약 홈 디렉토리 없이 사용자를 이미 생성했다면, 먼저 사용자를 삭제한 후 올바르게 다시 생성해야 할 수도 있습니다.
  • 유효한 솔루션은 -m 또는 --create-home이며, 플래그는 사용자 이름 앞이나 뒤에 올 수 있습니다.

힌트

  • 사용자를 삭제하려면 userdel 명령어를 사용할 수 있습니다. 예: sudo userdel b.smith.
  • useradd 명령어에는 사용자를 위한 홈 디렉토리를 생성하는 특정 플래그가 있습니다. man useradd 페이지에서 -m 또는 --create-home과 같은 옵션을 확인하세요.

예시

홈 디렉토리와 함께 사용자를 생성한 후, 홈 디렉토리 목록에서 새 디렉토리가 생성된 것을 확인할 수 있습니다:

$ ls -la /home/
drwxr-xr-x 1 root root 47 Sep 3 16:32 .
drwxr-xr-x 1 root root 62 Sep 3 16:31 ..
-rw-r--r-- 1 root root 58 Jul 18 2024 .zshrc
drwxr-x--- 2 b.smith b.smith 57 Sep 3 16:32 b.smith
drwxr-x--- 2 j.doe j.doe 57 Sep 3 16:31 j.doe
drwxr-x--- 1 labex labex 4096 Sep 3 16:35 labex

홈 디렉토리는 제한된 권한(소유자와 그룹만 접근 가능)으로 사용자에게 소유됩니다. 내용을 보려면 적절한 권한이 필요하거나 sudo를 사용해야 할 수 있습니다:

$ sudo ls -la /home/b.smith/
drwxr-x--- 2 b.smith b.smith 57 Sep 3 16:32 .
drwxr-xr-x 1 root root 47 Sep 3 16:32 ..
-rw-r--r-- 1 b.smith b.smith 220 Sep 3 16:32 .bash_logout
-rw-r--r-- 1 b.smith b.smith 3771 Sep 3 16:32 .bashrc
-rw-r--r-- 1 b.smith b.smith 655 Sep 3 16:32 .profile

새 사용자를 위한 초기 비밀번호 할당

사용자 계정 b.smith가 생성되었지만 현재 잠겨 있습니다. 브렌다는 비밀번호 없이는 프로젝트 피닉스 시스템에 접근하여 리더 역할을 시작할 수 없습니다. 다음 과제는 그녀의 계정에 초기 보안 비밀번호를 설정하는 것입니다.

과제

  • 사용자 b.smith의 비밀번호를 설정하세요.

요구 사항

  • 표준 Linux 명령어를 사용하여 사용자의 비밀번호를 변경하세요.
  • 새 비밀번호를 입력하고 확인하라는 메시지가 표시됩니다. password123과 같은 간단한 비밀번호를 사용할 수 있습니다.

힌트

  • 비밀번호를 설정하거나 변경하는 명령어는 passwd입니다.
  • 다른 사용자의 비밀번호를 변경하는 것이므로 sudo 권한이 필요합니다. 구문은 sudo passwd <username>입니다.

예시

비밀번호를 성공적으로 설정한 후, 사용자 계정은 shadow 파일에 비밀번호 해시를 가지게 됩니다. shadow 파일을 확인하여 이를 검증할 수 있습니다(참고: root 권한이 필요합니다):

$ sudo grep "^b.smith:" /etc/shadow
b.smith:$y$j9T$XbJLH9LJgY518Th4qcd1V0$NrfHOJ2MGm/1OhLGfpfMQkvPasV23Eenhwl9bA0i8O4:20334:0:99999:7:::

새 개발자를 "developers" 그룹에 추가

브렌다가 일주일 내내 보안을 유지해 온 프로젝트 피닉스 파일과 저장소에 접근할 수 있도록 하려면, 그녀를 developers 그룹에 추가해야 합니다. 이 그룹은 TechNova에서 근무하는 동안 계속 작업해 온 그룹이며, 프로젝트에 필요한 특별한 권한을 가지고 있습니다.

과제

  • 사용자 b.smithdevelopers 그룹에 추가하세요.

요구 사항

  • 사용자 b.smithdevelopers 그룹의 구성원이어야 합니다.
  • 사용자의 기존 그룹 멤버십이 제거되어서는 안 됩니다.

힌트

  • usermod 명령어는 사용자 계정을 수정하는 데 사용됩니다.
  • -a (append) 및 -G (groups) 플래그를 찾아보세요. 이들을 함께 사용하면 기존 그룹에서 제거하지 않고 새 그룹에 사용자를 추가할 수 있습니다.

예시

사용자를 developers 그룹에 성공적으로 추가한 후, 사용자의 그룹 목록에서 그룹 멤버십이 반영된 것을 확인할 수 있습니다:

$ groups b.smith
b.smith : b.smith developers

id 명령어를 사용하여 더 자세한 그룹 정보를 확인할 수도 있습니다:

$ id b.smith
uid=5002(b.smith) gid=5004(b.smith) groups=5004(b.smith),5003(developers)

이제 사용자는 developers 그룹이 접근할 수 있는 파일과 디렉토리에 접근할 수 있어야 합니다. 그룹 파일을 확인하여 그룹이 존재하는지 확인할 수 있습니다:

$ grep "^developers:" /etc/group
developers:x:5003:b.smith

b.smith가 그룹 구성원 목록에 나타나는 것을 확인하세요. 이는 사용자가 기존 그룹 멤버십을 유지하면서 성공적으로 그룹에 추가되었음을 의미합니다.

퇴사하는 직원의 계정을 일시적으로 비활성화

이제 이번 주의 마지막 과제이자 프로젝트 피닉스를 위한 가장 중요한 보안 조치입니다. 존 도(j.doe)는 앞선 조사 과정에서 보안 사고 당시 무단 접근 가능성이 있는 것으로 확인되었습니다. CTO는 모든 TechNova 시스템에서 그의 계정을 즉시 제거하라고 명령했습니다. 하지만 법무 및 규정 준수 팀은 진행 중인 보안 감사를 위해 그의 파일을 보존해야 하므로, 계정을 완전히 삭제하는 대신 잠가야 합니다.

과제

  • 로그인을 방지하기 위해 j.doe의 사용자 계정을 잠그세요.

요구 사항

  • 사용자 계정 j.doe는 잠겨 있어야 합니다.
  • 사용자와 그들의 홈 디렉토리를 삭제하지 마세요.

힌트

  • -L (lock) 옵션과 함께 usermod 명령어를 사용할 수 있습니다.
  • 또는 passwd 명령어에도 동일한 결과를 얻을 수 있는 -l (lock) 플래그가 있습니다.
  • sudo를 사용하는 것을 잊지 마세요.

예시

shadow 파일을 확인하여 계정이 잠겼는지 검증할 수 있습니다:

$ sudo grep "^j.doe:" /etc/shadow
j.doe:!:20334:0:99999:7:::

비밀번호 필드 시작 부분에 있는 느낌표(!)를 확인하세요. 이는 계정이 잠겼음을 나타냅니다. 원래의 비밀번호 해시는 나중에 잠금을 해제할 수 있도록 ! 뒤에 보존됩니다.

요약

축하합니다, 열쇠의 관리자님! LabEx Corporation에서의 놀라운 첫 주를 성공적으로 마치고 프로젝트 피닉스의 마지막 단계를 위한 보안을 확보했습니다.

이 변화의 일주일 동안, 여러분은 신입 시스템 관리자에서 TechNova의 가장 중요한 시스템을 지키는 신뢰받는 수호자로 성장했습니다. 마지막 챌린지에서 여러분은 필수적인 사용자 관리 명령어를 마스터했습니다:

  • 프로젝트 피닉스의 완성을 이끄는 수석 개발자를 위한 새 사용자 계정 생성.
  • 핵심 팀원을 위한 안전한 홈 디렉토리 구성.
  • passwd를 사용한 강력한 비밀번호 정책 구현.
  • 프로젝트 피닉스 리소스에 대한 적절한 접근을 보장하기 위한 그룹 멤버십 관리.
  • 감사 추적을 보존하면서 무단 접근을 비활성화하여 시스템 보안 강화.

초기 정찰부터 디지털 아키텍처, 로그 조사, 보안 구현, 그리고 마지막으로 사용자 관리까지, 여러분은 전문 시스템 관리자의 모든 기술 세트를 증명했습니다. CTO는 여러분의 정규직 전환을 확정했으며, 승진 기회에 대해서도 논의 중입니다.

프로젝트 피닉스는 이제 안전한 손에 맡겨졌으며, 여러분의 헌신과 전문성 덕분에 TechNova의 미래는 안전합니다!

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습