Red Hat Enterprise Linux 에서 사용자 및 그룹 관리

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 랩에서는 Red Hat Enterprise Linux (RHEL) 환경 내에서 로컬 사용자 및 그룹을 관리하는 데 필요한 필수 기술을 습득하게 됩니다. 먼저 사용자 및 그룹 정보와 파일 소유권을 식별하는 방법을 포함하여 기본적인 사용자 및 그룹 개념을 이해하는 것으로 시작합니다.

이어서, 슈퍼유저 (superuser) 접근 권한을 얻고, 로컬 사용자 계정을 생성 및 수정하며, 로컬 그룹 계정을 관리하고, 사용자 암호 정책을 구성하는 방법을 배우게 됩니다. 이러한 실습 경험을 통해 Linux 시스템에서 접근 권한과 권한을 효과적으로 제어하는 데 필요한 지식을 갖추게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 86%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

사용자 및 그룹 개념 이해

이 단계에서는 Red Hat Enterprise Linux (RHEL) 에서 기본적인 사용자 및 그룹 개념과 다양한 명령을 사용하여 사용자 및 그룹 정보를 검사하는 방법에 대해 배우게 됩니다. 이러한 개념을 이해하는 것은 Linux 시스템에서 권한 및 접근 제어를 관리하는 데 매우 중요합니다.

Linux 시스템의 모든 파일과 프로세스는 사용자와 그룹과 연결되어 있습니다. 이 연결은 파일을 읽고, 쓰고, 실행할 수 있는 사람과 프로세스를 관리할 수 있는 사람을 결정합니다.

먼저, id 명령을 사용하여 현재 사용자 및 시스템의 다른 사용자를 식별하는 방법을 살펴보겠습니다.

  • id 명령을 사용하여 현재 로그인한 사용자에 대한 정보를 표시합니다. 이 명령은 사용자 ID (UID), 기본 그룹 ID (GID) 및 사용자가 속한 모든 그룹을 표시합니다.

    id

    labex 사용자 정보를 나타내는 다음과 유사한 출력을 볼 수 있습니다.

    uid=1000(labex) gid=1000(labex) groups=1000(labex),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  • root 사용자와 같은 다른 사용자에 대한 기본 정보를 보려면 사용자 이름을 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.txt
  • ls -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 -au

    labexroot가 일반적인 사용자로 표시된 다양한 프로세스를 볼 수 있습니다.

    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/passwd

    labexroot에 대한 항목을 찾습니다. 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 권한) 접근 권한을 얻는 방법을 배우게 됩니다. 슈퍼유저 접근 권한은 소프트웨어 설치, 사용자 관리 및 시스템 설정 구성과 같은 관리 작업을 수행하는 데 필수적입니다. 권한 상승을 위한 주요 도구인 susudo 명령을 살펴보겠습니다.

su (substitute user) 명령을 사용하면 다른 사용자 계정으로 전환할 수 있습니다. 사용자 이름 없이 사용하면 기본적으로 root 사용자가 됩니다.

  • su - 명령을 사용하여 root 사용자로 전환합니다. 하이픈 (-) 옵션은 로그인 쉘을 얻도록 보장하며, 이는 root 사용자의 환경 변수와 경로가 로드됨을 의미합니다. root 암호인 redhat을 입력하라는 메시지가 표시됩니다.

    su -

    암호 redhat을 입력하면 프롬프트가 [root@host ~]#로 변경되어 현재 root 사용자임을 나타냅니다.

    Password:
    [root@host ~]#

    root인지 확인하려면 whoami 명령을 실행할 수 있습니다.

    whoami

    출력은 다음과 같아야 합니다.

    root

    root 쉘을 종료하고 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

    출력은 다음과 같아야 합니다.

    root

    root 쉘을 종료하고 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, userdelpasswd와 같은 명령을 사용합니다.

