리눅스를 하다보면 계정관련된 문제는 꼭 나오기 마련입니다.
이 문제들을 해결하기위해선 아래 명령어들을 꼭 알아야하는데 함께 리눅스 필수 명령어 10개를 알아보겠습니다.
명령어 집합 표
| 카테고리 | 명령어 | 용도 및 설명 |
| 사용자 생성/삭제 | useradd | 새로운 사용자 계정을 생성합니다. (홈 디렉터리, 셸 등 기본 설정) |
| userdel | 사용자 계정을 삭제합니다. (-r 옵션으로 홈 디렉터리까지 삭제) | |
| 비밀번호 관리 | passwd | 사용자 계정의 비밀번호를 변경합니다. (이전 질문에서 다룸) |
| chage | 비밀번호의 만료 기간(Password Aging)을 설정하거나 확인합니다. | |
| 정보/수정 | usermod | 기존 사용자 계정의 정보 (사용자 이름, 홈 디렉터리, 셸, 그룹 등)를 변경합니다. |
| id | 현재 로그인한 사용자 또는 특정 사용자의 UID, GID, 소속 그룹 정보를 확인합니다. | |
| whoami | 현재 자신이 누구인지 사용자 이름을 확인합니다. | |
| 그룹 관리 | groupadd | 새로운 그룹을 생성합니다. |
| groupdel | 기존 그룹을 삭제합니다. | |
| gpasswd | 그룹에 사용자를 추가/제거하거나 그룹 비밀번호를 설정합니다. (주로 usermod와 함께 사용) |
실습
※모든 테스트는 root 계정으로 이루어졌습니다.
1.useradd
useradd [계정명]
위 명령어로 계정을 추가하게 되면 새로운 계정이 추가되게 됩니다.
cat /etc/passwd
계정이 제대로 추가되었는지 확인하는 명령어는 위와 같습니다.

위 명령어를 치게되면 이런식으로 계정의 내역이 나오게 되고 각 내역의 의미는 아래와 같습니다.
| 위치 | 필드 내용 | 의미 | 설명 |
| 3번째 | 1003 | UID (User ID) | 이 계정의 고유 식별 번호입니다. 리눅스 시스템은 사용자 이름 대신 UID를 사용하여 파일 소유권 및 권한을 관리합니다. |
| 4번째 | 1003 | GID (Group ID) | 이 사용자가 로그인할 때 기본적으로 소속되는 주 그룹의 식별 번호입니다. 이 경우, 사용자 이름(test)과 같은 이름의 그룹에 속해 있을 가능성이 높습니다. |
2.userdel
위 명령어는 사용자 계정을 삭제하는 명령어 입니다.
위 명령어를 사용하게되면 사용자의 계정이 삭제가 되고 이걸 아까와 같이 cat /etc/passwd로 확인 가능합니다.
userdel test
cat /etc/passwd

3.passwd
패스워드를 지정하는 명령어 입니다. 해당 명령어를 친 뒤에 바꾸고싶은 계정명을 뒤에 입력하면
패스워드 변경 입력 칸이 뜨게됩니다.
useradd test [테스트계정다시생성]
passwd test [비밀번호변경]
위처럼 입력하면 아래와 같이 뜨게 되는데 주의사항은 8자리 이상의 비밀번호를 입력해야 한다는 점입니다.
(물론 보안때문에 더 길고 복잡한 비밀번호를 권장합니다)

4.chage
chage는 비밀번호의 만료일을 설정하는 명령어입니다. 이 명령어는 주로 옵션을 곁들여서 사용하는 것이 권장되며 그냥 사용할 경우 엔터를 입력받는 대화형식으로 출력되게 됩니다.
chage test[계정명]
chage -l test[계정명]


