리눅스는 다중 사용자 시스템으로, 사용자와 그룹을 효과적으로 관리하는 것이 시스템 보안과 자원 관리에 매우 중요합니다. 이 글에서는 리눅스에서 사용자와 그룹을 관리하는 데 필요한 핵심 명령어들을 자세히 살펴보겠습니다. 시스템 관리자라면 반드시 알아야 할 명령어들이니 하나하나 차근히 알아보겠습니다. 🙂

 

1. useradd – 사용자 계정 생성

useradd 명령어는 새로운 사용자 계정을 생성하는 기본 명령어입니다. 시스템 관리자가 새로운 사용자를 추가할 때 가장 먼저 사용하게 됩니다.

주요 옵션

  • -m, --create-home: 사용자의 홈 디렉토리 생성
  • -d, --home DIRECTORY: 홈 디렉토리 경로 지정
  • -s, --shell SHELL: 기본 로그인 셸 지정
  • -g, --gid GROUP: 사용자의 기본 그룹 지정
  • -G, --groups GROUPS: 사용자가 속할 추가 그룹 목록
  • -u, --uid UID: 사용자 ID 직접 지정
  • -c, --comment COMMENT: 사용자에 대한 설명 추가
  • -e, --expiredate DATE: 계정 만료일 설정 (YYYY-MM-DD)
  • -f, --inactive DAYS: 비밀번호 만료 후 계정이 비활성화될 때까지의 일수

사용 예시

기본 사용자 생성 (홈 디렉토리 자동 생성):

sudo useradd -m username

이 명령어는 ‘username’이라는 새 사용자를 생성하고 /home/username 디렉토리를 함께 생성합니다.

특정 셸과 설명을 포함한 사용자 생성:

sudo useradd -m -s /bin/bash -c "John Doe, IT Department" johndoe

여기서는 johndoe라는 사용자를 생성하면서 기본 셸을 bash로 지정하고 주석으로 부서 정보를 추가했습니다.

여러 그룹에 속한 사용자 생성:

sudo useradd -m -g developers -G sudo,docker,webadmin -s /bin/zsh developer1

이 예시에서는 ‘developer1’이라는 사용자를 생성하고, 기본 그룹은 ‘developers’로, 그리고 ‘sudo’, ‘docker’, ‘webadmin’ 그룹에도 추가로 소속시켰습니다. 또한 기본 셸을 zsh로 설정했습니다.

특정 UID와 홈 디렉토리 지정:

sudo useradd -m -u 1500 -d /opt/projects/user1 projectuser

‘projectuser’라는 사용자를 생성하면서 UID를 1500으로 지정하고, 홈 디렉토리를 기본 위치가 아닌 /opt/projects/user1로 설정했습니다.

만료일이 있는 임시 사용자 생성:

sudo useradd -m -e 2025-12-31 -c "Temporary Contractor" tempuser

이 명령어는 2025년 12월 31일에 만료되는 임시 계정을 생성합니다.

주의사항

  • 사용자 생성 후에는 반드시 passwd 명령어로 비밀번호를 설정해야 합니다.
  • 시스템 사용자와 일반 사용자의 UID 범위가 다르므로 혼동하지 않도록 주의해야 합니다.
  • 기본 셸을 지정하지 않으면 시스템 기본값이 사용됩니다(보통 /bin/sh)

 

2. usermod – 사용자 계정 수정

usermod 명령어는 이미 존재하는 사용자의 설정을 변경할 때 사용합니다. useradd와 비슷한 옵션을 많이 공유하지만, 기존 계정을 수정하는 데 사용됩니다.

주요 옵션

  • -d, --home DIRECTORY: 홈 디렉토리 변경
  • -m, --move-home: 홈 디렉토리 변경 시 파일 이동
  • -s, --shell SHELL: 로그인 셸 변경
  • -g, --gid GROUP: 기본 그룹 변경
  • -G, --groups GROUPS: 추가 그룹 목록 설정 (기존 그룹 대체)
  • -a, --append: -G 옵션과 함께 사용, 기존 그룹 유지하면서 새 그룹 추가
  • -L, --lock: 계정 잠금
  • -U, --unlock: 계정 잠금 해제
  • -e, --expiredate DATE: 계정 만료일 변경
  • -c, --comment COMMENT: 사용자 설명(주석) 변경
  • -u, --uid UID: 사용자 ID 변경

