우리 모두 가장 인기 있는 명령어인 ‘useradd‘ 또는 ‘adduser‘가 Linux에서 사용된다는 것을 알고 있습니다. 어떤 때는 Linux 시스템 관리자가 특정 속성, 제한 사항 또는 주석으로 Linux에서 사용자 계정을 생성해야 할 때가 있습니다.
Linux에서 ‘useradd‘ 명령어는 Linux 및 기타 Unix 계열 운영 체제에서 사용자 계정을 추가하거나 생성하는 데 사용되는 저수준 유틸리티입니다. ‘adduser‘ 명령어는 ‘useradd‘ 명령어와 매우 유사하며, 이는 단순히 심볼릭 링크에 불과합니다.
일부 Linux 배포판에서 ‘useradd‘ 명령어는 약간 다른 버전일 수 있습니다. Linux에서 새 사용자 계정을 생성하기 전에 문서를 읽는 것이 좋습니다.
Linux 터미널에서 ‘useradd‘ 명령어를 실행할 때 다음과 같은 주요 작업을 수행합니다:
- 새로 생성된 사용자 계정을 위해 /etc/passwd, /etc/shadow, /etc/group 및 /etc/gshadow 파일을 편집합니다.
- 새 사용자를 위한 홈 디렉토리를 생성하고 확장합니다.
- 홈 디렉토리에 대한 권한과 소유권을 설정합니다.
useradd 명령어 구문
‘useradd’ 명령어의 기본 구문은 다음과 같습니다:
useradd [options] username
이 기사에서는 Linux에서 가장 일반적으로 사용되는 ‘useradd’ 명령어 15가지를 실제 예제와 함께 보여드리겠습니다.
1. Linux에서 새 사용자를 추가하는 방법
새 사용자를 추가하거나 생성하려면 ‘useradd’ 또는 ‘adduser’ 명령어를 사용하여 ‘username’을 따르세요. ‘username’은 사용자가 시스템에 로그인하는 데 사용하는 로그인 이름입니다.
한 번에 하나의 사용자만 추가할 수 있으며, 사용자 이름은 고유해야 하며 이미 시스템에 존재하지 않아야 합니다.
예를 들어, ‘tecmint’라는 새 사용자를 추가하려면 다음 명령어를 사용하세요:
useradd tecmint
Linux에서 ‘useradd’ 명령어로 새 사용자를 추가할 때 잠긴 상태로 생성됩니다. 해당 사용자 계정을 잠금 해제하려면 ‘passwd’ 명령어를 사용하여 계정에 대한 암호를 설정해야 합니다.
passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

새 사용자가 생성되면 자동으로 ‘etc/passwd’ 파일에 해당 사용자의 항목이 추가됩니다. 이 파일은 사용자 정보를 저장하는 데 사용되며 항목은 다음과 같아야 합니다.
tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash

위의 항목에는 각각 고유한 의미를 가진 일련의 7개의 콜론으로 구분된 필드가 있습니다.
이러한 필드가 무엇인지 살펴보겠습니다:
- 사용자 이름 – 사용자 로그인 이름은 시스템에 로그인하는 데 사용됩니다. 길이는 1에서 32자 사이여야 합니다.
- 암호 – 사용자 암호(또는
'x'
문자)가 암호화된 형식으로 ‘/etc/shadow‘ 파일에 저장됩니다. - 사용자 ID (UID) – 모든 사용자는 사용자 ID(UID), 즉 사용자 식별 번호를 가져야 합니다. 기본적으로 UID 0는 root 사용자를 위해 예약되며, 1에서 99까지의 UID는 다른 사전 정의된 계정을 위해 예약되어 있습니다. 또한, 100에서 999까지의 UID는 시스템 계정과 그룹을 위해 예약되어 있습니다.
- 그룹 ID (GID) – 주요 그룹 ID(GID), 즉 그룹 식별 번호가 ‘/etc/group‘ 파일에 저장됩니다.
- 사용자 정보 – 이 필드는 선택 사항으로 사용자에 대한 추가 정보, 예를 들어 사용자의 전체 이름을 정의할 수 있습니다. 이 정보는 finger 명령을 사용하여 채울 수 있습니다.
- 홈 디렉토리 – 사용자의 홈 디렉토리의 절대 위치입니다.
- 쉘 – 사용자의 쉘의 절대 위치, 즉 /bin/bash.
2. 서로 다른 홈 디렉토리를 가진 사용자 생성 방법
기본적으로 ‘useradd‘ 명령은 사용자의 홈 디렉토리를 ‘/home‘ 디렉토리 아래에 사용자 이름으로 생성합니다. 예를 들어, 위에서 볼 수 있듯이, ‘tecmint‘ 사용자의 기본 홈 디렉토리는 ‘/home/tecmint‘입니다.
그러나이 동작은 ‘-d’ 옵션과 함께 새 홈 디렉토리 위치(예: ‘/data/projects‘)를 사용하여 변경할 수 있습니다. 예를 들어, 다음 명령은 홈 디렉토리를 ‘/data/projects‘로 설정한 사용자 ‘anusha‘를 생성합니다.
# useradd -d /data/projects anusha # passwd anusha
사용자의 홈 디렉토리 및 사용자 ID, 그룹 ID, 셸 및 주석과 같은 기타 사용자 관련 정보를 다음 cat 명령을 사용하여 볼 수 있습니다.
cat /etc/passwd | grep anusha anusha:x:1001:1001::/data/projects:/bin/bash

