본문 바로가기

Operating System/Linux

[Ubuntu] 사용자 계정 관리

728x90
계정 추가 명령어
사용자 추가 (useradd / adduser)
  • useradd옵션을 직접 명시해야 하며, adduser인터랙티브 입력을 통해 자동으로 처리
  • 'useradd 계정명' 명령어만 입력할 경우 홈 디렉토리조차 생성되지 않음
useradd testuser


추가된 사용자 확인
# passwd 파일 맨끝 라인만 출력하기 (맨끝이 최근에 추가된 유저 정보)
tail -1 /etc/passwd
# [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]

  • '/etc/passwd' 파일에는 콜론(:) 으로 구분되며 다음과 같은 정보를 포함
사용자명 비밀번호 uid gid 사용자 계정 설명 홈 디렉터리
testuser x 1001 1002   testuser /bin/sh

사용자 추가 옵션
useradd [옵션] 사용자명
옵션 설명
-d, --home 홈 디렉터리 지정
-D, --default 사용자 생성시 사용하는 기본값을 보거나 설정
-e, --expiredate YYYY-MM-DD 형식으로 계정의 만기일 지정
-f, --inactive 패스워드 만료일 이후 유효기간을 설정
ㄴ 1이상의 숫자이면 해당일수만큼 패스워드 유효
ㄴ 0이면 만료되면 바로 잠김
ㄴ -1이면 해당기능을 사용하지 않음
-g, --gid GROUP 사용자 그룹 설정
설정하지 않으면 사용자 이름과 동일한 그룹에 설정
-G, --groups 기본 그룹 이외에 추가로 그룹을 생성할 때
-k, --skel SKEL_DIR -m 옵션을 통해 홈 디렉터리 생성할 때 복사할 기본 파일을 지정할 때 사용
-m, --create-home 홈 디렉터리를 지정할 때 사용하고 디렉터리가 없으면 생성
-k 옵션과 같이 사용해서 홈 디렉터리 생성 시 복사할 기본 파일 경로도 지정
-M 홈 디렉터리를 생성하지 않음
-N, --no-user-group 사용자와 동일한 이름으로 그룹을 생성하지 않음
-p, --pasword 평문이 아닌 암호화 된 패스워드를 설정
-r, --system 시스템 계정을 생성
-s, --shell 사용자가 사용할 셸을 지정
-u, --uid 사용자의 유일한 UID 값 설정

사용자 생성 정보 기본 사항 확인 (-D)
  • 신규 사용자를 추가할 때 반영되는 기본 사항들을 확인하는 명령어
  • /etc/default/useradd 파일의 내용을 참고하며, 이 파일의 내용을 그대로 보여준다고 생각하면 됨


홈 디렉터리 지정하기 (-m)
  • 사용자의 홈 디렉터리를 지정하는 옵션
  • 중간 경로가 있을 경우에는 미리 생성해 주어야 함
  • 별도로 지정하지 않으면 /etc/default/useradd의 'HOME' 변수에 지정된 디렉터리에 '사용자명'으로 생성
  • -m 옵션을 사용하면 계정 추가와 동시에 디렉터리를 동시에 생성
# 사용자 홈 디렉토리를 /home/testuser으로 자동 생성
useradd -m testuser

# 기본적으로 useradd는 /home에 사용자의 홈 디렉토리를 생성. 
# 사용자의 홈 디렉토리를 다른 위치에 작성하려면 d(--home) 옵션을 사용.
useradd -m -d /home/color/testuser testuser

uid 지정하기 (-u)
  • 사용자의 uid를 설정하는 옵션
    • 단, 다른 사용자가 이미 사용 중인 uid 지정 불가
  • 별도의 옵션을 지정하지 않을 경우 uid는 자동 발번되어 추가
# 특정 UID를 가진 사용자를 생성
useradd -u 999 testuser
# useradd -u [UID숫자] [유저명]

#사용자의 UID를 확인
id -u testuser


그룹 지정하기 (-g)
  • 사용자가 소속될 그룹을 지정하는 옵션
  • 옵션을 생략할 경우 아이디와 동일한 그룹에 포함
  • 옵션을 사용하여 gid를 지정하는 경우 해당 gid는 반드시 생성되어 있어야만 함
