소개
Linux 에서 사용자 ID 및 액세스 제어 관리에 대한 실습에 오신 것을 환영합니다. 적절한 사용자 및 액세스 관리는 시스템 보안 및 관리의 초석입니다. 이를 통해 사용자는 자신의 역할에 필요한 리소스에만 액세스할 수 있으며, 무단 작업 및 잠재적인 보안 침해를 방지할 수 있습니다.
이 실습에서는 사용자, 그룹 및 권한을 관리하기 위한 필수 명령줄 도구를 직접 사용해 볼 것입니다. 사용자 계정 생성, 그룹 멤버십 관리, chmod 및 chown을 사용한 파일 액세스 제어, sudo를 사용한 특정 관리자 권한 부여 방법을 배우게 됩니다. 이 실습이 끝나면 Linux 환경을 보호하기 위한 탄탄한 기반을 갖추게 될 것입니다.
사용자 계정 및 그룹 생성 및 관리
이 단계에서는 모든 Linux 시스템 관리자의 기본 작업인 사용자 계정 및 그룹을 생성하고 관리하는 방법을 배웁니다. 새 사용자, 새 그룹을 생성한 다음 해당 그룹에 사용자를 추가할 것입니다.
먼저 alice라는 새 사용자를 생성해 보겠습니다. 시스템에 사용자 홈 디렉토리를 생성하도록 지시하는 -m 옵션과 함께 useradd 명령을 사용합니다.
sudo useradd -m alice
다음으로, 모든 사용자 계정에는 암호가 있어야 합니다. passwd 명령을 사용하여 alice의 암호를 설정합니다. 새 암호를 입력하고 확인하라는 메시지가 표시됩니다.
sudo passwd alice
이 실습에서는 password와 같은 간단한 암호를 입력할 수 있습니다. 암호를 두 번 동일하게 입력해야 합니다. 일치하지 않으면 오류가 표시되고 다시 시도해야 합니다.
alice 사용자가 생성되었는지 확인하려면 모든 사용자 계정에 대한 정보가 포함된 /etc/passwd 파일을 확인할 수 있습니다.
grep alice /etc/passwd
alice 사용자에 대한 세부 정보가 포함된 출력 줄이 표시되어야 합니다.
alice:x:5001:5001::/home/alice:/bin/sh
이제 developers라는 새 그룹을 생성해 보겠습니다. 이를 위해 groupadd 명령을 사용합니다.
sudo groupadd developers
그룹 생성을 확인하려면 /etc/group 파일을 확인할 수 있습니다.
grep developers /etc/group
출력에는 새 그룹이 표시되어야 합니다.
developers:x:5003:
마지막으로 새 사용자 alice를 developers 그룹에 추가해 보겠습니다. -aG 옵션과 함께 usermod 명령을 사용합니다. -a는 append 를 의미하고 -G는 그룹을 지정합니다. 사용자가 속한 다른 그룹에서 제거되지 않도록 -a를 사용하는 것이 중요합니다.
sudo usermod -aG developers alice
alice가 이제 developers 그룹의 구성원임을 확인하려면 groups 명령을 사용합니다.
groups alice
출력에는 alice가 속한 모든 그룹이 나열되며, 이제 developers가 포함되어야 합니다.
alice : alice developers
파일 및 디렉토리 권한 설정 (chmod, chown)
이 단계에서는 chmod 및 chown 명령을 사용하여 파일 및 디렉토리 권한을 관리하는 방법을 배웁니다. 이는 시스템에서 파일을 읽고, 쓰고, 실행할 수 있는 사용자를 제어하는 데 필수적입니다. ~/project/reports/quarterly.txt에 있는 파일을 사용하겠습니다.
먼저 ls -l 명령을 사용하여 파일의 현재 소유권 및 권한을 살펴보겠습니다.
ls -l reports/quarterly.txt
출력은 다음과 유사하게 표시되며, 파일이 labex 사용자 및 그룹에 속해 있음을 보여줍니다.
-rw-rw-r-- 1 labex labex 20 Aug 5 10:34 reports/quarterly.txt
이제 이 파일의 소유권을 변경해 보겠습니다. 사용자 alice를 소유자로, developers 그룹을 그룹 소유자로 만들 것입니다. 이를 위해 chown 명령을 사용합니다. 구문은 chown user:group filename입니다.
sudo chown alice:developers reports/quarterly.txt
ls -l을 다시 실행하여 변경 사항을 확인해 보겠습니다.
ls -l reports/quarterly.txt
출력에는 이제 새 소유자와 그룹이 표시됩니다.
-rw-rw-r-- 1 alice developers 20 Aug 5 10:34 reports/quarterly.txt
다음으로 chmod 명령을 사용하여 파일 권한을 수정하겠습니다. 권한을 다음과 같이 설정하려고 합니다.
- 소유자 (
alice) 는 읽기 및 쓰기 권한 (rw-) 을 가집니다. - 그룹 (
developers) 은 읽기 전용 권한 (r--) 을 가집니다. - 다른 사용자는 전혀 액세스할 수 없습니다 (
---).
8 진수 (숫자) 표기법에서 읽기는 4, 쓰기는 2, 실행은 1입니다. 따라서 rw-는 4+2=6, r--는 4, ---는 0입니다. 이를 통해 권한 코드 640을 얻습니다.
이러한 권한을 적용해 보겠습니다.
sudo chmod 640 reports/quarterly.txt
마지막으로 권한이 올바르게 설정되었는지 확인하기 위해 마지막으로 한 번 더 확인해 보겠습니다.
ls -l reports/quarterly.txt
출력에는 이제 새 권한 -rw-r-----가 반영되어야 합니다.
-rw-r----- 1 alice developers 20 Aug 5 10:34 reports/quarterly.txt
권한 있는 액세스 관리를 위한 Sudo 구현
이 단계에서는 sudo를 사용하여 사용자에게 관리자 권한을 부여하는 방법을 배웁니다. 전체 root 권한을 부여하는 대신, sudo는 사용자가 상승된 권한으로 실행할 수 있는 명령을 세밀하게 제어할 수 있도록 합니다. 이는 훨씬 더 안전한 방법입니다.
sudo의 구성은 /etc/sudoers 파일에 저장됩니다. 이 파일을 편집하는 가장 안전한 방법은 visudo 명령을 사용하는 것입니다. 이 명령은 파일을 잠그고 저장하기 전에 구문 오류를 확인합니다.
alice 사용자에게 암호를 입력할 필요 없이 apt update 명령을 실행할 수 있는 권한을 부여해 보겠습니다.
편집을 위해 sudoers 파일을 엽니다.
sudo EDITOR=nano visudo
그러면 텍스트 편집기 (예: nano) 에서 파일이 열립니다. 파일의 맨 아래로 스크롤하여 다음 줄을 추가합니다.
alice ALL=(ALL) NOPASSWD: /usr/bin/apt update
이 줄은 다음을 의미합니다. alice 사용자는 ALL 호스트에서 ALL 사용자로 ((ALL)) 지정된 명령 /usr/bin/apt update에 대해 암호 없이 (NOPASSWD:) 명령을 실행할 수 있습니다.
줄을 추가한 후 편집기를 저장하고 종료합니다. nano에서는 Ctrl+O를 누르고, 파일 이름을 확인하기 위해 Enter를 누른 다음, Ctrl+X를 눌러 종료할 수 있습니다.
이제 새 규칙을 테스트해 보겠습니다. alice 사용자 계정으로 전환해야 합니다.
sudo su - alice
명령 프롬프트가 변경되어 alice로 로그인했음을 나타냅니다. 이제 허용된 명령을 실행해 보세요.
sudo /usr/bin/apt update
명령이 암호를 묻지 않고 성공적으로 실행되어야 합니다. 패키지 목록이 업데이트되는 것을 볼 수 있습니다.
다음으로, alice가 sudo로 실행하도록 허용되지 않은 명령, 예를 들어 apt upgrade를 실행해 보겠습니다.
sudo /usr/bin/apt upgrade
이 명령은 실패하고 alice 사용자가 이 명령을 실행하도록 허용되지 않았음을 나타내는 [sudo] password for alice: 메시지가 표시됩니다.
[sudo] password for alice:
Ctrl+C를 눌러 명령을 종료합니다.
이것으로 sudo 규칙이 예상대로 작동하는지 확인할 수 있습니다. 이제 원래 labex 사용자로 돌아갑니다.
exit
권한 있는 액세스 활동에 대한 Sudo 로그 검토
이 단계에서는 시스템 로그를 검토하여 관리자 권한 접근을 모니터링하는 방법을 배웁니다. sudo 사용을 감사하는 것은 누가 언제 root 로 명령을 실행하는지 추적하는 중요한 보안 관행입니다.
Ubuntu 와 같은 Debian 기반 시스템에서는 sudo 명령이 /var/log/auth.log 파일에 기록됩니다. 이 파일은 보호되어 있으므로 읽으려면 sudo를 사용해야 합니다.
이전 단계에서 사용자 alice가 실행한 sudo 명령과 관련된 항목을 찾기 위해 grep 명령을 사용할 수 있습니다.
인증 로그를 검색하려면 다음 명령을 실행합니다.
sudo grep 'sudo.*alice' /var/log/auth.log
출력에는 여러 줄이 표시됩니다. 성공 및 실패한 sudo 시도 모두에 대한 로그를 식별할 수 있어야 합니다.
성공적인 시도는 다음과 유사하게 표시되며 실행된 명령을 보여줍니다.
... labex-vm sudo: alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt update
실패한 시도도 기록되며, 명령이 허용되지 않았음을 명확하게 나타냅니다.
... labex-vm sudo: alice : user NOT allowed to execute /usr/bin/apt upgrade on labex-vm ; TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt upgrade
이러한 로그를 검토하면 관리자는 의심스러운 활동을 모니터링하고 관리자 명령이 적절하게 사용되고 있는지 확인할 수 있습니다.
요약
실습을 완료하신 것을 축하드립니다!
이 실습에서는 필수적인 Linux 사용자 및 접근 관리 작업을 직접 경험했습니다. 이러한 기술은 안전하고 잘 구성된 Linux 시스템을 유지하는 데 기본이 됩니다.
다음과 같은 내용을 배웠습니다.
useradd및groupadd를 사용하여 새 사용자 및 그룹 생성chown으로 파일 소유권 변경 및chmod로 권한 변경sudo및visudo명령을 사용하여 세밀한 관리자 권한 구현/var/log/auth.log의 시스템 로그를 검토하여sudo활동 감사
이러한 명령을 숙달함으로써 이제 Linux 서버에서 사용자를 관리하고 민감한 데이터를 보호하는 데 더 능숙해졌습니다.



