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]
참고 자료
🐧 리눅스 사용자/그룹 계정 관리 명령어 💯 총정리
리눅스 계정 종류 사용자 분류 루트 계정 : 모든 권한을 가진 특별한 사용자 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정 사용자 계정 : 실제 리눅스 사용자를 위한 계정 리눅스에서는
inpa.tistory.com
728x90
'Operating System > Linux' 카테고리의 다른 글
| [Ubuntu] 리눅스 권한 (0) | 2025.02.25 |
|---|---|
| [Ubuntu] 그룹 계정 관리 (0) | 2025.02.20 |
| [Ubuntu] 리눅스 계정 종류, Root 계정 및 시스템 계정 관리 (0) | 2025.02.20 |
| [Ubuntu] vi, nano, gedit 편집기 (0) | 2025.02.19 |
| [Ubuntu] Linux vi 편집기 (0) | 2025.02.06 |