사용자 계정 관리

LinuxBeginner
지금 연습하기

소개

이 실습에서는 Linux 시스템의 기본적인 사용자 계정 관리 작업을 단계별로 안내합니다. 사용자 계정을 생성, 수정, 삭제하는 방법과 비밀번호를 설정하고 변경하는 방법을 배우게 됩니다. 이는 Linux 시스템 관리를 위한 가장 기초적이고 필수적인 기술입니다. Linux 가 처음이더라도 걱정하지 마세요. 모든 과정을 차근차근 설명해 드립니다!

이 실습은 단계별 지침을 통해 학습과 실습을 돕는 가이드형 실습입니다. 각 단계를 주의 깊게 따라하며 직접 경험을 쌓아보세요. 통계에 따르면 이 실습은 초급 수준이며, 완수율은 87%입니다. 또한 학습자들로부터 99%의 긍정적인 평가를 받았습니다.

새로운 사용자 생성하기

먼저 "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) 는 대부분의 유닉스 계열 시스템에 존재하는 기본적인 쉘이지만, 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 그룹은 사용자에게 관리자 권한을 부여하는 중요한 그룹입니다. 예시로 joker 를 sudo 그룹에 추가해 보겠습니다.

왜 사용자를 sudo 그룹에 추가할까요?

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

"항상 'sudo' 명령어를 사용할 수 있는데 왜 굳이 그룹에 추가하나요?"라고 궁금할 수 있습니다. 이유는 다음과 같습니다.

  • 편의성: sudo 그룹의 사용자는 root 비밀번호를 몰라도 자신의 비밀번호를 사용하여 sudo 를 사용할 수 있습니다.
  • 세밀한 제어: 시스템 관리자는 특정 사용자가 특정 명령어만 관리자 권한으로 실행할 수 있도록 sudo 설정을 구성할 수 있습니다.
  • 책임 추적: root 비밀번호를 공유하는 것과 달리, sudo 는 누가 어떤 명령어를 실행했는지 로그를 남겨 보안과 추적성을 높입니다.
  • 보안: 여러 관리자 간에 root 비밀번호를 공유하는 것보다 sudo 권한이 있는 개별 계정을 운영하는 것이 일반적으로 더 안전합니다.

실제 환경에서는 보통 다음과 같은 경우에 사용자를 sudo 그룹에 추가합니다.

  • 정기적인 유지보수 작업이 필요한 시스템 관리자나 IT 직원인 경우
  • 업무를 위해 특정 소프트웨어를 설치하거나 시스템 변경이 필요한 개발자인 경우
  • 특정 작업에 관리자 권한이 필요하지만 root 비밀번호를 알려주고 싶지 않은 숙련된 사용자인 경우

사용자를 sudo 그룹에 추가하는 것은 시스템에 대한 강력한 권한을 부여하는 것이므로, 반드시 필요할 때만 신중하게 수행해야 합니다.

이제 joker 를 sudo 그룹에 추가해 보겠습니다.

  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 옵션은 비밀번호를 잠급니다 (lock).

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

비밀번호를 묻는 메시지가 나타나면 이전에 설정한 비밀번호 ("password123") 를 입력해 보세요.

"authentication failure(인증 실패)" 메시지가 나타나야 합니다. 이는 계정이 성공적으로 잠겼음을 의미합니다.

  1. 이제 계정 잠금을 해제해 보겠습니다.
sudo passwd -u joker

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

  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 시스템 관리를 위한 기초가 됩니다. 실제 환경에서 사용자 계정을 관리할 때는 항상 조직의 보안 정책을 준수해야 함을 잊지 마세요.