3. 특정 사용자 ID로 사용자 생성 방법
리눅스에서 각 사용자는 고유한 UID(고유 식별 번호)를 갖습니다. 리눅스에서 새 사용자 계정을 만들 때 기본적으로 사용자 ID를 할당합니다. 500, 501, 502 등입니다.
그러나 ‘-u’ 옵션을 사용하여 사용자 지정 사용자 ID로 사용자를 만들 수 있습니다. 예를 들어, 다음 명령은 사용자 ‘navin‘을 사용자 지정 사용자 ID ‘1002‘로 만듭니다.
useradd -u 1002 navin
이제 다음 명령을 사용하여 정의된 사용자 ID(1002)로 생성된 사용자를 확인해 봅시다.
cat /etc/passwd | grep navin navin:x:1002:1002::/home/navin:/bin/bash

참고: 사용자 ID의 값은 시스템에서 이미 생성된 다른 사용자와 고유해야 합니다.
4. 특정 그룹 ID로 사용자 생성 방법
GID (그룹 식별자)를 가진 각 사용자가 있습니다.
특정 그룹 ID를 사용하여 사용자를 생성할 수도 있습니다. '-g'
옵션을 사용하여 동시에 특정 UID와 GID를 가진 ‘tarunika’ 사용자를 추가할 것입니다.
useradd -u 1005 -g tecmint tarunika
이제 ‘tarunika’ 사용자의 할당된 사용자 ID와 그룹 ID를 ‘etc/passwd’ 파일에서 확인합니다.
cat /etc/passwd | grep tarunika tarunika:x:1005:1000::/home/tarunika:/bin/bash
사용자의 GID를 확인하려면 id 명령을 사용합니다.
id -gn tarunika

5. 사용자를 여러 그룹에 추가하는 방법
추가 그룹에 사용자를 추가하는 데 '-G'
옵션이 사용됩니다. 각 그룹 이름은 쉼표로 구분되며 사이에 공백이 없습니다.
이 예에서는 ‘tecmint’ 사용자를 admins, webadmin, developers 등 여러 그룹에 추가합니다.
groupadd admins groupadd webadmin groupadd developers usermod -a -G admins,webadmin,developers tecmint useradd -G admins,webadmin,developers paddy
다음으로, id 명령을 사용하여 사용자에게 여러 그룹이 할당되었는지 확인합니다.
id tecmint uid=1000(tecmint) gid=1000(tecmint) groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. 홈 디렉터리 없이 사용자 추가하는 방법
일부 상황에서 보안상의 이유로 사용자에게 홈 디렉터리를 할당하고 싶지 않은 경우, 시스템을 다시 시작한 후에는 사용자의 홈 디렉터리가 루트가 될 것입니다. 이러한 사용자가 ‘su’ 명령을 사용할 때 이전 사용자의 홈 디렉터리가 로그인 디렉터리가 됩니다.
홈 디렉토리 없이 사용자를 만들려면 '-M'
옵션을 사용합니다. 예를 들어, 다음 명령은 홈 디렉토리 없이 ‘shilpi’ 사용자를 만듭니다.
useradd -M shilpi
이제 사용자가 홈 디렉토리 없이 생성되었는지 확인하기 위해 ls 명령을 사용합시다.
ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory

7. 리눅스에서 만료 날짜가 있는 사용자 만드는 방법
기본적으로 ‘useradd’ 명령으로 사용자를 추가할 때 사용자 계정이 만료되지 않습니다. 즉, 만료 날짜는 0으로 설정됩니다(만료되지 않음을 의미함).
그러나 '-e'
옵션을 사용하여 만료 날짜를 설정할 수 있습니다. 이 날짜는 YYYY-MM-DD 형식이어야 합니다. 이것은 일정 기간 동안 임시 계정을 만드는 데 유용합니다.
이 예에서는 계정 만료 날짜가 2021년 8월 27일인 사용자 ‘aparna’를 만듭니다. 날짜 형식은 YYYY-MM-DD입니다.
useradd -e 2021-08-27 aparna
다음으로 계정 만료 날짜를 설정한 후 ‘aparna’ 사용자에 대한 계정 및 비밀번호 나이 정보를 확인합니다. 이를 위해 ‘chage’ 명령을 사용합니다.
chage -l aparna Last password change : Jun 25, 2021 Password expires : never Password inactive : never Account expires : Aug 27, 2021 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

8. 비밀번호 만료 날짜가 있는 사용자 만드는 방법
'-f'
인수는 비밀번호 만료 후 일 수를 정의하는 데 사용됩니다. 값 0은 비밀번호가 만료되면 사용자 계정을 비활성화합니다. 기본적으로 비밀번호 만료 값은 -1
로 설정되어 있으며, 이는 비밀번호가 만료되지 않음을 의미합니다.
이 예에서는 ‘mansi’ 사용자에 대해 '-e'
및 '-f'
옵션을 사용하여 계정 비밀번호 만료 날짜를 45일로 설정합니다.
useradd -e 2014-04-27 -f 45 mansi