사용 예시

사용자의 로그인 셸 변경:

sudo usermod -s /bin/zsh username

이 명령어는 ‘username’ 사용자의 기본 셸을 zsh로 변경합니다.

사용자를 여러 그룹에 추가 (기존 그룹 유지):

sudo usermod -a -G docker,developers,project1 username

‘username’ 사용자를 docker, developers, project1 그룹에 추가합니다. -a 옵션을 사용하면 기존 그룹 소속은 유지됩니다.

사용자의 모든 그룹 변경 (기존 그룹 대체):

sudo usermod -G newgroup1,newgroup2 username

주의: 이 명령은 ‘username’ 사용자의 기존 추가 그룹을 모두 제거하고 newgroup1과 newgroup2만 설정합니다.

사용자 계정 잠금 (로그인 불가):

sudo usermod -L username

이 명령어는 사용자 계정을 잠가서 로그인할 수 없게 만듭니다. 주로 보안 문제나 임시 비활성화가 필요할 때 사용합니다.

사용자 계정 잠금 해제:

sudo usermod -U username

잠겨 있던 계정을 다시 사용할 수 있게 해제합니다.

사용자 홈 디렉토리 변경 (파일 이동 포함):

sudo usermod -d /new/home/path -m username

‘username’ 사용자의 홈 디렉토리를 새 경로로 변경하고, -m 옵션을 사용해 기존 파일들을 새 위치로 이동시킵니다.

사용자 이름 변경:

sudo usermod -l newusername oldusername

사용자 이름을 ‘oldusername’에서 ‘newusername’으로 변경합니다.

주의사항

  • 사용자가 현재 로그인 중인 상태에서는 일부 변경이 즉시 적용되지 않을 수 있습니다.
  • -G 옵션만 사용하면 기존 그룹이 모두 지워지므로 -a 옵션을 함께 사용해야 기존 그룹이 유지됩니다.
  • 시스템 계정의 UID를 변경하면 시스템에 문제가 생길 수 있으니 주의해야 합니다.
  • 홈 디렉토리 변경 시 -m 옵션을 사용하지 않으면 파일이 이동되지 않습니다.

 

3. groupadd – 그룹 생성

groupadd 명령어는 새로운 그룹을 시스템에 추가할 때 사용합니다.

주요 옵션

  • -g, --gid GID: 그룹 ID 직접 지정
  • -f, --force: 이미 그룹이 존재하는 경우에도 오류 없이 진행
  • -r, --system: 시스템 그룹 생성 (낮은 GID 할당)
  • -o, --non-unique: 중복 GID 허용

사용 예시

기본 그룹 생성:

sudo groupadd developers

간단하게 ‘developers’라는 새 그룹을 생성합니다.

특정 그룹 ID로 그룹 생성:

sudo groupadd -g 2000 project1

‘project1’이라는 그룹을 GID 2000으로 생성합니다.

시스템 그룹 생성:

sudo groupadd -r appgroup

시스템용 그룹을 생성합니다. 시스템 그룹은 애플리케이션이나 서비스를 위한 그룹으로, 일반적으로 낮은 GID가 할당됩니다.

중복 GID 허용으로 그룹 생성:

sudo groupadd -o -g 1000 specialgroup

이 명령어는 GID 1000을 가진 그룹이 이미 존재하더라도 같은 GID를 가진 새 그룹을 생성합니다.

주의사항

  • 그룹 이름은 시스템 내에서 고유해야 합니다.
  • 기본적으로 GID는 중복될 수 없지만, -o 옵션을 사용하면 가능합니다.
  • 시스템 그룹과 일반 그룹의 ID 범위가 다릅니다.

 

4. passwd – 사용자 비밀번호 관리

passwd 명령어는 사용자 계정의 비밀번호를 설정하거나 변경할 때 사용합니다.

