Linux 是一个多用户系统,这意味着多个人可以同时与同一个系统交互。作为系统管理员,您有责任通过创建和管理系统的用户和组来管理系统的用户和组。删除用户并将它们分配给不同的groups
.
在本文中,我们将讨论如何使用创建新用户帐户useradd
命令。
useradd
命令#
的一般语法为useradd
命令如下:
useradd [OPTIONS] USERNAME
仅 root 或具有以下权限的用户sudo权限可以使用useradd
命令创建新用户帐户。
当调用时,useradd
根据命令行上指定的选项和在命令中设置的默认值创建一个新的用户帐户/etc/default/useradd
file.
该文件中定义的变量因发行版而异,这会导致useradd
命令在不同的系统上产生不同的结果。
useradd
还读取了内容/etc/login.defs文件。此文件包含影子密码套件的配置,例如密码过期策略、创建系统和常规用户时使用的用户 ID 范围等。
如何在 Linux 中创建新用户#
要创建新的用户帐户,请调用useradd
命令后跟用户名。
例如创建一个名为username
你会运行:
sudo useradd username
当没有任何选项执行时,useradd
使用中指定的默认设置创建一个新的用户帐户/etc/default/useradd
file.
该命令将一个条目添加到/etc/passwd
, /etc/影子,
/etc/group
and /etc/gshadow
files.
为了能够以新创建的用户身份登录,您需要设置用户密码。为此,请运行passwd命令后跟用户名:
sudo passwd username
系统将提示您输入并确认密码。确保您使用强密码。
Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
如何添加新用户并创建主目录#
在大多数 Linux 发行版上,使用以下命令创建新用户帐户时useradd
,未创建用户的主目录。
Use the -m
(--create-home
) 选项将用户主目录创建为/home/username
:
sudo useradd -m username
上面的命令创建新用户的主目录并从中复制文件/etc/skel
目录到用户的主目录。如果你列出文件
in the /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 和其他访问控制策略用于确定用户可以对系统资源执行的操作类型。
默认情况下,当创建新用户时,系统会从指定的用户 ID 范围内分配下一个可用的 UID。login.defs
file.
Invoke useradd
与-u
(--uid
) 选项来创建具有特定 UID 的用户。例如创建一个名为username
UID 为1500
你可以输入:
sudo useradd -u 1500 username
您可以使用以下命令验证用户的 UIDid命令:
id -u username
1500
创建具有特定组 ID 的用户#
Linux 组是用于组织和管理 Linux 中的用户帐户的组织单位。组的主要目的是定义一组权限,例如对给定资源的读、写或执行权限,这些权限可以在组内的用户之间共享。
创建新用户时,默认行为useradd
命令是创建一个与用户名同名、GID与UID相同的组。
The -g
(--gid
) 选项允许您创建具有特定初始登录组的用户。您可以指定组名称或 GID 号。组名称或 GID 必须已存在。
以下示例展示了如何创建名为的新用户username
并将登录组设置为users
type:
sudo useradd -g users username
要验证用户的 GID,请使用id
命令:
id -gn username
users
创建用户并分配多个组#
Linux 操作系统中有两种类型的组:主要组和次要(或补充)组。每个用户可以恰好属于一个主要组和零个或多个次要组。
您可以使用以下命令指定用户将成为其成员的补充组的列表-G
(--groups
) 选项。
以下命令创建一个名为的新用户username
与主要组users
和次要群体wheel
and docker
.
sudo useradd -g users -G wheel,developers 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
.
The -s
(--shell
) 选项允许您指定新用户的登录 shell。
例如,创建一个名为username
with /usr/bin/zsh
作为登录 shell 类型:
sudo useradd -s /usr/bin/zsh username
检查用户输入的内容/etc/密码文件来验证用户的登录 shell:
grep username /etc/passwd
username:x :1001:1001::/home/username:/usr/bin/zsh
The -c
(--comment
) 选项允许您为新用户添加简短描述。通常,用户的全名或联系信息会作为注释添加。
在以下示例中,我们将创建一个名为的新用户username
带有文本字符串Test User Account
作为评论:
sudo useradd -c "Test User Account" username
评论保存在/etc/passwd
file:
grep username /etc/passwd
username:x :1001:1001:Test User Account:/home/username:/bin/sh
评论字段也称为GECOS
.
创建具有到期日期的用户#
要定义新用户帐户的过期时间,请使用-e
(--expiredate
) 选项。这对于创建临时帐户很有用。
日期必须使用指定YYYY-MM-DD
format.
例如创建一个名为的新用户帐户username
将到期时间设置为 2019 年 1 月 22 日,您将运行:
sudo useradd -e 2019-01-22 username
Use the 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
创建系统用户#
该系统和普通(普通)用户之间没有真正的技术差异。通常,系统用户是在安装操作系统和新软件包时创建的。
Use the -r
(--system
) 选项来创建系统用户帐户。例如,创建一个名为的新系统用户username
你会运行:
sudo useradd -r username
创建的系统用户没有到期日。它们的 UID 是从指定的系统用户 ID 范围中选择的login.defs
文件,这与普通用户使用的范围不同。
更改默认 useradd 值#
可以使用以下命令查看和更改默认的 useradd 选项-D
, --defaults
选项,或通过手动编辑中的值/etc/default/useradd
file.
要查看当前默认选项,请输入:
useradd -D
输出将如下所示:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
假设您想要更改默认登录 shell/bin/sh
to /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命令代替。
如果您有任何疑问,请随时发表评论。