9. 리눅스에 주석을 포함하여 사용자 추가하는 방법
'-c'
옵션을 사용하면 사용자의 전체 이름, 전화번호 등과 같은 사용자 정의 주석을 ‘/etc/passwd’ 파일에 추가할 수 있습니다. 주석은 공백 없이 한 줄로 추가할 수 있습니다.
예를 들어, 다음 명령은 사용자 ‘mansi’를 추가하고 해당 사용자의 전체 이름 Manis Khurana을 주석 필드에 삽입합니다.
useradd -c "Manis Khurana" mansi
삽입된 주석은 tail 명령어를 사용하여 ‘/etc/passwd’ 파일의 주석 섹션에서 확인할 수 있습니다.
tail -1 /etc/passwd mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh

10. 리눅스에 사용자 로그인 쉘을 만드는 방법
가끔은 로그인 쉘과 아무 상관이 없는 사용자를 추가하거나 사용자에게 다른 쉘을 할당해야 할 때가 있습니다. 각 사용자에 대해 다른 로그인 쉘을 할당할 수 있습니다. ‘-s’ 옵션을 사용하여.
여기 이 예에서는 사용자 ‘tecmint‘를 로그인 쉘 없이 ‘/sbin/nologin‘ 쉘로 추가합니다.
useradd -s /sbin/nologin tecmint
‘/etc/passwd‘ 파일에서 사용자에 할당된 쉘을 확인할 수 있습니다.
tail -1 /etc/passwd tecmint:x:1011:1014::/home/tecmint:/sbin/nologin

11. 지정된 홈, 쉘 및 설명으로 사용자 만드는 방법
다음 명령은 사용자 ‘ravi‘를 홈 디렉터리 ‘/var/www/tecmint‘, 기본 쉘로 ‘/bin/bash‘ 및 사용자에 대한 추가 정보와 함께 만듭니다.
useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

위 명령에서 옵션 ‘'-m'
‘ 및 ‘'-d'
‘는 지정된 홈 디렉터리로 사용자를 만들고, ‘'-s'
‘ 옵션은 사용자의 기본 쉘을 ‘/bin/bash‘로 설정합니다. ‘'-c'
‘ 옵션은 사용자에 대한 추가 정보를 추가하고 ‘'-U'
‘ 인수는 사용자와 동일한 이름의 그룹을 만들거나 추가합니다.
12. 정의된 홈, 쉘, 설명, UID/GID로 사용자 만드는 방법
이 명령은 위와 매우 유사하지만 여기서 쉘을 ‘/bin/zsh‘로 정의하고 사용자 ‘tarunika’의 사용자 지정 UID 및 GID를 설정합니다. ‘'-u'
‘ 옵션은 새 사용자의 UID(즉, 100)를 정의하고 ‘'-g'
‘ 옵션은 GID(즉, 1000)를 정의합니다.
useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika

13. 홈, 쉘 없이 사용자 만드는 방법, 설명 및 UID
다음 명령어는 위의 두 명령어와 매우 유사합니다. 유일한 차이점은 여기서 우리는 사용자 ‘ avishek‘에 대한 로그인 쉘을 비활성화하고 사용자 ID(즉, 1019)를 사용한다는 것입니다.
'-s'
옵션은 기본 쉘을 /bin/bash로 설정하지만 이 경우에는 로그인 쉘을 ‘/usr/sbin/nologin’으로 설정합니다. 즉, 사용자 ‘avishek’은 시스템에 로그인할 수 없습니다.
useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek

14. 특정 홈, 쉘, 스켈레톤 및 UID로 사용자를 생성하는 방법
이 명령어의 유일한 변경 사항은 '-k'
옵션을 사용하여 기본값 대신 /etc/custom.skell로 사용자 정의 스켈레톤 디렉토리를 설정하고, '-s'
옵션을 사용하여 사용자 ‘navin’에 대한 다른 쉘 /bin/tcsh를 정의한다는 것입니다.
useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin

15. 홈, 쉘 또는 그룹 없이 주석으로 사용자 생성하기
다음 명령어는 위에서 설명한 다른 명령어들과 매우 다릅니다. 여기서는 '-M'
옵션을 사용하여 사용자의 홈 디렉토리 없이 사용자를 생성하고, '-N'
옵션을 사용하여 그룹 없이 사용자 이름만 생성하도록 시스템에 지시합니다. '-r'
옵션은 시스템 사용자를 생성하는 데 사용됩니다.
useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton

‘ useradd‘에 대한 자세한 정보 및 옵션은 터미널에서 ‘ useradd‘ 명령어를 실행하여 사용 가능한 옵션을 확인하십시오.
useradd
사용자 이름, 사용자 ID (UID), 홈 디렉터리, 셸 등 사용자 계정 속성을 수정하려면 usermod 명령을 사용하십시오.