1. Linux(Ubuntu) User 계정 등록
1.1 ueradd 방법
$ sudo useradd -m user
$ sudo passwd user
New password:
Retype new password:
passwd: password updated successfully
$ ssh user@172.21.26.240
user@172.21.26.240's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.13.0-35-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
53 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
Your Hardware Enablement Stack (HWE) is supported until April 2025.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
useradd로 계정을 생성할 때에는 -m 옵션을 주지 않으면 홈디렉토리를 생성하지 않는다. 또한 계정 비밀번호도 별도의 커맨드(passwd user)로 생성을 해 줘야지만 비밀번호 설정이 된다.
1.2 adduser 방법
$ sudo adduser zuma0123
[sudo] password for hdkim:
Adding user `zuma0123' ...
Adding new group `zuma0123' (1000) ...
Adding new user `zuma0123' (1000) with group `zuma0123' ...
Creating home directory `/home/zuma0123' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for zuma0123
Enter the new value, or press ENTER for the default
Full Name []: Jun Jang
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
$ ls /home/
hdkim hw lost+found zuma0123
2. 계정 등록 옵션
num | 옵션 | 설명 |
1 | -p | 사용자의 암호를 추가시 지정 할 수 있다. 리눅스는 암호화된 값을 사용함으로 암호화된 값으로 지정해야 한다. |
2 | -d | 홈 디렉토리를 지정할 때 쓰인다. 최종 디렉토리만 생성함으로 중간 경로가 있을 경우 미리 생성 해야 함. |
3 | -g | 그룹으 ㄹ지정할 때 사용한다. 지정할 그룹이 미리 생성되어 있어야 하며 옵션을 지정하지 않으면 user에 포함 된다. |
4 | -G | 기본 그룹 이외에 추가로 그룹에 속할게 할 경우 사용한다. |
5 | -c | 사용자 생성 시 사용자에 대한 설명을 설정한다. |
6 | -s | 사용자 생성 시 사용자가 사용할 쉘을 지정한다. |
7 | -D | /etc/default/useradd에 설정된 유저 추가와 관련된 기본 사항들을 출력한다. |
8 | -m | 사용자를 생성할 때 홈 디렉토리를 생성해 준다. |
10 | -k | 사용자 생성시에 제공되는 환경 파일들은 기본적으로 /etc/skel 폴더로 지정되는데, 이외의 디렉토리를 지정할 때 쓰임. |
11 | -f | 패스워드 만기일을 날짜 수로 지정한다. |
12 | -e | 계정의 만기일을 YYYY-MM-DD 형식으로 지정한다. |
13 | -u | 사용자 추가시에 UID 값을 지정한다. |
2-1. -p 옵션 (useradd [userID]-p [password])
$sudo useradd test -p 1234
$tail -n 1 /etc/passwd
test:x:1011:1014::/home/test:
$sudo tail -n 2 /etc/shadow
user:$6$iT.tIO9H$T9Yw6VugGvb3pMW7M9MPmsWKwtvZuxT54ohCdshRrJQbfwN18y5PNoHGqu8HmIpd4qklPpSCL751CiI8hPkM./:19067:0:99999:7:::
test:1234:19074:0:99999:7:::
test라는 user를 생성하고 비밀번호을 "1234"로 설정하였다. 설정된 비밀번호는 tail 명령어로 /etc/shadow 파일을 읽어 보면 정상적으로 설정되어져 있는게 확인된다.
다만 비밀번호 설정을 할 때에 암호화된 값으로 설정을 해야 되는데 위 예제에는 암호화하지 않은 값을 사용하여 실제 test 유저로 접속할 때 비밀번호가 틀리다고 나온다.
2-2. -d 옵션 (useradd -d [path] [userID])
$sudo useradd -d /home/TEST test
$ls /home
$hdkim
$cat /etc/passwd | grep test
test2:x:1011:1014::/home/TEST:
계정의 홈 디렉토리를 지정하는 옵션으로 옵션으로 주는 위치에 폴더가 없더라도 실행은 된다.
별도로 지정하지 않으면 /etc/default/useradd의 'HOME' 변수에 지정된 디렉토리에 '사용자명'으로 생성된다.
-m 옵션을 함께 사용하면, 디렉토리를 동시에 생성할 수 있다.
필수 옵션은 아니기 에 별도로 지정하지 않아도 되나 특정 디렉토리를 지정해서 생성하고 싶다면 절대 경로로 적어줘야 한다.
2-3. -g 옵션(usradd -g [gidNum] [userID])
$cat /etc/group | grep test
test:x:1014:
test2:x:1015:
$sudo useradd -g 1014 test3
$cat /etc/passwd | grep test
test:x:1011:1014:test comment:/home/test:
test2:x:1012:1015:test comment:/home/test2:
test3:x:1013:1014::/home/test3:
계정이 소속될 그룹을 지정하는 옵션이다. 이 옵션을 생략할 경우, 아이디와 동일한 그룹에 포함시키며, 옵션을 사용하여 gid를 지정하는 경우, 해당 gid는 반드시 생성이 되어있어야 한다. gid는 "groud id"의 약자이며 passwd의 내용에서 번호 확인이 가능하다.
passwd의 내용은 콜론(:)으로 구분되어지면 4번째 필드가 gid이다. 즉 test3의 gid는 test의 gid 1004와 같다.
2-4. G 옵션(useradd -G [gidNum] [userID])
$sudo useradd -G 1012 test4
$cat /etc/group | grep test
gen2:x:1012:test4
test:x:1014:
test2:x:1015:
test4:x:1016:
계정이 소속될 2차 그룹을 지정하는 옵션이다. -g 옵션과 마찬가지로, 해당 gid는 생성되어 있어야만 한다. 리눅스 사용자는 반드시 한 개 이상의 그룹에 속해있어야 하며, 사용자는 여러 개의 그룹에 동시에 속할 수도 있다. -G 옵션을 사용하면 사용자가 기본적으로 속한 그룹 외, 다른 그룹에도 동시에 속하게 할 수 있다. test4 계정이 gid 1012인 gen2 계정의 그룹에 추가된 것을 볼 수 있다.
2-5. -c 옵션(useradd -c ["설명글"] [userID]
$sudo useradd -c "test comment" test
$cat /etc/passwd | grep test
test:x:1011:1014:test comment:/home/test:
계정의 설명을 추가하는 옵션이다. 띄어 쓰기가 필요할 경우 쌍따움표(" ")로 묶어준다. test 유저의 계정에 "test comment"라는 설명을 추가하여 생성하고 확인한 결과이다.
2-6. -s 옵션(useradd -s [Shell Path] [userID])
$cat /etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/bin/zsh
$sudo useradd -s /bin/zsh test
쉘을 계정별로 지정하는 옵션이다. 리눅스는 기본적으로 bash 쉘을 사용하는데, 이 외에도 다양한 쉘이 존재하기에 /etc/shells 파일을 확인하여 원하는 쉘을 지정하여 사용 할 수 있다.
2-7. -D 옵션(useradd -D)
$useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
useradd로 계정 생성시 기본 사항들을 보여준다. 기본적으로 /etc/defaul/useradd의 내용을 참조하는데 그 내용은 SHELL=/bin/sh 설정을 제외하고는 다 주석으로 되어 있다. 주석을 풀고 원한느 설정을 한 후 useradd -D 명령을 실행하면 주석이 풀어진 설정이 적용되어 진 것을 볼 수 있다.
2-8. -m 옵션(useradd -m -d [Path] [userID])
$sudo useradd -m -d /home/test test
$ls /home/
hdkim test
$cat /etc/passwd | grep test
test:x:1011:1014::/home/test:
계정 생성시 홈 디렉토리를 생성해 주는 옵션으로서 -m 옵션을 단독으로는 사용하지 못하고 -d 옵션(사용자 디렉토리 지정)과 함께 사용한다. 두 옵션을 사용하여 계정을 생성하면 원하는 경로에 홈 디렉토리를 생성하고 설정 할 수 있다.
2-9. -k 옵션(useradd -k [환경파일Path] -m -d [계정Path] [userID]
$ls test
abcd useradd
$sudo useradd -k /home/test/ -m -d /home/test3 test3
$ls test3/
abcd useradd
계정 생성시 제공되는 환경 파일들은 기본적으로 /etc/skel로 지정되어 있는데, 이 폴더 외 다른 폴더로 지정할 때 쓰인다.
-k 옵션 단독으로는 사용하지 못 하고 -m, -d 옵션과 같이 사용해야만 한다.
-k 옵션으로 지정해준 폴더에 adcd, useradd 파일만 있는데 -k 옵션으로 계정 폴더를 생성한 후 해당 폴더를 확인해 보면 adcd, useradd 파일이 생성된 것을 확인 할 수 있다.
2-10. -f 옵션(useradd -f [날짜수] [userID])
$sudo useradd -f 10 test
$sudo cat /etc/shadow | grep test
test:!:19089:0:99999:7:10::
패스워드 만기일을 설정하는 옵션으로 만기일을 날짜 수로 지정 할 수 있다. test 계정을 생성하고 패스워드를 10일 이내 만기 시켜야 할 경우 위와 같이 명령어를 입력하면 된다. 결과는 /etc/shadow의 7번째 필드를 확인하면 된다.
2-11. -e 옵션
$sudo useradd -e 2022-04-10 test
$sudo useradd -e 2022-04-20 test2
$sudo cat /etc/shadow | grep test
test:!:19089:0:99999:7::19092:
test2:!:19089:0:99999:7::19102:
계정의 만기일을 설정하는 옵션으로 만기을 입력 형식은 반드시 [YYYY-MM-DD] 로 설정해야 한다. 계정의 만기일은 /etc/shadow 파일에서 확인이 가능하며, 콜론(:)으로 구분된 필드의 8번째 필드가 만기일 필드이다. 표기 방식이 숫자이기 때문에, 1970년 1월 1일부터 만기 일자의 날짜 수로 표기됨에 주의해야 한다.
만기일을 2022년 4월 10일로 지정하고, test 계정을 생성하면 1970년 1월 1일 부터 19092일째 되는 날 계정 만기일이 된다.
2-12 -u 옵션
$sudo useradd -u 7777 test
$sudo cat /etc/passwd | grep test
test:x:7777:7777::/home/test:
$
$
$sudo useradd -u 7777 test2
useradd: UID 7777 is not unique
uid는 리눅스에서 계정에게 부여하는 고유 번호이다. -u는 계정의 uid를 설정하는 옵션으로 별도의 옵션을 지정하지 않을 경우 uid는 자동 발번되어 추가된다. 사용자의 필요에 따라 특정 uid를 지정하여 생성할 수도 있지만 다른 사용자가 이미 사용 중인 uid는 지정할 수 없다.
3. useradd와 adduser 차이
눈에 보이는 차이점은 adduser는 한번의 명령어로 홈디렉토리, 패스워드 설정이 되어 간편하지만 불필요한 정보도 요청을 한다.
반면 useradd는 계정 생성외 아무런 설정이 되지 않기에 직접 옵션 또는 다른 커맨드를 사용하여 user설정을 해야 한다.
댓글