사용자 계정 관리

LinuxBeginner
지금 연습하기

소개

이 실습에서는 Linux 시스템에서 수행하는 기본적인 사용자 계정 관리 작업을 안내합니다. 사용자 계정을 생성하고 수정 및 삭제하는 방법과 비밀번호를 설정하고 변경하는 방법을 배웁니다. 이러한 작업은 Linux 시스템 관리의 기본 기술입니다. Linux 가 처음이어도 걱정하지 마세요. 모든 과정을 단계별로 설명합니다.

새 사용자 생성

먼저 joker라는 새 사용자 계정을 생성합니다.

  1. 터미널을 엽니다. Linux 에서 터미널은 명령을 입력할 수 있는 텍스트 인터페이스입니다.
  2. 다음 명령을 입력하고 Enter 키를 누릅니다.
sudo useradd joker

명령의 각 부분은 다음과 같습니다.

  • sudo는 일시적으로 슈퍼 사용자 (관리자) 권한을 부여하는 명령입니다. 새 사용자를 생성하려면 이러한 높은 수준의 권한이 필요하므로 사용합니다.
  • useradd는 새 사용자를 생성하는 명령입니다.
  • joker는 생성할 사용자 이름입니다.

참고: sudo 없이 이 명령을 실행하면 "permission denied" 오류가 발생합니다. 일반 사용자는 새 사용자 계정을 생성할 수 없으며, 시스템 관리자만 수행할 수 있는 작업이기 때문입니다.

이 과정에서는 슈퍼 사용자와 일반 사용자의 차이를 확인할 수 있습니다. 일반 사용자는 새 사용자 계정을 생성할 수 없지만, sudo를 사용하면 관리 작업을 수행할 때 일시적으로 권한을 높일 수 있습니다.

  1. 사용자가 생성되었는지 확인하려면 /etc/passwd 파일을 조회합니다.
sudo grep -w 'joker' /etc/passwd

/etc/passwd 파일은 사용자 계정 정보를 모아 둔 전화번호부와 같습니다. 각 줄은 하나의 사용자 계정을 나타내며, 여러 정보가 콜론 (:) 으로 구분되어 있습니다.

다음과 비슷한 출력이 표시되어야 합니다.

joker:x:5001:5001::/home/joker:/bin/sh

이 줄에는 다음 정보가 표시됩니다.

  • 사용자 이름: joker
  • 비밀번호: x(실제 비밀번호는 별도의 보안 파일에 저장됨)
  • 사용자 ID: 5001
  • 그룹 ID: 5001
  • 홈 디렉터리: /home/joker이지만 아직 생성되지 않음
  • 기본 셸: /bin/sh

홈 디렉터리를 포함한 사용자 생성

이번에는 bob이라는 사용자를 생성하고 홈 디렉터리도 함께 만듭니다.

  1. 다음 명령을 실행합니다.
sudo useradd -m bob

-m 옵션은 사용자용 홈 디렉터리를 생성하도록 시스템에 지시합니다. 홈 디렉터리는 사용자가 파일과 설정을 저장하는 개인 폴더입니다.

  1. 홈 디렉터리가 생성되었는지 확인합니다.
sudo ls -ld /home/bob

다음과 비슷한 출력이 표시되어야 합니다.

drwxr-x--- 2 bob bob 57 Jan 19 13:33 /home/bob

출력의 각 부분은 다음을 의미합니다.

  • 맨 앞의 d는 디렉터리임을 나타냅니다.
  • rwxr-x---는 이 디렉터리에서 누가 읽기, 쓰기 또는 실행 권한을 가지는지 나타냅니다.
  • bob이 두 번 표시되는 것은 이 디렉터리의 사용자 소유자와 그룹 소유자가 모두 bob 임을 나타냅니다.
  • 57은 디렉터리의 크기 (바이트) 입니다.
  • Jan 19 13:33은 디렉터리가 생성된 시각입니다.
  • /home/bob은 디렉터리의 위치입니다.

사용자 비밀번호 설정

이제 새 사용자 중 joker의 비밀번호를 설정합니다.

  1. 다음 명령을 실행합니다.
sudo passwd joker
  1. 새 비밀번호를 두 번 입력하라는 메시지가 표시됩니다. 이 실습에서는 "password123"과 같은 간단한 비밀번호를 사용합니다.

중요: 비밀번호를 입력하는 동안 화면에 비밀번호가 표시되지 않습니다. 입력한 비밀번호를 다른 사람이 볼 수 없도록 하는 Linux 의 보안 기능입니다. 잘못 입력했다면 다시 시도할 수 있습니다. 중요: 이 비밀번호를 기억해 두세요. 실습 후반에 필요합니다.

  1. 성공하면 "passwd: password updated successfully"라는 메시지가 표시됩니다.

참고: 실제 환경에서는 항상 강력하고 고유한 비밀번호를 사용해야 합니다.