각 항목별 의미
| 항목 (영어) | 항목 (한국어) | 의미 및 역할 |
| Last password change | 마지막 비밀번호 변경일 | 해당 계정의 비밀번호가 마지막으로 변경된 날짜를 나타냅니다. 이 날짜를 기준으로 만료 기간(Maximum number of days)이 계산됩니다. |
| Password expires | 비밀번호 만료일 | 비밀번호를 반드시 변경해야 하는 날짜입니다. 이 날짜가 지나면 사용자는 로그인 시 비밀번호 변경을 강제받습니다. (Last password change + Maximum number of days로 계산됨) |
| Password inactive | 비밀번호 비활성화 기간 | 비밀번호 만료일(Password expires)이 지난 후, 비밀번호를 변경하지 않고 계정을 사용할 수 있는 유예 기간입니다. 이 기간마저 지나면 계정은 잠겨버립니다. (never로 설정된 경우 무기한 유예 기간을 의미하거나, 만료일 지나면 즉시 변경 강제) |
| Account expires | 계정 만료일 | 계정 자체가 만료되어 더 이상 사용할 수 없게 되는 날짜입니다. 이 날짜가 지나면 비밀번호와 관계없이 로그인이 불가능합니다. (never는 계정이 영구적으로 유효하다는 의미) |
| Minimum number of days between password change | 최소 비밀번호 변경 가능 일수 | 비밀번호를 한 번 변경한 후, 다시 변경하기 위해 기다려야 하는 최소 기간입니다. (잦은 비밀번호 변경으로 인한 시스템 부하 방지 및 보안 정책 유지 목적) |
| Maximum number of days between password change | 최대 비밀번호 사용 가능 일수 | 비밀번호를 변경하지 않고 사용할 수 있는 최대 기간입니다. 이 기간이 지나면 비밀번호 만료일(Password expires)에 도달합니다. |
| Number of days of warning before password expires | 만료 전 경고 기간 | 비밀번호 만료일이 되기 며칠 전부터 사용자에게 로그인할 때마다 경고 메시지를 표시할지 설정하는 기간입니다. |
5.usermod
사용자의 그룹변경이나 셀변경 등의 속성을 변경하는 명령어입니다. 이중에서 가장 자주 사용하는 명령어는 아래와 같습니다.
1. 사용자 이름변경
usermod -l [새 이름] [기존 이름]


2.그룹 추가 변경
사용자의 그룹을 추가하거나 변경하는 옵션들 입니다.
이때 그룹이 뭐뭐있는지 확인하는 명령어는 아까 패스워드와 비슷한 /etc/group경로에 있습니다.
cat /etc/group [그룹확인]

- -g(그룹변경)
해당 옵션으로 유저의 그룹명을 변경 가능합니다.
usermod -g tty test1 [변경 그룹명] [유저이름]

위 명령어로 그룹을 변경해주고 변경된그룹은 groups 명령어로 확인 가능합니다.
groups test1 [계정명]

- -G(보조그룹 지정)
사용자의 보조 그룹을 새로 지정된 그룹 목록으로 완전히 대체합니다
usermod -G disk,mem test1 [보조그룹,보조그룹] [계정명]

- -aG(보조그룹 추가)
사용자의 보조 그룹을 새로 지정된 그룹 목록으로 완전히 대체합니다 (기존 그룹목록에 추가)
usermod -aG sys test1 [그룹명] [계정명]
groups test1 [계정명]
위 명령어는 그룹명을 기존에 있는 그룹들에 영향이 가지 않도록 추가를 하기 때문에 아래와 같이 그룹이 기존 그룹들에 추가가 된것을 확인했습니다.

- -d (home 디렉토리 경로 지정)
해당 명령어는 홈 디렉토리의 경로를 지정해주는 명령어입니다. mkdir로 우선 home 경로에 test1을 만들고 거기로 경로를 변경시켜 보겠습니다.
mkdir test1 [디렉토리생성]
usermod -d /home/test1 test1 [변경경로] [계정명]
cat /etc/passwd

생성이 완료되었으면 바로 -d 옵션을 통해서 경로를 변경하겠습니다.


- -L (계정잠금)
계정을 잠금하는 옵션인 -L입니다. 이 명령어를 쓰면 해당 계정의 로그인을 차단하는 명령어 이므로 해당 계정으로의 접속이 불가 합니다.
usermod -L test1 [계정명]
grep test1 /test/shadow [계정잠금확인]
계정이 잠금이 된것을 확인하려면 아래처럼 grep test1 /etc/shadow를 통해서 계정명의 뒤에 ! (느낌표) 가 붙어있는지를 확인하면 됩니다. 이 느낌표가 있으면 제대로 잠금이 걸린 상태입니다.

- -U(계정 잠금해제)
잠금해제하는 옵션인 -U입니다. 해당 옵션으로 명령어를 치게 되면 로그인이 불가능했던 계정에 다시 로그인을 가능하게 해줍니다.
usermod -U test1 [계정명]
gerp test1 /etc/shadow [계정상태확인]
해당 명령어로 계정의 상태를 확인해보면 계정 잠금 상태에서는 있던 !(느낌표)가 없어진것을 확인 할수 있습니다.

6.id
소속 권한 및 정보를 파악할때 사용하는 명령어입니다. 파일소유권이나 접근 권한을 확인할때 사용합니다.
id test1 [계정명]