# 그룹을 지정하여 사용자를 생성. 단, 그룹은 미리 생성되어 있어야 함.
useradd -g groupname testuser
# useradd -g [그룹명] [유저명]
  • 리눅스 사용자는 하나 이상의 그룹에 속하게 되어 있음
  • 그룹은 계정이 생성될 때 '사용자명'으로 생성되는데, 이와 동시 그룹의 고유 id인 'gid(group id)'도 발번
  • 그룹명과 gid는 /etc/group 파일을 보면 확인이 가능하며 이 파일도 /etc/passwd 파일처럼 여러 개의 필드가 '콜론(:)'으로 구분
tail -1 /etc/group
# testuser1:x:1002:
# [그룹명]:[패스워드]:[GID]:[멤버목록]

  • 신규 사용자 계정 'testuser2'를 추가
  • /etc/passwd 파일에서 testuser2 계정의 내용을 확인해보면, gid가 이전에 생성된 1001번 이후의 1002번
  • /etc/group 파일에서 gid가 1002번인 그룹의 이름 'testuser2'라는 것을 확인 가능
useradd testuser2

cat /etc/passwd | grep testuser2
# testuser2:x:1002:1003::/home/testuser2:/bin/sh
# [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정]:[설명]:[홈 디렉터리]:[셸]

cat /etc/group | grep 1003
# testuser2:x:1003:
# [그룹명]:[패스워드]:[GID]:[멤버목록]

  • 이미 존재하는 그룹에 신규 사용자 계정을 추가해야 하는 경우 '-g gid' 옵션을 사용
  • 예를 들어, 'testuser3' 계정을 생성하되 별도의 신규 그룹을 생성하지 않고 그룹명 'testuser2'인 '1003(gid)'에 추가
# testuser3을 생성하되 그룹은 1003로 설정
useradd -g 1003 testuser3
cat /etc/passwd | grep testuser3
# testuser3:x:1003:1003::/home/testuser3:/bin/sh
# [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]


2차 그룹 지정하기 (-G)
  • 사용자가 소속될 2차 그룹을 지정하는 옵션
  • [-g] 옵션과 마찬가지로, 해당 gid는 이미 생성되어 있어야만
# 여러 그룹 할당
useradd testuser4

# 가장 마지막 그룹 5개 확인
tail -5 /etc/group
# wheel:x:1001:ubuntu
# system-id-test:x:982:
# testuser1:x:1002:
# testuser2:x:1003:
# testuser4:x:1004:

useradd -g testuser1 -G testuser2,testuser4 tester
# useradd -g [그룹명] -G [그룹1,그룹2] [유저명]

# 사용자의 GID를 확인
id -gn tester
# testuser1

# 사용자 그룹 전체 확인
id tester
# uid=1005(tester) gid=1002(testuser1) groups=1002(testuser1),1003(testuser2),1004(testuser4)

  • tester의 기본 그룹 확인 → /etc/passwd
  • tester의 2차 그룹 확인 → /etc/group
cat /etc/passwd | grep tester
# tester:x:1005:1002::/home/tester:/bin/sh
# UID : 1005 / GID : 1002(testuser1 그룹)

cat /etc/group | grep tester
# testuser2:x:1003:tester # GID가 1003번인 testuser2라는 그룹에 tester라는 유저가 그룹 멤버로 속함
# testuser4:x:1004:tester # GID가 1004번인 testuser4라는 그룹에 tester라는 유저가 그룹 멤버로 속함


UID와 그룹 동시 지정하기
# UID와 그룹을 지정하여 사용자를 생성
# 단, color 그룹은 미리 생성되어 있어야 함
useradd -u 2222 -g 1001 uid_gid_tester
# useradd -u [UID숫자] -g [그룹명] [유저명]

tail -1 /etc/passwd
# uid_gid_tester:x:2222:1001::/home/uid_gid_tester:/bin/sh
# UID : 2222번 / GID : 1001번(wheel 그룹)