먼저, 새 사용자 계정을 만들어 보겠습니다.

  • 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 failure

    testuser01 계정을 잠금 해제하려면:

    sudo usermod -U testuser01

    testuser01로 다시 전환해 보십시오. 성공해야 합니다. labex로 돌아가려면 exit를 기억하십시오.

    su - testuser01
    ## Enter password 'labexrhel9'
    exit

마지막으로, 생성한 사용자 계정을 삭제해 보겠습니다.

  • userdel 명령을 사용하여 사용자를 제거합니다. 기본적으로 userdel/etc/passwd에서 사용자의 항목을 제거하지만 홈 디렉토리는 그대로 둡니다. 이로 인해 고아 파일이 발생할 수 있습니다.

    sudo userdel testuser01

    사용자가 /etc/passwd에서 제거되었는지 확인하지만 홈 디렉토리는 여전히 존재합니다.

    grep testuser01 /etc/passwd
    ls -ld /home/testuser01

    grep 명령은 출력을 반환하지 않아야 하며, 이는 사용자가 사라졌음을 나타냅니다. 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, groupmodgroupdel과 같은 명령을 사용하고, 사용자 - 그룹 멤버십 관리를 위해 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 testers

    testers 그룹의 GID 를 확인합니다.

    grep testers /etc/group

    출력은 지정된 GID 를 확인해야 합니다.

    testers:x:2000:

다음으로, groupmod 명령을 사용하여 기존 그룹을 수정해 보겠습니다.

  • -n 옵션을 사용하여 그룹의 이름을 변경할 수 있습니다. testersqa_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_team

    GID 변경을 확인합니다.

    grep qa_team /etc/group

    출력은 새 GID 를 반영해야 합니다.

    qa_team:x:2001:

이제 이러한 그룹 내에서 사용자 멤버십을 관리해 보겠습니다. 이를 위해 usermod 명령을 사용합니다. 먼저, 몇 명의 테스트 사용자를 만듭니다.

  • userAuserB를 만들고 암호를 labexrhel9로 설정합니다.

    sudo useradd userA
    sudo passwd userA

    userA의 암호로 labexrhel9를 입력합니다.

    sudo useradd userB
    sudo passwd userB

    userB의 암호로 labexrhel9를 입력합니다.

  • userA를 보조 그룹으로 developers 그룹에 추가합니다. usermod와 함께 -a (추가) 및 -G (그룹) 옵션을 사용합니다.

    sudo usermod -aG developers userA

    id 명령을 사용하여 userA의 그룹 멤버십을 확인합니다.

    id userA

    groups 섹션에 developers가 나열되어야 합니다.

    uid=1003(userA) gid=1003(userA) groups=1003(userA),1002(developers)
  • userB를 보조 그룹으로 developersqa_team 그룹 모두에 추가합니다.

    sudo usermod -aG developers,qa_team userB

    userB의 그룹 멤버십을 확인합니다.

    id userB

    developersqa_team이 모두 나열되어야 합니다.

    uid=1004(userB) gid=1004(userB) groups=1004(userB),1002(developers),2001(qa_team)
  • 또한 usermod와 함께 -g 옵션을 사용하여 사용자의 기본 그룹을 변경할 수 있습니다. userA의 기본 그룹을 developers로 변경해 보겠습니다.

    sudo usermod -g developers userA

    userA의 기본 그룹을 확인합니다.

    id userA

    gid 필드에 이제 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 policyuser

    policyuser의 암호로 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
  • 이러한 변경 사항을 확인하려면 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 -lls -ld 명령을 사용하여 파일 및 디렉토리 소유권을 식별하는 연습을 했습니다.

이 랩에서는 또한 수퍼유저 액세스 권한을 얻고, 로컬 사용자 계정을 생성 및 수정하고, 로컬 그룹 계정을 관리하고, 사용자 암호 정책을 구성하는 과정을 안내했습니다. 이러한 단계는 필수적인 시스템 관리 작업에 대한 실질적인 경험을 제공하여 Linux 시스템에서 사용자 액세스 및 보안을 효과적으로 관리할 수 있도록 합니다.