위처럼 아까 설정한 그룹명과 이름 그리고 권한등을 확인 할수 있습니다.
7.whoami
현재 접속한 사용자가 누구인지 어떤계정인지 확인 할수 있습니다.
whoami

8.groupadd
새로운 그룹을 추가하는 명령어 입니다. 해당 명령어로 기존의 그룹 명단에 새로운 그룹을 추가할수 있습니다.
groupadd tt1 [생성그룹명]
cat /etc/group [그룹출력]

위 명령어를 입력하고 아래로 스크롤을 내리면 추가한 그룹인 tt1이 보이게 됩니다.

9.groupdel
이 명령어는 생성된 그룹을 삭제하는 명령어 입니다. 이때 관리자 권한이 필요합니다.
또한 삭제하려는 그룹이 현재 어떤 사용자 계정의 기본 그룹으로 설정되어 있다면, groupdel 명령어는 실패하며 그룹을 삭제해도 해당 그룹이 소유한 파일이나 디렉터리의 GID는 숫자로 남아 있게 됩니다.
아래와 같이 test1 계정의 기본그룹으로 지정된 tty를 삭제하려면 "cannot remove the primary group of user"가 발생해 삭제가 불가능하게 됩니다.

그러면 기본그룹으로 지정된 그룹은 삭제가 안되니 기본그룹으로 아무것도 지정이 안된 아까 위에서 만든 tt1을 삭제를 해보겠습니다.
groupdel tt1 [삭제할 계정명]
cat /etc/group

10.gpasswd
해당 명령어는 그룹의 비밀번호를 관리하고 또 그룹의 멤버를 추가, 제거 할때 사용되는 명령어 입니다.
- -a (멤버추가)
지정된 사용자를 그룹에 추가합니다.
gpasswd -a test1 tt2 [계정명] [그룹명]
grep tt2 /etc/group
위처럼 추가할 계정과 그룹을 입력하고 grep을 출력하면 아래오 ㅏ같이 추가가 됩니다.

- -d (멤버제거)
지정된 사용자를 그룹에서 제거합니다.
gpasswd -d test1 tt2 [계정명] [그룹명]
grep tt2 /etc/group

- -M (멤버 일괄 설정)
지정된 사용자들로 그룹의 멤버를 완전 대체하여 바꿉니다.
테스트를 위해 test1 을 tt2에 추가해주고 유저명 test2를 새롭게 생성합니다. 그리고 gpasswd -M 을 통해서 test2로 해당그룹을 덮어 씌워보겠습니다.
gpasswd -a test1 tt2 [계정명] [그룹명]
useradd test2 [생성계정명]

gpasswd -M test2 tt2 [계정명][그룹명]
grep tt2 /etc/group

해당 그룹을 출력하면 기존의 test1 을 gpasswd -a 를 통해서 추가했음에도 -M 옵션으로 인하여 덮어 씌워진것을 확인 할수 있습니다.
- 옵션없이(그룹비밀번호설정)
옵션없이 gpasswd만 설정하면 그룹의 비밀번호를 설정하거나 변경할수 있습니다.
gpasswd tt2 [그룹명]

- -r (그룹 비밀번호제거)
해당 명령어는 그룹에 지정된 비밀번호를 제거하는 옵션입니다. 아래와같이 패스워드를 지정한 tt2에 -r을 사용해서 비밀번호를 없애보겠습니다.
우선 비밀번호 적용이 되었는지부터 확인합니다.
grep tt2 /etc/gshadow

그리고 확인이 끝났으면 -r로 삭제를 해봅니다.
gpasswd -r tt2 [그룹명]
아래와 같이 비밀번호가 제거되어 ::: 만 표시 되는것을 확인 하실수 있습니다.

- -A(그룹 관리자 지정)
해당 그룹의 관리자를 지정하는 옵션입니다. 그룹의 관리자 계정으로 지정되면 해당그룹에 사용자추가나 삭제등을 관리를 할수있는 권한을 얻게 됩니다.
gpasswd -A test2 tt2 [사용자명][그룹명]
grep tt2 /etc/gshadow
그룹의 관리자로 지정할 사용자명을 입력해주고 제대로 지정이되었는지 확인해줍니다.

위처럼 tt2의 그룹에 속해있는 test2가 있고 그 그룹의 관리자로 test2가 지정된것을 확인할수 있습니다.
이로써 리눅스의 그룹과 계정에 관련된 기초명령어들을 알아보았습니다.
'Linux' 카테고리의 다른 글
| Nginx nginx.conf 구조 살펴보기: HTTP, Server, Location 블록 완벽 정리 (0) | 2025.12.18 |
|---|