주요 옵션

  • -d, --delete: 비밀번호 삭제 (비밀번호 없이 로그인 가능)
  • -e, --expire: 비밀번호 만료시키기 (다음 로그인 시 변경 필요)
  • -l, --lock: 계정 잠금
  • -u, --unlock: 계정 잠금 해제
  • -n, --minimum DAYS: 비밀번호 변경 사이의 최소 일수 설정
  • -x, --maximum DAYS: 비밀번호 유효 기간 (일수) 설정
  • -w, --warning DAYS: 비밀번호 만료 전 경고 일수 설정
  • -S, --status: 계정 상태 표시

사용 예시

자신의 비밀번호 변경:

passwd

일반 사용자가 자신의 비밀번호를 변경할 때는 옵션 없이 사용합니다. 현재 비밀번호를 입력한 후 새 비밀번호를 두 번 입력해야 합니다.

다른 사용자의 비밀번호 설정 (관리자 권한 필요):

sudo passwd username

관리자가 다른 사용자의 비밀번호를 변경할 때 사용합니다. 현재 비밀번호를 확인하지 않고 새 비밀번호만 설정합니다.

사용자 계정 비밀번호 만료시키기:

sudo passwd -e username

‘username’ 사용자의 비밀번호를 만료시킵니다. 다음 로그인 시 반드시 새 비밀번호를 설정해야 합니다.

비밀번호 정책 설정:

sudo passwd -n 7 -x 90 -w 7 username

‘username’ 사용자의 비밀번호 정책을 설정합니다: 비밀번호 변경 후 최소 7일 동안 다시 변경 불가, 90일 동안 유효, 만료 7일 전부터 경고 표시.

계정 상태 확인:

sudo passwd -S username

지정된 사용자 계정의 비밀번호 상태를 확인합니다. 출력에는 비밀번호 변경 날짜, 만료 정보 등이 포함됩니다.

비밀번호 잠금 (로그인 불가):

sudo passwd -l username

사용자 계정의 비밀번호를 잠가서 로그인할 수 없게 만듭니다. 계정 자체는 유지됩니다.

주의사항

  • 루트 계정이 아닌 일반 사용자는 자신의 비밀번호만 변경할 수 있습니다.
  • -d 옵션으로 비밀번호를 삭제하면 보안상 위험할 수 있으니 주의해야 합니다.
  • 시스템은 일반적으로 비밀번호 복잡성에 대한 정책을 가지고 있으며, 너무 단순한 비밀번호는 거부될 수 있습니다.
  • 비밀번호 정책은 /etc/login.defs 파일에서 기본값을 확인할 수 있습니다.

 

5. userdel – 사용자 계정 삭제

userdel 명령어는 시스템에서 사용자 계정을 제거할 때 사용합니다.

주요 옵션

  • -r, --remove: 사용자의 홈 디렉토리와 메일 스풀 함께 삭제
  • -f, --force: 강제 삭제, 사용자가 로그인 중이거나 실행 중인 프로세스가 있어도 삭제

사용 예시

기본 사용자 삭제:

sudo userdel username

‘username’ 사용자 계정을 삭제합니다. 단, 홈 디렉토리와 메일은 그대로 남습니다.

홈 디렉토리와 메일을 포함한 완전 삭제:

sudo userdel -r username

‘username’ 사용자 계정과 함께 해당 사용자의 홈 디렉토리와 메일 스풀까지 모두 삭제합니다.

강제 삭제:

sudo userdel -f -r username

사용자가 현재 로그인 중이거나 실행 중인 프로세스가 있어도 강제로 계정과 관련 파일을 모두 삭제합니다.

주의사항

  • -r 옵션을 사용하면 사용자의 모든 파일이 삭제되므로 중요한 데이터가 있는 경우 먼저 백업해야 합니다.
  • 시스템 계정 삭제는 시스템 안정성에 영향을 줄 수 있으니 주의해야 합니다.
  • 사용자가 소유한 파일이 홈 디렉토리 외부에 있다면 -r 옵션을 사용해도 삭제되지 않습니다.

 

6. groupdel – 그룹 삭제

groupdel 명령어는 시스템에서 그룹을 제거할 때 사용합니다.

주요 옵션

  • -f, --force: 그룹이 사용자의 기본 그룹이더라도 강제 삭제

