3. useradd 命令
useradd 命令是用于创建新用户的基本命令。它会根据命令行参数和系统默认设置创建新的用户账户。
作用
- 在系统中创建新的用户账户。
- 设置用户的基本属性(如用户ID、主目录、登录 Shell 等)
- 为新用户创建主目录(如果指定了相应选项)
- 为新用户设置初始组和附加组
命令格式:
useradd [选项] 登录用户名
示例:
添加一个叫张三(zhang3)的用户
weimingze@mzstudio:~$ sudo useradd zhang3
[sudo] password for weimingze:
weimingze@mzstudio:~$ tail -2 /etc/passwd
sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
zhang3:x:1001:1002::/home/zhang3:/bin/sh
weimingze@mzstudio:~$ tail -2 /etc/group
develop:x:1001:
zhang3:x:1002:
weimingze@mzstudio:~$ sudo tail -2 /etc/shadow
sshd:!:20230::::::
zhang3:!:20230:0:99999:7:::
weimingze@mzstudio:~$ ls /home/
weimingze
如上述可见在 /etc/passwd 的最后一行多了一条记录 zhang3:x:1001:1002::/home/zhang3:/bin/sh。这说明 zhang3 的用户 ID 是 1001,主组 ID 是 1003, 没有别名,用户主文件夹是 /home/zhang3,但并没有创建这个文件夹。用户默认使用的 Shell 是 /bin/sh,默认 Shell 可以通过选项进行更改。
可见 上述命令会为这个用户单独创建了一个组,在 /etc/group 下多了一行 zhang3:x:1002:,这说明组名是 zhang3,组 ID 是 1003。这个是 zhang3 用户的主组。
在文件 /etc/shadow 也多了一行 zhang3:!:20230:0:99999:7:::,此处用于保存 zhang3 的密码信息。需要使用 passwd 命令修改密码。
Shell 是用户用于解释执行命令的程序。在终端中,用于解释我们输入的命令的程序就是 Shell的一种具体实现。如果我们不需要这个用户能够登录系统,则可以使用
/usr/sbin/nologin作为 Shell。
常用选项
-m-k一起使用)useradd -m zhangsan-s <路径>useradd -s /bin/bash zhangsan-c <别名>useradd -c "Developer" zhangsan-d <路径>useradd -d /home/zhangsanhome zhangsan-g <组名或组ID>useradd -g developer zhangsan-e <时间字符串>useradd -e 2023-12-31 zhangsan-f <数字>useradd -f 30 zhangsan-G <组名或组ID>useradd -G develop,weimingze,zhangsan-Museradd -M zhangsan-Nuseradd -N zhangsan-p <密码加密串>useradd -p encrypted_pass zhangsan-ruseradd -r systemuser-u <数字>useradd -u 5000 zhangsan-k <路径>-m一起使用),默认会把骨架文件夹的内容复制到用户主目录useradd -m -k /etc/skel zhangsan示例:
给开发部的 李四 创建一个新的用户 li4,将他的主组指定到开发组 develop;在创建用户的时候,创建自己的用户主文件夹:/home/lisi;将 li3 的备注名指定为 develop_lisi,指定他的默认 Shell 为 /bin/bash
weimingze@mzstudio:~$ sudo useradd -g develop -m -d /home/lisi -c develop_lisi -s /bin/bash li4
weimingze@mzstudio:~$ tail -4 /etc/passwd
weimingze:x:1000:1000:weimingze:/home/weimingze:/bin/bash
sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
zhang3:x:1001:1002::/home/zhang3:/bin/sh
li4:x:1002:1001:develop_lisi:/home/lisi:/bin/bash
weimingze@mzstudio:~$ tail -3 /etc/group
weimingze:x:1000:
develop:x:1001:
zhang3:x:1002:
weimingze@mzstudio:~$ sudo tail -4 /etc/shadow
weimingze:$6$4cfDY79VgwUp70yB$vvN6o6.ldMV1doonvd7tppRtK.NLW3FI6Cg5rvFmwOvlhqYerJDj3iiZekxLeeI79SozxG5ce8GJfyRlmBocJ/:20230:0:99999:7:::
sshd:!:20230::::::
zhang3:!:20230:0:99999:7:::
li4:!:20230:0:99999:7:::
weimingze@mzstudio:~$ ls /home/
lisi weimingze
weimingze@mzstudio:~$
可见 /etc/passwd 下多了一行 li4:x:1002:1001:develop_lisi:/home/lisi:/bin/bash,文件 /etc/group 还是原来的样子,没有为 li4 创建新的组。在 /home/ 多了一个文件夹 lisi 是 li4 用户的主目录。
练习:
- 创建一个用户
test。要求:创建用户主文件为/home/test,指定登陆Shell 为/bin/sh。 - 查看
/etc/passwd文件,看此用户是否存在。 - 查看
/etc/group文件,看此用户的主组是否存在。