소개
이 랩에서는 Red Hat Enterprise Linux (RHEL) 환경 내에서 로컬 사용자 및 그룹을 관리하는 데 필요한 필수 기술을 습득하게 됩니다. 먼저 사용자 및 그룹 정보와 파일 소유권을 식별하는 방법을 포함하여 기본적인 사용자 및 그룹 개념을 이해하는 것으로 시작합니다.
이어서, 슈퍼유저 (superuser) 접근 권한을 얻고, 로컬 사용자 계정을 생성 및 수정하며, 로컬 그룹 계정을 관리하고, 사용자 암호 정책을 구성하는 방법을 배우게 됩니다. 이러한 실습 경험을 통해 Linux 시스템에서 접근 권한과 권한을 효과적으로 제어하는 데 필요한 지식을 갖추게 될 것입니다.
사용자 및 그룹 개념 이해
이 단계에서는 Red Hat Enterprise Linux (RHEL) 에서 기본적인 사용자 및 그룹 개념과 다양한 명령을 사용하여 사용자 및 그룹 정보를 검사하는 방법에 대해 배우게 됩니다. 이러한 개념을 이해하는 것은 Linux 시스템에서 권한 및 접근 제어를 관리하는 데 매우 중요합니다.
Linux 시스템의 모든 파일과 프로세스는 사용자와 그룹과 연결되어 있습니다. 이 연결은 파일을 읽고, 쓰고, 실행할 수 있는 사람과 프로세스를 관리할 수 있는 사람을 결정합니다.
먼저, id 명령을 사용하여 현재 사용자 및 시스템의 다른 사용자를 식별하는 방법을 살펴보겠습니다.
id명령을 사용하여 현재 로그인한 사용자에 대한 정보를 표시합니다. 이 명령은 사용자 ID (UID), 기본 그룹 ID (GID) 및 사용자가 속한 모든 그룹을 표시합니다.idlabex사용자 정보를 나타내는 다음과 유사한 출력을 볼 수 있습니다.uid=1000(labex) gid=1000(labex) groups=1000(labex),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023root사용자와 같은 다른 사용자에 대한 기본 정보를 보려면 사용자 이름을id명령에 인수로 전달합니다.id root출력은
root사용자의 UID (0), GID (0) 및 그룹을 표시합니다.uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
다음으로, ls 명령을 사용하여 파일 및 디렉토리의 소유자를 식별하는 방법을 배우게 됩니다.
ls -l명령을 사용하여 파일의 소유자를 봅니다. 먼저,~/project디렉토리에 더미 파일을 만듭니다.touch ~/project/mytextfile.txt ls -l ~/project/mytextfile.txt출력은
mytextfile.txt의 사용자 및 그룹 소유자로 모두labex를 표시합니다.-rw-r--r-- 1 labex labex 0 Feb 5 11:10 /home/labex/project/mytextfile.txtls -ld명령을 사용하여 해당 디렉토리의 내용이 아닌 디렉토리의 소유자를 봅니다. 다음 출력에서 세 번째 열은 사용자 이름을, 네 번째 열은 그룹 이름을 표시합니다.ls -ld ~/project~/project디렉토리의 소유자로labex를 볼 수 있습니다.drwxr-xr-x 2 labex labex 6 Feb 5 11:10 /home/labex/project
이제 ps 명령을 사용하여 프로세스 정보와 각 프로세스와 관련된 사용자를 보는 방법을 살펴보겠습니다.
ps -au명령을 사용하여 프로세스를 봅니다.a옵션은 터미널이 있는 모든 프로세스를 표시하고,u옵션은 프로세스와 관련된 사용자를 표시합니다. 다음 출력에서 첫 번째 열은 사용자 이름을 표시합니다.ps -aulabex및root가 일반적인 사용자로 표시된 다양한 프로세스를 볼 수 있습니다.USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 10608 3808 ? Ss 00:00 0:00 /sbin/init root 42 0.0 0.0 10608 3808 ? Ss 00:00 0:00 /sbin/init labex 123 0.0 0.1 224152 5756 pts/0 Ss 00:00 0:00 -bash labex 150 0.0 0.0 225556 3652 pts/0 R+ 00:00 0:00 ps -au
마지막으로, 사용자 및 그룹 정보를 각각 저장하는 /etc/passwd 및 /etc/group 파일을 살펴보겠습니다. 이러한 파일은 Linux 시스템에서 사용자 및 그룹 계정이 정의되는 방식을 이해하는 데 중요합니다.
/etc/passwd파일의 각 줄에는 한 사용자에 대한 정보가 포함되어 있습니다. 이 파일은 콜론으로 구분된 7 개의 필드로 나뉩니다.cat을 사용하여 내용을 봅니다.cat /etc/passwdlabex및root에 대한 항목을 찾습니다.labex의 경우 다음과 유사하게 표시됩니다.labex:x:1000:1000:LabEx User:/home/labex:/bin/bash각 필드를 자세히 살펴보겠습니다.
labex: 이 사용자의 사용자 이름입니다.x: 사용자의 암호화된 암호가 역사적으로 여기에 저장되었습니다. 이제 암호는 보안을 위해/etc/shadow에 저장되므로 자리 표시자입니다.1000: 이 사용자 계정의 UID 번호입니다.1000: 이 사용자 계정의 기본 그룹의 GID 번호입니다.LabEx User: 이 사용자에 대한 간략한 설명 또는 실제 이름입니다./home/labex: 사용자의 홈 디렉토리이며, 로그인 쉘이 시작될 때의 초기 작업 디렉토리입니다./bin/bash: 로그인 시 실행되는 이 사용자의 기본 쉘 프로그램입니다.
/etc/group파일의 각 줄에는 한 그룹에 대한 정보가 포함되어 있습니다. 각 그룹 항목은 콜론으로 구분된 4 개의 필드로 나뉩니다.cat을 사용하여 내용을 봅니다.cat /etc/group다양한 시스템 그룹 및 사용자 - 개인 그룹에 대한 항목을 볼 수 있습니다. 예를 들어,
labex그룹 항목은 다음과 같이 표시될 수 있습니다.labex:x:1000:각 필드를 자세히 살펴보겠습니다.
labex: 이 그룹의 이름입니다.x: 사용되지 않는 그룹 암호 필드입니다. 이제 자리 표시자입니다.1000: 이 그룹의 GID 번호입니다.- (비어 있음): 이 그룹의 보조 구성원인 사용자 목록입니다. 이 필드가 비어 있으면 추가 사용자가 이 그룹의 보조 구성원으로 명시적으로 나열되지 않음을 의미합니다 (기본 사용자
labex는 암시적으로 구성원임).
기본 그룹 및 보조 그룹: 모든 사용자는 정확히 하나의 기본 그룹을 갖습니다. 로컬 사용자의 경우, 이 그룹은
/etc/passwd파일에 GID 로 나열됩니다. 기본 그룹은 사용자가 생성하는 파일을 소유합니다. 일반 사용자를 생성할 때, 사용자의 기본 그룹이 되도록 사용자와 동일한 이름으로 그룹이 생성되는 경우가 많습니다. 사용자는 일반적으로 사용자 개인 그룹의 유일한 구성원입니다. 이 설계는 파일 권한 관리를 단순화합니다.사용자는 보조 그룹도 가질 수 있습니다. 보조 그룹의 구성원은
/etc/group파일에 저장됩니다. 사용자는 기본 또는 보조 그룹에 관계없이 그룹 중 하나라도 접근 권한이 있는 경우 파일에 대한 접근 권한을 부여받습니다. 예를 들어,labex사용자가labex기본 그룹과wheel보조 그룹을 가지고 있다면, 해당 사용자는 두 그룹 중 하나라도 읽을 수 있는 파일을 읽을 수 있습니다.id명령은 사용자의 모든 그룹 멤버십을 표시할 수 있습니다.labex에 대한id의 출력을 다시 불러오세요.uid=1000(labex) gid=1000(labex) groups=1000(labex),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023여기서
gid=1000(labex)는labex가 기본 그룹임을 나타냅니다.groups=1000(labex),10(wheel)은 모든 그룹 멤버십을 나열하며,labex를 기본 그룹으로,wheel을 보조 그룹으로 표시합니다.
수퍼유저 권한 획득
이 단계에서는 RHEL 시스템에서 슈퍼유저 (root 권한) 접근 권한을 얻는 방법을 배우게 됩니다. 슈퍼유저 접근 권한은 소프트웨어 설치, 사용자 관리 및 시스템 설정 구성과 같은 관리 작업을 수행하는 데 필수적입니다. 권한 상승을 위한 주요 도구인 su 및 sudo 명령을 살펴보겠습니다.
su (substitute user) 명령을 사용하면 다른 사용자 계정으로 전환할 수 있습니다. 사용자 이름 없이 사용하면 기본적으로 root 사용자가 됩니다.
su -명령을 사용하여root사용자로 전환합니다. 하이픈 (-) 옵션은 로그인 쉘을 얻도록 보장하며, 이는root사용자의 환경 변수와 경로가 로드됨을 의미합니다.root암호인redhat을 입력하라는 메시지가 표시됩니다.su -암호
redhat을 입력하면 프롬프트가[root@host ~]#로 변경되어 현재root사용자임을 나타냅니다.Password: [root@host ~]#root인지 확인하려면whoami명령을 실행할 수 있습니다.whoami출력은 다음과 같아야 합니다.
rootroot쉘을 종료하고labex사용자로 돌아가려면exit를 입력합니다.exit프롬프트가
[labex@host ~]$로 돌아갑니다.
sudo (superuser do) 명령을 사용하면 허용된 사용자가 sudoers 파일에 지정된 대로 슈퍼유저 또는 다른 사용자로 명령을 실행할 수 있습니다. labex 사용자는 암호를 요구하지 않고 sudo 권한을 갖도록 구성되어 있으며, 이는 많은 클라우드 및 랩 환경에서 일반적입니다.
sudo -i명령을 사용하여root계정으로 전환합니다. 이 명령은 권한이 상승된 명령을 실행하는 더 안전한 방법을 제공하므로 일반적으로su -보다 선호됩니다.sudo -i를 사용하면 여전히 자신의 사용자 계정을 사용하지만 root 권한을 가지며, 명령이 자신의 계정에 기록되므로 수행된 작업을 추적하기가 더 쉽습니다.sudo -i프롬프트가
[root@host ~]#로 변경되어 현재root사용자임을 나타냅니다.[root@host ~]#다시,
whoami로 확인할 수 있습니다.whoami출력은 다음과 같아야 합니다.
rootroot쉘을 종료하고labex사용자로 돌아가려면exit를 입력합니다.exit프롬프트가
[labex@host ~]$로 돌아갑니다.또한
sudo를 사용하여root쉘로 전환하지 않고 root 권한으로 단일 명령을 실행할 수 있습니다. 예를 들어,/etc/shadow의 내용 (root 만 읽을 수 있음) 을 보려면sudo cat /etc/shadow를 사용할 수 있습니다.sudo cat /etc/shadow | head -n 3이렇게 하면
/etc/shadow파일의 처음 세 줄이 표시되어cat명령이 root 권한으로 실행되었음을 보여줍니다.root:*:19780:0:99999:7::: bin:*:19780:0:99999:7::: daemon:*:19780:0:99999:7:::/etc/sudoers파일은sudo명령의 주요 구성 파일입니다. 어떤 사용자와 그룹이 어떤 명령을 권한 상승으로 실행할 수 있는지 정의합니다. 여러 관리자가 동시에 파일을 편집하려고 할 경우 문제를 방지하기 위해 특수visudo명령으로만 편집해야 합니다.visudo편집기는 구문 오류가 없는지 확인하기 위해 파일의 유효성도 검사합니다./etc/sudoers의 일반적인 항목은wheel그룹의 구성원이root로 모든 명령을 실행하도록 허용합니다.labex사용자는wheel그룹의 구성원이므로sudo가 암호 없이 작동합니다.sudo grep wheel /etc/sudoers다음과 유사한 줄이 표시되어
wheel그룹에sudo접근 권한을 부여합니다.%wheel ALL=(ALL:ALL) ALL이 줄의 의미는 다음과 같습니다.
%wheel: 규칙은wheel그룹의 구성원에게 적용됩니다.%기호는 그룹을 나타냅니다.ALL=(ALL:ALL): 모든 호스트 (첫 번째ALL) 에서wheel그룹의 사용자는 모든 사용자 (두 번째ALL) 및 모든 그룹 (세 번째ALL) 으로 명령을 실행할 수 있습니다.ALL:wheel그룹의 사용자는 모든 명령을 실행할 수 있습니다.
이것으로 슈퍼유저 접근 권한 획득에 대한 탐구를 마칩니다. 이제 su -와 sudo -i의 차이점과 권한이 상승된 명령을 실행하는 방법을 이해했습니다.
로컬 사용자 계정 생성 및 수정
이 단계에서는 RHEL 시스템에서 로컬 사용자 계정을 생성, 수정 및 삭제하는 방법을 배우게 됩니다. 사용자 계정 관리는 각 사용자가 적절한 접근 권한과 권한을 갖도록 보장하는 기본적인 관리 작업입니다. useradd, usermod, userdel 및 passwd와 같은 명령을 사용합니다.
먼저, 새 사용자 계정을 만들어 보겠습니다.
useradd명령을 사용하여 새 사용자를 만듭니다. 기본적으로useradd는 1000 이상인 UID 로 새 사용자를 생성하고, 홈 디렉토리 (/home/username) 를 생성하며, 기본 쉘을/bin/bash로 설정합니다. 이 명령을 실행하려면sudo권한이 필요합니다.testuser01이라는 사용자를 만들어 보겠습니다.sudo useradd testuser01사용자를 생성한 후
/etc/passwd에서 해당 사용자의 존재를 확인하고 홈 디렉토리를 확인할 수 있습니다.grep testuser01 /etc/passwd ls -ld /home/testuser01다음과 유사한 출력을 볼 수 있습니다.
testuser01:x:1001:1001::/home/testuser01:/bin/bash drwx------. 2 testuser01 testuser01 6 Mar 4 15:22 /home/testuser01기본적으로 새로 생성된 사용자는 암호가 설정되어 있지 않으므로 로그인할 수 없습니다.
passwd명령을 사용하여testuser01의 암호를 설정해야 합니다.sudo passwd testuser01새 암호를 입력하라는 메시지가 표시됩니다. 이 랩에서는
testuser01의 암호로labexrhel9를 사용합니다. "BAD PASSWORD" 경고가 표시될 수 있지만 진행할 수 있습니다.New password: Retype new password: passwd: all authentication tokens updated successfully.이제
su -를 사용하여testuser01로 전환해 보십시오.su - testuser01메시지가 표시되면 암호
labexrhel9를 입력합니다. 프롬프트가[testuser01@host ~]$로 변경되어야 합니다.Password: [testuser01@host ~]$labex사용자로 돌아가려면exit를 입력합니다.exit
다음으로, usermod 명령을 사용하여 기존 사용자 계정을 수정해 보겠습니다. usermod 명령을 사용하면 홈 디렉토리, 쉘 또는 그룹 멤버십과 같은 사용자의 다양한 속성을 변경할 수 있습니다.
testuser01의 주석 필드 (전체 이름) 를 "Test User One"으로 변경해 보겠습니다.sudo usermod -c "Test User One" testuser01/etc/passwd파일을 다시 확인하여 변경 사항을 확인합니다.grep testuser01 /etc/passwd이제 출력에 업데이트된 주석이 반영되어야 합니다.
testuser01:x:1001:1001:Test User One:/home/testuser01:/bin/bash또한 사용자 계정을 잠그거나 잠금 해제할 수 있습니다. 계정을 잠그면 사용자가 로그인할 수 없게 되며, 잠금 해제하면 로그인이 다시 활성화됩니다.
testuser01계정을 잠그려면:sudo usermod -L testuser01이제
testuser01로 다시 전환해 보십시오.su - testuser01암호를 입력하라는 메시지가 표시되지만, 올바른 암호를 입력하더라도 로그인이 실패합니다.
Password: su: Authentication failuretestuser01계정을 잠금 해제하려면:sudo usermod -U testuser01testuser01로 다시 전환해 보십시오. 성공해야 합니다.labex로 돌아가려면exit를 기억하십시오.su - testuser01 ## Enter password 'labexrhel9' exit
마지막으로, 생성한 사용자 계정을 삭제해 보겠습니다.
userdel명령을 사용하여 사용자를 제거합니다. 기본적으로userdel은/etc/passwd에서 사용자의 항목을 제거하지만 홈 디렉토리는 그대로 둡니다. 이로 인해 고아 파일이 발생할 수 있습니다.sudo userdel testuser01사용자가
/etc/passwd에서 제거되었는지 확인하지만 홈 디렉토리는 여전히 존재합니다.grep testuser01 /etc/passwd ls -ld /home/testuser01grep명령은 출력을 반환하지 않아야 하며, 이는 사용자가 사라졌음을 나타냅니다.ls -ld명령은 홈 디렉토리가 여전히 존재하지만 사용자가 더 이상 존재하지 않으므로 소유권이 숫자 UID/GID로 표시됨을 보여줍니다.drwx------ 2 1001 1001 83 Mar 4 15:22 /home/testuser01참고: 일부 RHEL 버전 또는 구성에서
userdel은 비어 있거나 사용자가 유일한 소유자인 경우 기본적으로 홈 디렉토리를 제거할 수 있습니다. 그러나 홈 디렉토리가 제거되도록 명시적으로-r옵션을 사용하는 것이 더 안전합니다.사용자와 홈 디렉토리를 모두 제거하려면
userdel과 함께-r옵션을 사용합니다. 이를 제대로 시연하기 위해 새 사용자testuser02를 만들어 보겠습니다.sudo useradd testuser02 sudo passwd testuser02 ## You'll be prompted to enter 'labexrhel9'이제
testuser02와 해당 홈 디렉토리를 제거합니다.sudo userdel -r testuser02사용자 항목과 홈 디렉토리가 모두 제거되었는지 확인합니다.
grep testuser02 /etc/passwd ls -ld /home/testuser02두 명령 모두
testuser02와 해당 홈 디렉토리가 더 이상 존재하지 않음을 나타내야 합니다.ls: cannot access '/home/testuser02': No such file or directory
이것으로 로컬 사용자 계정 생성, 수정 및 삭제에 대한 실습을 마칩니다.
로컬 그룹 계정 관리
이 단계에서는 RHEL 시스템에서 로컬 그룹 계정을 관리하는 방법을 배우게 됩니다. 그룹은 권한을 효율적으로 관리하는 데 필수적이며, 여러 사용자에게 동시에 액세스 권한을 부여할 수 있습니다. groupadd, groupmod 및 groupdel과 같은 명령을 사용하고, 사용자 - 그룹 멤버십 관리를 위해 usermod를 다시 방문합니다.
먼저, 새 그룹을 만들어 보겠습니다.
groupadd명령을 사용하여 새 그룹을 만듭니다. 기본적으로groupadd는/etc/login.defs에 지정된 범위에서 다음 사용 가능한 GID 를 할당합니다. 이 명령을 실행하려면sudo권한이 필요합니다.developers라는 그룹을 만들어 보겠습니다.sudo groupadd developers/etc/group파일을 확인하여 그룹 생성을 확인할 수 있습니다.grep developers /etc/group다음과 유사한 항목이 표시되어야 합니다.
developers:x:1002:-g옵션을 사용하여 그룹에 특정 GID 를 지정할 수도 있습니다. 예를 들어2000과 같은 특정 GID 를 가진testers라는 다른 그룹을 만들어 보겠습니다.sudo groupadd -g 2000 testerstesters그룹의 GID 를 확인합니다.grep testers /etc/group출력은 지정된 GID 를 확인해야 합니다.
testers:x:2000:
다음으로, groupmod 명령을 사용하여 기존 그룹을 수정해 보겠습니다.
-n옵션을 사용하여 그룹의 이름을 변경할 수 있습니다.testers를qa_team으로 이름을 변경해 보겠습니다.sudo groupmod -n qa_team testers/etc/group에서 이름 변경을 확인합니다.grep qa_team /etc/group출력은 원래 GID 와 함께 새 이름을 표시해야 합니다.
qa_team:x:2000:-g옵션을 사용하여 그룹의 GID 를 변경할 수도 있습니다.qa_team의 GID 를2001로 변경해 보겠습니다.sudo groupmod -g 2001 qa_teamGID 변경을 확인합니다.
grep qa_team /etc/group출력은 새 GID 를 반영해야 합니다.
qa_team:x:2001:
이제 이러한 그룹 내에서 사용자 멤버십을 관리해 보겠습니다. 이를 위해 usermod 명령을 사용합니다. 먼저, 몇 명의 테스트 사용자를 만듭니다.
userA와userB를 만들고 암호를labexrhel9로 설정합니다.sudo useradd userA sudo passwd userAuserA의 암호로labexrhel9를 입력합니다.sudo useradd userB sudo passwd userBuserB의 암호로labexrhel9를 입력합니다.userA를 보조 그룹으로developers그룹에 추가합니다.usermod와 함께-a(추가) 및-G(그룹) 옵션을 사용합니다.sudo usermod -aG developers userAid명령을 사용하여userA의 그룹 멤버십을 확인합니다.id userAgroups섹션에developers가 나열되어야 합니다.uid=1003(userA) gid=1003(userA) groups=1003(userA),1002(developers)userB를 보조 그룹으로developers및qa_team그룹 모두에 추가합니다.sudo usermod -aG developers,qa_team userBuserB의 그룹 멤버십을 확인합니다.id userBdevelopers와qa_team이 모두 나열되어야 합니다.uid=1004(userB) gid=1004(userB) groups=1004(userB),1002(developers),2001(qa_team)또한
usermod와 함께-g옵션을 사용하여 사용자의 기본 그룹을 변경할 수 있습니다.userA의 기본 그룹을developers로 변경해 보겠습니다.sudo usermod -g developers userAuserA의 기본 그룹을 확인합니다.id userAgid필드에 이제developers가 표시되어야 합니다.uid=1003(userA) gid=1002(developers) groups=1002(developers)참고: 사용자의 기본 그룹을 변경하면 해당 그룹이 보조 그룹이기도 한 경우
/etc/group에서 이전 기본 그룹의 멤버십 목록에서 제거됩니다. 이 경우userA의 원래 기본 그룹 (userA) 은 더 이상 보조 그룹으로 나열되지 않습니다.
마지막으로, 생성한 그룹과 테스트 사용자를 삭제해 보겠습니다.
groupdel명령을 사용하여 그룹을 제거합니다. 사용자의 기본 그룹인 경우 그룹을 삭제할 수 없습니다. 먼저,developers를 삭제하기 전에userA의 기본 그룹을 기본값 (또는 다른 기존 그룹) 으로 다시 변경합니다.sudo usermod -g userA userA ## Change userA's primary group back to userA sudo groupdel developers/etc/group에서developers가 제거되었는지 확인합니다.grep developers /etc/group이 명령은 출력을 반환하지 않아야 합니다.
qa_team그룹을 삭제합니다.sudo groupdel qa_team제거를 확인합니다.
grep qa_team /etc/group이 명령도 출력을 반환하지 않아야 합니다.
테스트 사용자를 정리합니다.
sudo userdel -r userA sudo userdel -r userB
이것으로 로컬 그룹 계정 및 사용자 - 그룹 멤버십 관리에 대한 실습을 마칩니다.
사용자 비밀번호 정책 설정
이 단계에서는 RHEL 시스템에서 사용자 암호 정책을 구성하는 방법을 배우게 됩니다. 암호 정책은 암호 복잡성, 만료 및 계정 잠금에 대한 규칙을 적용하여 보안을 강화하는 데 중요합니다. /etc/shadow 파일과 chage 명령을 살펴봅니다.
먼저, 암호화된 암호 정보와 사용자 계정에 대한 암호 만료 매개변수를 저장하는 /etc/shadow 파일을 이해해 보겠습니다. 이 파일은 매우 민감하며 root 사용자만 읽을 수 있습니다.
각 사용자는
/etc/shadow파일에 항목을 가지고 있습니다. 시연을 위해 새 사용자policyuser를 만들고 암호를labexrhel9로 설정해 보겠습니다.sudo useradd policyuser sudo passwd policyuserpolicyuser의 암호로labexrhel9를 입력합니다.이제
/etc/shadow에서policyuser에 대한 항목을 봅니다.sudo grep policyuser /etc/shadow다음과 유사한 출력을 볼 수 있습니다.
policyuser:$6$randomsalt$encryptedhash:19780:0:99999:7:::콜론으로 구분된 각 필드를 분석해 보겠습니다.
policyuser: 사용자 계정의 이름입니다.$6$randomsalt$encryptedhash: 사용자의 암호화된 암호입니다.$6: 이 암호에 사용되는 해싱 알고리즘 (SHA-512, RHEL 9 기본값) 입니다.randomsalt: 암호를 암호화하는 데 사용되는 salt; 원래 무작위로 선택되었습니다.encryptedhash: 사용자의 암호의 암호화된 해시입니다.
19780: 암호가 마지막으로 변경된 에포크 (1970-01-01 UTC) 이후의 일수입니다. 이 숫자는 현재 날짜에 따라 달라집니다.0: 사용자가 다시 변경할 수 있기 전 마지막 암호 변경 이후의 최소 일수입니다.99999: 암호가 만료되기 전 암호 변경 없이 최대 일수입니다. 빈 필드는 암호가 만료되지 않음을 의미합니다.7: 암호가 만료될 것임을 사용자에게 경고할 남은 일수입니다.- (empty): 암호가 만료된 날부터 시작하여 계정이 자동으로 잠기기 전 활동이 없는 일수입니다.
- (empty): 에포크 이후의 일수로 계정이 만료되는 날짜입니다. 빈 필드는 계정이 만료되지 않음을 의미합니다.
- 마지막 필드는 일반적으로 비어 있으며 향후 사용을 위해 예약되어 있습니다.
다음으로, chage 명령을 사용하여 이러한 암호 만료 매개변수를 수정합니다. chage 명령을 사용하면 사용자 암호 만료 정보를 변경할 수 있습니다.
다음 규칙으로
policyuser에 대한 암호 정책을 설정해 보겠습니다.- 암호 변경 간 최소 일수: 7 일 (
-m 7) - 암호 변경 간 최대 일수: 90 일 (
-M 90) - 암호 만료 전 경고 기간: 14 일 (
-W 14) - 계정 잠금 전 암호 만료 후 비활성 기간: 30 일 (
-I 30)
sudo chage -m 7 -M 90 -W 14 -I 30 policyuser- 암호 변경 간 최소 일수: 7 일 (
이러한 변경 사항을 확인하려면
chage -l(목록) 을 사용하여policyuser에 대한 현재 암호 만료 정보를 표시할 수 있습니다.sudo chage -l policyuser새 정책을 반영하는 출력을 볼 수 있습니다.
Last password change : Mar 04, 2024 Password expires : Jun 02, 2024 Password inactive : Jul 02, 2024 Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 90 Number of days of warning before password expires : 14참고: 날짜는 랩을 수행하는 시점에 따라 달라집니다.
-E옵션을 사용하여 절대 계정 만료 날짜를 설정할 수도 있습니다.policyuser의 계정이 오늘부터 30 일 후에 만료되도록 설정해 보겠습니다. 먼저, 오늘의 날짜를 가져와서 지금부터 30 일 후의 날짜를 계산합니다.EXPIRY_DATE=$(date -d "+30 days" +%Y-%m-%d) echo "Account will expire on: $EXPIRY_DATE" sudo chage -E $EXPIRY_DATE policyuser계정 만료 날짜를 확인합니다.
sudo chage -l policyuser | grep "Account expires"출력은 계산된 만료 날짜를 표시해야 합니다.
Account expires : Apr 03, 2024참고: 날짜는 현재 랩 날짜로부터 약 30 일 후가 됩니다.
계정 만료 날짜를 제거하려면
chage -E -1 policyuser를 사용할 수 있습니다.sudo chage -E -1 policyuser sudo chage -l policyuser | grep "Account expires"출력은
never로 되돌아가야 합니다.Account expires : never
마지막으로, policyuser 계정을 정리합니다.
sudo userdel -r policyuser
이것으로 사용자 암호 정책 구성에 대한 실습을 마칩니다. 이제 /etc/shadow 파일과 chage 명령을 사용하여 암호 만료 매개변수를 검사하고 수정하는 방법을 이해했습니다.
요약
이 랩에서는 Red Hat Enterprise Linux (RHEL) 에서 사용자 및 그룹 관리의 기본 개념을 배웠습니다. 먼저, 사용자와 그룹이 파일 및 프로세스와 어떻게 연관되는지, 그리고 현재 사용자와 root와 같은 다른 시스템 사용자에 대해 id 명령을 사용하여 사용자 및 그룹 정보를 검사하는 방법을 이해했습니다. 또한, 권한 및 액세스 제어를 이해하는 데 중요한 ls -l 및 ls -ld 명령을 사용하여 파일 및 디렉토리 소유권을 식별하는 연습을 했습니다.
이 랩에서는 또한 수퍼유저 액세스 권한을 얻고, 로컬 사용자 계정을 생성 및 수정하고, 로컬 그룹 계정을 관리하고, 사용자 암호 정책을 구성하는 과정을 안내했습니다. 이러한 단계는 필수적인 시스템 관리 작업에 대한 실질적인 경험을 제공하여 Linux 시스템에서 사용자 액세스 및 보안을 효과적으로 관리할 수 있도록 합니다.