사용 예시

그룹 삭제:

sudo groupdel groupname

‘groupname’ 그룹을 시스템에서 삭제합니다.

강제 그룹 삭제:

sudo groupdel -f groupname

‘groupname’ 그룹이 일부 사용자의 기본 그룹이더라도 강제로 삭제합니다.

주의사항

  • 기본적으로 어떤 사용자의 기본 그룹인 경우 삭제할 수 없습니다.
  • 시스템 그룹 삭제는 시스템 안정성에 영향을 줄 수 있습니다.
  • 그룹을 삭제해도 해당 그룹이 소유한 파일은 삭제되지 않으며, GID만 남게 됩니다.

 

7. gpasswd – 그룹 비밀번호 및 관리자 설정

gpasswd 명령어는 그룹 관리를 위한 도구로, 그룹 비밀번호 설정, 그룹 관리자 지정, 그룹 멤버 관리 등을 할 수 있습니다.

주요 옵션

  • -a, --add USER: 사용자를 그룹에 추가
  • -d, --delete USER: 그룹에서 사용자 제거
  • -r, --remove-password: 그룹 비밀번호 제거
  • -R, --restrict: 그룹 접근을 멤버로 제한
  • -M, --members USER1,USER2,...: 그룹 멤버 목록 설정 (기존 멤버 대체)
  • -A, --administrators ADMIN1,ADMIN2,...: 그룹 관리자 목록 설정

사용 예시

그룹에 사용자 추가:

sudo gpasswd -a username groupname

‘username’ 사용자를 ‘groupname’ 그룹에 추가합니다.

그룹에서 사용자 제거:

sudo gpasswd -d username groupname

‘groupname’ 그룹에서 ‘username’ 사용자를 제거합니다.

그룹 관리자 설정:

sudo gpasswd -A username1,username2 groupname

‘username1’과 ‘username2’를 ‘groupname’ 그룹의 관리자로 설정합니다. 그룹 관리자는 -a-d 옵션을 사용하여 멤버를 관리할 수 있습니다.

그룹 멤버 전체 설정 (기존 멤버 대체):

sudo gpasswd -M user1,user2,user3 groupname

‘groupname’ 그룹의 멤버를 ‘user1’, ‘user2’, ‘user3’로 설정합니다. 기존 멤버는 모두 제거됩니다.

그룹 비밀번호 설정:

sudo gpasswd groupname

‘groupname’ 그룹의 비밀번호를 설정합니다. 그룹 비밀번호가 있으면 newgrp 명령어로 해당 그룹으로 전환할 때 사용됩니다.

주의사항

  • 그룹 비밀번호는 보안 상 권장되지 않는 기능입니다.
  • -M 옵션은 기존 멤버 목록을 완전히 대체하므로 주의해서 사용해야 합니다.
  • 일반 사용자는 그룹 관리자로 지정된 경우에만 멤버를 관리할 수 있습니다.

 

8. groups 및 id – 사용자 그룹 정보 확인

groupsid 명령어는 사용자의 그룹 소속 정보를 확인할 때 사용합니다.

사용 예시

현재 사용자의 그룹 확인:

groups

특정 사용자의 그룹 확인:

groups username

사용자의 ID 및 그룹 정보 상세 확인:

id username

이 명령어는 사용자의 UID, GID, 소속된 모든 그룹을 표시합니다.

사용자의 UID만 확인:

id -u username

사용자의 기본 GID만 확인:

id -g username

사용자의 모든 그룹 ID 확인:

id -G username

주의사항

  • 일반 사용자는 다른 사용자의 정보를 확인하는 것이 제한될 수 있습니다.
  • 출력 결과에 표시되는 첫 번째 그룹이 사용자의 기본 그룹입니다.

 

9. chage – 사용자 계정 만료 정보 관리

chage 명령어는 사용자 계정의 만료 정보를 관리하는 데 사용됩니다.