Linux 는 내부적으로 암호화된 비밀번호를 /etc/shadow라는 보안 파일에 저장합니다. 누구나 볼 수 있는 /etc/passwd 파일에 비밀번호를 저장하는 것보다 안전한 방식입니다.

사용자 속성 수정

Linux 에서는 사용자 계정을 생성한 후에도 다양한 설정을 변경할 수 있습니다. 여기서는 joker의 홈 디렉터리를 변경해 보겠습니다.

  1. 다음 명령을 실행합니다.
sudo usermod -d /home/wayne joker

이 명령은 다음 작업을 수행합니다.

  • usermod는 사용자 계정 설정을 수정하는 명령입니다.
  • -d /home/wayne은 새 홈 디렉터리를 지정합니다.
  • joker는 수정할 사용자입니다.
  1. 변경 내용을 확인합니다.
sudo grep -w 'joker' /etc/passwd

-w는 단어 전체가 일치하는 항목을 찾을 때 사용하고, grep은 파일에서 해당 단어를 검색할 때 사용합니다. 출력에서 joker의 홈 디렉터리가 변경된 것을 확인할 수 있어야 합니다.

사용자 셸 변경

사용자 계정에서 변경할 수 있는 또 다른 중요한 설정은 기본 셸입니다. 셸은 터미널에 입력한 명령을 해석하고 실행하는 프로그램입니다.

기본적으로 사용자 joker/bin/sh를 셸로 사용합니다. sh(Bourne Shell) 는 대부분의 Unix 계열 시스템에 포함된 기본 셸인 반면, bash(Bourne Again Shell) 는 더 많은 기능을 제공하며 일반적으로 사용하기도 쉽습니다.

joker의 셸을 bash 로 변경하면 다음과 같은 이점이 있습니다.

  • 더 직관적인 명령줄 인터페이스
  • 향상된 스크립팅 기능
  • 사용자 환경을 더 세밀하게 설정할 수 있는 옵션

다음과 같이 변경합니다.

  1. joker의 기본 셸을 bash 로 변경합니다.
sudo usermod -s /bin/bash joker
  1. 변경 내용을 확인합니다.
sudo grep -w 'joker' /etc/passwd

joker 항목의 끝에 /bin/bash가 표시되어야 합니다. 이는 bash 가 joker의 기본 셸이 되었음을 의미합니다.

이제 joker가 로그인하거나 새 터미널 세션을 열면 더 많은 기능을 제공하는 bash 환경을 사용하게 됩니다.

사용자를 그룹에 추가

Linux 에서는 그룹을 사용해 사용자를 구성하고 권한을 관리합니다. 중요한 그룹 중 하나인 sudo 그룹에 속한 사용자는 관리자 권한을 사용할 수 있습니다. 여기서는 jokersudo 그룹에 추가합니다.

사용자를 sudo 그룹에 추가하는 이유는 다음과 같습니다.

  1. 시스템 관리: sudo 그룹의 사용자는 시스템 전체에 영향을 주는 관리 작업을 수행할 수 있습니다.
  2. 소프트웨어 설치: sudo 그룹의 구성원은 소프트웨어 패키지를 설치하고 업데이트할 수 있습니다.
  3. 설정 변경: 시스템 설정 파일을 수정할 수 있습니다.
  4. 사용자 관리: 다른 사용자 계정을 생성, 수정 또는 삭제할 수 있습니다.

“항상 sudo 명령을 사용하면 되는데 왜 사용자를 sudo 그룹에 추가해야 하나요?”라고 생각할 수 있습니다. 이유는 다음과 같습니다.

  • 편의성: sudo 그룹의 사용자는 root 비밀번호를 알 필요 없이 sudo를 사용할 수 있습니다. 대신 자신의 비밀번호를 입력합니다.
  • 세밀한 제어: 시스템 관리자는 sudo를 설정해 특정 사용자가 슈퍼 사용자 권한으로 특정 명령만 실행하도록 제한할 수 있습니다.
  • 추적 가능성: root 비밀번호를 공유하는 것과 달리, sudo는 누가 어떤 명령을 실행했는지 기록하므로 보안과 추적성이 향상됩니다.
  • 보안: 여러 관리자가 root 비밀번호를 공유하는 것보다, 이름이 지정된 계정에 sudo 권한을 부여하는 편이 일반적으로 더 안전합니다.

실제 환경에서는 다음과 같은 경우에 일반적으로 사용자를 sudo 그룹에 추가합니다.

  • 정기적인 유지 관리 작업을 수행해야 하는 시스템 관리자 또는 IT 담당자인 경우
  • 업무에 필요한 특정 소프트웨어를 설치하거나 시스템을 변경해야 하는 개발자인 경우
  • 특정 작업에 높은 권한이 필요하지만 root 비밀번호는 알려 주고 싶지 않은 고급 사용자인 경우

