如何在Linux中创建用户(useradd命令)
Linux是一个多用户系统,这意味着不止一个人可以同时与同一个系统互动。作为一个系统管理员,你有责任通过创建和删除用户并将他们分配到不同的组来管理系统的用户和组。
在这篇文章中,我们将讨论如何使用useradd
命令来创建新的用户账户。
useradd
命令
useradd
命令的一般语法如下:。
useradd [OPTIONS] USERNAME
只有root或具有sudo权限的用户可以使用useradd
命令来创建新的用户账户。
当被调用时,useradd
根据命令行上指定的选项和/etc/default/useradd
文件中设置的默认值创建一个新的用户账户。
这个文件中定义的变量在不同的发行版中是不同的,这就导致useradd
命令在不同的系统上产生不同的结果。
useradd
还读取/etc/login.defs
文件的内容。该文件包含影子密码套件的配置,如密码过期策略、创建系统和普通用户时使用的用户ID范围等等。
如何在Linux中创建一个新的用户
要创建一个新的用户帐户,请调用useradd
命令,后面跟上用户的名字。
例如,要创建一个名为username
的新用户,你需要运行。
sudo useradd username
当执行时没有任何选项,
useradd
会使用/etc/default/useradd
文件中指定的默认设置创建一个新的用户账户。
该命令在/etc/passwd
、/etc/shadow,
/etc/group
和/etc/gshadow
文件中增加了一个条目。
为了能够以新创建的用户登录,你需要设置用户密码。要做到这一点,请运行passwd
@命令,后面跟上用户名。
sudo passwd username
你会被提示输入并确认密码。请确保你使用一个强大的密码。
输出
Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
如何添加一个新用户并创建主目录
在大多数Linux发行版上,当用useradd
创建一个新的用户账户时,用户的主目录并没有被创建。
使用-m
(--create-home
)选项来创建用户主目录为/home/username
。
sudo useradd -m username
上面的命令创建了新用户的主目录,并将/etc/skel
目录中的文件复制到用户的主目录。如果你列出/home/username
目录下的文件,你会看到初始化文件。
ls -la /home/username/
输出
drwxr-xr-x 2 username username 4096 Dec 11 11:23 .
drwxr-xr-x 4 root root 4096 Dec 11 11:23 ..
-rw-r--r-- 1 username username 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 username username 3771 Apr 4 2018 .bashrc
-rw-r--r-- 1 username username 807 Apr 4 2018 .profile
在主目录中,用户可以写入、编辑和删除文件和目录。
创建一个具有特定主目录的用户
默认情况下,useradd
在/home
创建用户的主目录。如果你想在其他地方创建用户的主目录,请使用d
(--home
)选项。
下面是一个例子,显示了如何创建一个名为username
的新用户,其主目录为/opt/username
。
sudo useradd -m -d /opt/username username
创建一个具有特定用户ID的用户
在Linux和类似Unix的操作系统中,用户是由唯一的UID和用户名来识别的。
用户标识符(UID)是Linux系统分配给每个用户的唯一正整数。UID和其他访问控制策略被用来确定用户在系统资源上可以执行的行动类型。
默认情况下,当一个新的用户被创建时,系统会从login.defs
文件中指定的用户ID范围内分配下一个可用的UID。
用-u
(--uid
)选项调用useradd
来创建一个具有特定UID的用户。例如,要创建一个名为username
、UID为1500
的新用户,你需要键入。
sudo useradd -u 1500 username
你可以验证用户的UID,使用id
命令。
id -u username
输出
1500
创建一个具有特定组别ID的用户
Linux组是用于组织和管理Linux中用户账户的组织单位。组的主要目的是定义一组权限,如某一资源的读、写或执行权限,可以在组内的用户之间共享。
当创建一个新的用户时,useradd
命令的默认行为是创建一个与用户名同名的组,并且GID与UID相同。
-g
(--gid
) 选项允许你创建一个具有特定初始登录组的用户。你可以指定组名或GID号码。该组的名称或GID必须已经存在。
下面的例子显示了如何创建一个名为username
的新用户,并将登录组设置为users
类型。
sudo useradd -g users username
要验证用户的GID,请使用id
命令。
id -gn username
输出
users
创建一个用户并分配多个组别
在Linux操作系统中,有两种类型的组 主要组和次要(或补充)组。每个用户正好可以属于一个主组和零个或多个辅助组。
你可以用-G
(--groups
)选项指定一个用户将成为其成员的补充组列表。
下面的命令创建了一个名为username
的新用户,主要组为users
,次要组为wheel
和docker
。
sudo useradd -g users -G wheel,docker username
你可以通过键入以下语句来检查用户组
id username
输出
uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)
创建一个具有特定登录Shell的用户
默认情况下,新用户的登录shell被设置为/etc/default/useradd
文件中指定的那个。在一些发行版中,默认的shell被设置为/bin/sh
,而在其他发行版中,它被设置为/bin/bash
。
-s
(--shell
)选项允许你指定新用户的登录外壳。
例如,要创建一个名为username
的新用户,并将/usr/bin/zsh
作为登录的shell类型。
sudo useradd -s /usr/bin/zsh username
检查/etc/passwd
文件中的用户条目,以验证用户的登录Shell。
grep username /etc/passwd
输出
username:x :1001:1001::/home/username:/usr/bin/zsh
使用自定义注释创建用户
-c
(--comment
)选项允许你为新用户添加简短的描述。通常情况下,用户的全名或联系信息被添加为评论。
在下面的例子中,我们正在创建一个名为username
的新用户,并将文本字符串Test User Account
作为注释。
sudo useradd -c "Test User Account" username
该评论被保存在/etc/passwd
文件中。
grep username /etc/passwd
输出
username:x :1001:1001:Test User Account:/home/username:/bin/sh
注释字段也被称为GECOS
。
创建一个有到期日的用户
要定义一个新用户账户过期的时间,请使用-e
(--expiredate
)选项。这对创建临时账户很有用。
日期必须使用YYYY-MM-DD
的格式来指定。
例如,要创建一个名为username
的新用户账户,其到期时间设置为2019年1月22日,你将运行。
sudo useradd -e 2019-01-22 username
使用chage
命令来验证用户账户的到期日。
sudo chage -l username
输出结果将看起来像这样。
输出
Last password change : Dec 11, 2018
Password expires : never
Password inactive : never
Account expires : Jan 22, 2019
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
创建一个系统用户
系统用户和普通(正常)用户之间没有真正的技术区别。通常情况下,系统用户是在安装操作系统和新软件包时创建的。
使用-r
(--system
)选项来创建一个系统用户账户。例如,要创建一个名为username
的新系统用户,你需要运行。
sudo useradd -r username
系统用户的创建是没有过期日期的。他们的UID是从login.defs
文件中指定的系统用户ID范围中选择的,这与普通用户使用的范围不同。
改变默认的useradd的值
默认的useradd选项可以通过-D
、--defaults
选项来查看和更改,也可以通过手动编辑/etc/default/useradd
文件中的数值。
要查看当前的默认选项,请键入:。
useradd -D
输出结果将看起来像这样。
输出
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
假设你想把默认的登录外壳从/bin/sh
改为/bin/bash
。要做到这一点,指定新的shell,如下图所示。
sudo useradd -D -s /bin/bash
你可以通过运行下面的命令来验证默认的shell值是否已经改变。
sudo useradd -D | grep -i shell
输出
SHELL=/bin/bash
总结
我们已经向你展示了如何使用useradd
命令创建新的用户账户。同样的说明适用于任何Linux发行版,包括Ubuntu、CentOS、RHEL、Debian、Fedora和Arch Linux。
useradd
是一个低级别的工具,Debian和Ubuntu的用户可以使用更友好的adduser命令来代替。
如果您有任何问题,请随时留言咨询。