사용자 설명 추가하기 (-c)
  • 'comment'의 이니셜로 사용자에 대한 설명을 추가하는 옵션
  • 띄어쓰기가 필요할 경우 쌍따옴표(")로 묶음
useradd -c "Comment testuser" comment_tester
tail -1 /etc/passwd
# comment_tester:x:2223:2223:Comment testuser:/home/comment_tester:/bin/sh


계정 만기일 설정하기 (-e)
  • 계정의 만기일을 설정
  • 만기일 형식은 반드시 'YYYY-MM-DD'로 설정
useradd -e 2025-02-21 expiredate_user

chage -l expiredate_user
# 마지막으로 암호를 바꾼 날 : 2월 20, 2025
# 암호 만료 : 안함
# 암호가 비활성화 기간 : 안함
# 계정 만료 : 2월 21, 2025
# 암호를 바꿀 수 있는 최소 날 수 : 0
# 암호를 바꿔야 하는 최대 날 수 : 99999
# 암호 만료 예고를 하는 날 수 : 7


패스워드 만기일 설정하기 (-f)
  • 패스워드 만기일을 날짜 수로 지정
useradd -f 3 expire_pwd_tester

cat /etc/shadow | grep expire_pwd_tester
# expire_pwd_tester:!:20139:0:99999:7:3::

# expire_pwd_tester : 사용자 계정명
# ! : 패스워드 (!는 계정이 비활성화됨을 의미)
# 20139 : 패스워드 변경 마지막 날짜 (기준: 1970-01-01부터의 일수)
# 0 : 최소사용일 (패스워드를 변경할 수 없는 최소 일수)
# 99999 : 최대사용일 (패스워드를 변경해야 하는 최대 일수)
# 7 : 경고 기간 (패스워드 만료 전 사용자에게 알리는 일수)
# 3 : 계정 비활성화 기간 (패스워드가 만료된 후 계정이 비활성화되기까지의 일수)
# 비어있음 : 계정 만료일 (기준: 1970-01-01부터의 일수, 설정되지 않음)

사용자의 셸 지정하기 (-D -s)
  • '명령어 해석기'라는 셸을 사용자별로 지정하는 옵션
  • 옵션을 지정하지 않으면 '/etc/default/useradd' 파일의 기본 설정을 따름
# 기본 셸 값 확인
useradd -D | grep -i shell
# SHELL=/bin/sh

# 기본 로그인 셸을 /bin/sh에서 /bin/bash로 변경
sudo useradd -D -s /bin/bash

# 기본 셸 값 확인
sudo useradd -D | grep -i shell
# SHELL=/bin/bash

  • 리눅스는 기본적으로 'bash' 셸을 사용하는데 이 외에도 다양한 셸이 존재
  • 현재 사용하는 리눅스에서 사용 가능한 셸의 목록을 확인하려면 '/etc/shells' 파일을 확인 가능


계정 패스워드 명령어
패스워드 설정
passwd testuser1
# passwd [옵션] [계정명]

옵션 설명
-d, --delete 패스워드 삭제 (비밀번호 없이 로그인)
-e, --expire 사용자의 패스워드 만료 설정
-i, --inactive 패스워드 만료 후 비활성화 전 유예기간 일 지정
-l, --lock 사용자 패스워드에 락 걸어 로그인 막음
-n, --mindays 비밀번호 변경할수 있을때까지 유지해야할 일수 설정
-q, --quiet 화면 출력없이 명령을 수행
-S, --status  사용자의 로그인명, 패스워드 상태, 설정여부, 마지막으로 변경한 날짜, 
패스워드 변경까지 남은 기간 등 다양한 정보 출력
-u, --unlock 락을 걸었던 패스워드 다시 해제
-w, --warnday 패스워드 만료 전 경고날짜 지정
-x, --maxdays 최대 사용 기간 설정
# testuser 사용자 패스워드 설정
passwd testuser

# 현재 사용자 패스워드 변경
passwd

# 지정한 사용자 패드워드 만료
passwd -e testuser

# 지정한 사용자의 패스워드 상태를 출력
passwd -S testuser

# 지정한 사용자 패스워드 락
passwd -l testuser

# 지정한 사용자 패스워드 삭제
passwd -d testuser

# 패스워드 변경후 7일간 변경 불가능, 365일간 사용할수 있고 5일전부터 패스워드 변경 경고. 만료후 10일 유예기간
passwd -n 7 -x 365 -w 5 -i 10 testuser

패스워드 유효기간 관리 (chage)
$ chage testuser1
# chage [옵션] 계정명

옵션 설명
-d,--lastday 패스워드를 변경해야 할 날짜수 지정
-E,--expiredate 계정이 만료되는 날 설정
-I(대문자 i),--inactive 계정만료후 패스워드가 비활성화될때까지 유예기간을 설정
-l,--list 계정의 패스워드 만료 정보 보여줌
-m,--mindays 패스워드 변경할 때 최소 날짜를 지정
-M,--maxdays 패스워드 변경할 때 최대날짜 지정
-W,--warndays 패스워드 만료에 대한 경고 메시지를 보여줄 날짜를 지정
# 만료정보 출력
chage -l testuser1

# test 계정의 패스워드 최소 사용날짜 5일, 최대 사용날짜, 만료 후 3일 유예기간
chage -m 5 -M 60 -I 3 testuser1

# test 계정의 만료일 지정
chage -E 2025-12-31 testuser1

# test계정의 패스워드 변경일 20000 설정 (1970-01-01 기준 20000일 후)
chage -d 20000 testuser1

계정 전환 / 설정 / 삭제 명령어
계정 전환 (su)
  • su : switch user의 약자
# ubuntu 계정으로 전환
su ubuntu

# root 계정으로 전환
su
su root

# su [옵션] [계정명]

옵션 설명
-c, --command 지정한 사용자로 셸이 실행할 명령어 지정
-, -l, -login 사용자가 직접 로그인했을때 동일하게 환경변수가 설정되고 홈 디렉토리로 이동
-s, --shell  명시된 셸 사용
# 사용자 전환을 하지않고 일시적으로 지정명령 실행
su root -c "vi /etc/passwd"

계정 설정 (usermod)
  • 사용자 셸, 홈디렉토리, 그룹, UID, GID 등 사용자 설정 변경
  • useradd 명령어의 설정 대부분 적용 가능
usermod [options] username
옵션 설명
-a, --append 사용자에 그룹 추가하기위해 -G 옵션과 사용
-c, --comment 사용자에 간단한 정보 입력
-l, --login 로그인 이름 변경
-L, --lock 패스워드에 락
-U, --unlock 패스워드 락 해제
# 사용자 홈 디렉토리 확인 (echo, /etc/passwd)
echo ~testuser1
# /home/testuser1

# 사용자 홈 디렉터리 변경
# -m 옵션까지 입력하면 내용도 복사
usermod -d /home/testdir testuser1

# 사용자 그룹을 wheel로 변경
usermod -g wheel testuser1


계정 삭제 (userdel / deluser)
  • userdel : 모든 리눅스 배포판에서 사용 가능 (Ubuntu, CentOS, Debian 등)
  • deluser : Ubuntu 및 Debian에서만 사용 가능 (CentOS에는 없음)
$ userdel [option] username

# 계정삭제 (단, 홈디렉토리 파일은 남아있음)
userdel testuser1

# -r 옵션을 통해 사용자 계정 홈 디렉토리도 삭제
userdel -r testuser1

# -f옵션으로 강제 삭제
userdel -f testuser1
# userdel이랑 같지만 옵션명이 다름
deluser [userName]

# 홈 디렉토리 삭제
deluser --remove [userName]

# 홈 디렉토리, 계정명으로된 모든 파일 삭제
deluser --remove-all-files [userName]

참고 자료

https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B3%84%EC%A0%95-%EA%B4%80%EB%A6%AC-%EB%AA%85%EB%A0%B9%EC%96%B4-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC#%EA%B3%84%EC%A0%95_%EC%A0%84%ED%99%98_/_%EC%84%A4%EC%A0%95_/_%EC%82%AD%EC%A0%9C_%EB%AA%85%EB%A0%B9%EC%96%B4

 

🐧 리눅스 사용자/그룹 계정 관리 명령어 💯 총정리

리눅스 계정 종류 사용자 분류 루트 계정 : 모든 권한을 가진 특별한 사용자 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정 사용자 계정 : 실제 리눅스 사용자를 위한 계정 리눅스에서는

inpa.tistory.com

 

728x90