사용자를 sudo 그룹에 추가하면 시스템에 상당한 권한을 부여하게 됩니다. 따라서 반드시 필요한 경우에만 신중하게 수행해야 합니다.

이제 jokersudo 그룹에 추가합니다.

  1. 다음 명령을 실행합니다.
sudo usermod -aG sudo joker

이 명령은 다음 작업을 수행합니다.

  • usermod는 사용자 계정을 수정하는 명령입니다.
  • -aG는“그룹에 추가 (append to Group)”를 의미하며, 기존 그룹에서 제거하지 않고 사용자를 그룹에 추가합니다.
  • sudo는 사용자를 추가할 그룹입니다.
  • joker는 수정할 사용자입니다.
  1. 변경 내용을 확인합니다.
groups joker

joker의 그룹 목록에 sudo가 표시되어야 합니다.

  1. 변경 효과를 확인하려면 joker 사용자로 전환한 뒤 sudo 권한이 필요한 명령을 실행합니다.
su - joker

이 명령은 현재 사용자 (labex) 에서 joker 사용자로 전환합니다. joker의 비밀번호를 입력하라는 메시지가 표시됩니다. 앞에서 설정한 비밀번호 (password123) 를 입력합니다. 비밀번호를 입력하는 동안 화면에는 어떤 문자도 표시되지 않습니다. 이는 보안 기능입니다.

  1. joker로 로그인한 상태에서 일반적으로 root 권한이 필요한 파일을 조회합니다.
sudo cat /etc/shadow

메시지가 표시되면 joker의 비밀번호를 다시 입력합니다. 일반적으로 root 만 접근할 수 있는 /etc/shadow 파일의 내용이 표시되어야 합니다. 이는 joker에게 이제 sudo 권한이 있음을 확인해 줍니다.

  1. 작업이 끝나면 exit를 입력해 원래 사용자 계정 (labex) 으로 돌아갑니다.

참고: 운영 환경에서는 누구를 sudo 그룹에 추가할지 매우 신중하게 결정해야 합니다. 큰 권한에는 큰 책임이 따릅니다.

사용자 계정 잠금 및 잠금 해제

사용자 계정을 삭제하지 않고 일시적으로 비활성화해야 하는 경우가 있습니다.

  1. joker 계정을 잠급니다.
sudo passwd -l joker

-l 옵션은 비밀번호를 잠급니다.

  1. joker 사용자로 전환해 봅니다.
su - joker

비밀번호를 입력하라는 메시지가 표시됩니다. 앞에서 joker에 설정한 비밀번호를 입력합니다. 앞의 제안을 따랐다면 "password123"입니다.

"authentication failure" 메시지가 표시되어야 합니다. 이는 계정이 정상적으로 잠겼다는 뜻입니다.

  1. 이제 계정의 잠금을 해제합니다.
sudo passwd -u joker

-u 옵션은 비밀번호 잠금을 해제합니다.

  1. 다시 joker 사용자로 전환해 봅니다.
su - joker

메시지가 표시되면 비밀번호를 입력합니다. 이번에는 joker 사용자로 정상적으로 전환되어야 합니다.

다음 단계로 진행하기 전에 exit를 입력해 원래 사용자 계정으로 돌아갑니다.

사용자 삭제

마지막으로 사용자를 삭제하는 방법을 알아봅니다. 앞에서 생성한 bob 사용자를 삭제합니다.

  1. bob과 해당 사용자의 홈 디렉터리를 삭제합니다.
sudo userdel -r bob

userdel 명령은 사용자 계정을 삭제합니다. -r 옵션은 사용자의 홈 디렉터리와 메일 스풀을 제거합니다.

  1. 사용자가 삭제되었는지 확인합니다.
sudo grep -w 'bob' /etc/passwd
sudo ls -ld /home/bob

두 명령 모두 아무 결과도 반환하지 않아야 합니다. 이는 사용자와 해당 홈 디렉터리가 성공적으로 제거되었음을 의미합니다.

요약

축하합니다! Linux 사용자 계정 관리 실습을 완료했습니다. 다음 작업을 수행하는 방법을 배웠습니다.

  1. 새 사용자 계정 생성
  2. 사용자 비밀번호 설정
  3. 홈 디렉터리와 기본 셸 같은 사용자 속성 수정
  4. 사용자를 그룹에 추가
  5. 사용자 계정 잠금 및 잠금 해제
  6. 사용자 계정 삭제

또한 /etc/passwd 파일, 홈 디렉터리, 셸, 사용자 그룹과 같은 중요한 Linux 개념도 살펴보았습니다. 이러한 개념과 작업은 Linux 시스템 관리의 기본 기술입니다. 실제 환경에서 사용자 계정을 관리할 때는 항상 조직의 보안 정책을 따라야 합니다.