주요 옵션

  • -d, --lastday LAST_DAY: 마지막 비밀번호 변경일 설정
  • -E, --expiredate EXPIRE_DATE: 계정 만료일 설정
  • -I, --inactive INACTIVE: 비밀번호 만료 후 계정 비활성화까지 유예 기간 설정
  • -m, --mindays MIN_DAYS: 비밀번호 변경 사이의 최소 일수
  • -M, --maxdays MAX_DAYS: 비밀번호 유효 기간 (일수)
  • -W, --warndays WARN_DAYS: 비밀번호 만료 전 경고 기간 (일수)
  • -l, --list: 계정 만료 정보 표시

사용 예시

사용자 계정 만료 정보 확인:

sudo chage -l username

‘username’ 사용자의 비밀번호 및 계정 만료 정보를 자세히 표시합니다.

계정 만료일 설정:

sudo chage -E 2026-12-31 username

‘username’ 사용자 계정이 2026년 12월 31일에 만료되도록 설정합니다.

비밀번호 정책 설정:

sudo chage -m 7 -M 90 -W 7 -I 14 username

이 명령어는 다음을 설정합니다:

  • 비밀번호 변경 후 최소 7일은 다시 변경 불가
  • 비밀번호 최대 유효 기간 90일
  • 만료 7일 전부터 경고 표시
  • 비밀번호 만료 후 14일 동안 유예 기간 제공, 이후 계정 비활성화

사용자가 다음 로그인 시 비밀번호 변경하도록 설정:

sudo chage -d 0 username

마지막 비밀번호 변경일을 0으로 설정하여, 다음 로그인 시 반드시 변경하도록 강제합니다.

주의사항

  • 날짜 형식은 YYYY-MM-DD 또는 숫자(1970년 1월 1일부터의 일수)로 지정할 수 있습니다.
  • -1 값은 “never”를 의미합니다 (예: -E -1은 계정이 만료되지 않음).
  • 루트 계정이 아닌 일반 사용자는 자신의 정보만 볼 수 있습니다(chage -l).

 

10. getent – 시스템 데이터베이스 정보 조회

getent 명령어는 시스템의 다양한 데이터베이스에서 정보를 조회할 수 있습니다. 사용자 및 그룹 관리에서는 passwd와 group 데이터베이스를 조회하는 데 유용합니다.

사용 예시

모든 사용자 정보 조회:

getent passwd

특정 사용자 정보 조회:

getent passwd username

모든 그룹 정보 조회:

getent group

특정 그룹 정보 조회:

getent group groupname

특정 UID 조회:

getent passwd 1000

특정 GID 조회:

getent group 1000

주의사항

  • getent passwd/etc/passwd 파일뿐만 아니라 LDAP, NIS 등의 네트워크 데이터베이스도 검색합니다.
  • 출력 형식은 각 데이터베이스에 따라 다릅니다.

 

11. newgrp – 현재 세션의 활성 그룹 변경

newgrp 명령어는 현재 로그인 세션의 활성 그룹을 변경합니다.

사용 예시

활성 그룹 변경:

newgrp groupname

이 명령어는 사용자가 소속된 그룹 중 ‘groupname’으로 현재 세션의 기본 그룹을 변경합니다.

기본 그룹으로 복귀:

newgrp

옵션 없이 사용하면 사용자의 기본 그룹으로 돌아갑니다.

주의사항

  • 사용자가 해당 그룹에 소속되어 있어야 합니다.
  • 그룹에 비밀번호가 설정되어 있다면 비밀번호 입력이 필요할 수 있습니다.
  • 이 명령어는 새 셸을 시작하므로, 종료하면 이전 그룹으로 돌아갑니다.

 

이상으로 리눅스 시스템에서 사용자와 그룹 관리에 대한 모든 명령어를 알아봤습니다. 이 글에서 다룬 명령어들을 능숙하게 사용할 수 있다면 리눅스 시스템을 더 효율적이고 안전하게 관리할 수 있을 것이라 생각합니다.  각 명령어의 man 페이지를 참고하면 더 자세한 옵션과 사용법을 확인할 수 있으니, 필요할 때 man useradd와 같이 입력하여 참고해보시길 추천드립니다. 이 글이 리눅스 사용자 및 그룹 관리에 대한 이해를 높이는 데 도움이 되었기를 바랍니다. 🙂

 

댓글 남기기