Linux是一个多用户系统,这意味着不止一个人可以同时在同一系统进行交互。作为系统管理员,您有责任创建和删除用户来管理系统的用户和组,并将其分配给不同的组。
在 Linux,您可以使用 useradd 命令创建用户帐户并将用户分配到不同的组。useradd是所有 Linux 发行版都可以使用的命令。
但 Debian 和 Ubuntu 用户可以使用更友好的 adduser 命令。本教程介绍 useradd 命令及其选项。
useradd 命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian,Fedora和Arch Linux。
创建 sudo 用户
为了能够使用 useradd 命令创建用户,您需要以 root 或具有 sudo 权限的用户登录到 Linux 系统。
如果你的计算机运行的是基于 RedHat 的 Linux 发行版,例如如 CentOS , Fedora ,可以参考我们教程如何在 CentOS 创建 sudo 用户。
如果你的计算机运行的是基于 Debian 的 Linux 发行版,例如 Linux Minit,Ubuntu,elementary,可参考我们的教程如何在 Debian 创建 sudo 用户。
useradd 命令
在讨论如何使用 useradd 命令之前,让我们先回顾一下基本语法。useradd 命令语法形式是 。
useradd [OPTIONS] USERNAME
其中 USERNAME
是要创建用户的用户名,OPTIONS
是 useradd 命令的选项,是一个可选的参数。
在运行 useradd 命令创建用户时,useradd 命令将会使用命令行中指定的选项以及 /etc/default/useradd
文件指定的默认值创建用户帐户。
不同的 Linux 发行版 /etc/default/useradd
文件定义的变量会有差异。如果在没有任何选项运行 useradd 命令时,可能会在不同的 Linux 发行版得到不同的结果。
useradd 命令还读取文件 /etc/login.defs 的内容。此文件包含影子密码的配置,例如密码过期策略,创建系统用户和普通用户时使用的用户ID范围等。
Linux 创建用户
使用 useradd 命令最简单的形式是不指定任何选项,useradd 命令将会读取 /etc/default/useradd 文件指定的默认值创建用户帐户。
useradd 命令会在 /etc/passwd
,/etc/shadow,
/etc/group
和 /etc/gshadow
文件加入要创建用户的配置信息。
useradd 命令默认不设置用户登录密码。如想要 useradd 命令创建的用户可以使用密码登录,则需要使用 passwd 命令设置用户密码。
在运行 passwd 命令设置用户密码时,系统将提示您输入并确认密码。确保使用强密码。在输入密码时密码是不可见的,完成输入后,只需要回车即可。
sudo useradd myfreax
sudo passwd myfreax
Changing password for user myfreax.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
创建用户家目录
在大多数 Linux 发行版,在使用 useradd
命令创建新用户帐户时,不会创建用户家目录。但可以指定 useradd 命令的 -m
选项创建用户家目录。
在创建用户的家目录时,useradd 命令将会从 /etc/skel
目录复制文件到用户的家目录。并作为用户基本配置信息。
除了在 /home/
目录创建用户家目录外,也可以指定在目录创建用户家目录,/home
目录是默认的创建用户家目录的路径。
要指定其它目录创建用户家目录可以使用 useradd 命令的 d
/--home
选项改变这个默认值。
当你完成用户的创建时,可使用 ls 命令列出用户家目录的文件,你将会看到初始化用户时的配置文件。
在本教程仅包含 bash 的配置文件。具体会根据发行版,以及你安装的软件存在差异。最后,如果需要让用户可登录,记得运行 passwd 命令为你的创建的用户设置密码。
#useradd -m -d /opt/username myfreax #-d指定用户家目录
sudo useradd -m myfreax
ls -la /home/myfreax/
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
指定用户 ID
在 Linux/Unix 操作系统,用户由唯一的UID和用户名组成。用户标识符UID是 Linux 系统为每个用户分配的唯一正整数。
UID 用于访问控制策略确定用户是否可以对系统资源执行操作。如果你需要在创建用户时指定用户 UID,可以使用 useradd 命令的-u
/--uid
选项指定。
默认情况下,在创建用户时 useradd 命令会从 login.defs
文件读取用户 ID 范围并指定下一个可用的 UID 。除非有特别的需求,不建议手动指定用户的 UID。
sudo useradd -u 1500 username
命令将会创建用户 myfreax,指定UID为 1500,当创建用户后,可以运行 id 命令验证用户的UID 。
sudo useradd -u 1500 username
id -u username
指定组 ID
Linux 组是组织单位,用于在 Linux 中组织和管理用户帐户。组的主要目的是定义一组权限,例如读取,写入或执行可以在组内用户之间共享的指定资源的权限。
在创建用户时,useradd 命令的默认行为是创建一个与用户名相同的组,以及与 UID相同的 GID。
要指定用户要加入的组 ID,可以使用 useradd 的 -g
/--gid
选项可以指定用户的所属组。
也可以指定组名称或 GID。指定的组名称或 GID 必须已经存在。-g
选项的组将会成为用户的主要组。
sudo useradd -g admin myfreax
命令创建用户 myfreax,并指定加入的组是admin,完成用户创建后可以运行 id 命令验证用户的 GID或者组的名称。
sudo useradd -g admin myfreax
id myfreax
创建用户加入多个组
Linux 操作系统有两种类型的组,分别是主要组和次要组。每个用户可以属于一个主要组和零个或多个次要组。
useradd 命令的 -G
/--groups
选项允许你指定用户次要组,可以同时为创建的用户指定多个次要组,用户将成为这些次要组的成员。
sudo useradd -g users -G wheel,developers myfreax
命令创建用户 myfreax 并指定主要组是 users 和次要组是 wheel 和 docker。
sudo useradd -g users -G wheel,docker myfreax
id myfreax
uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)
创建用户并指定登录 Shell
默认情况下,创建的用户的登录 shell 在 /etc/default/useradd
文件指定。可以使用 useradd 命令的 -s
/--shell
选项指定用户的登录 Shell。
在某些 Linux 发行版(如Ubuntu 18.04),默认的登录 Shell 设置为 /bin/sh 而在其他的版本则设置为 /bin/bash。
要查看用户的默认的登录 Shell,可以运行 grep 命令grep myfreax /etc/passwd
搜索 /etc/passwd
文件,myfreax 是用户名。
useradd -s /usr/bin/zsh myfreax
命令创建用户 myfreax 并登录 Shell是 /usr/bin/zsh。
useradd -s /usr/bin/zsh myfreax
grep myfreax /etc/passwd
myfreax:x :1001:1001::/home/myfreax:/usr/bin/zsh
创建用户并设置联系信息/注释
useradd 命令的 -c
/--comment
选项允许你在创建用户的同时添加一个简短的说明。通常时用户的全名或联系信息作为注释。
注释字段也称为 GECOS,它保存在 /etc/passwd
文件。可以往注释中添加任何内容。当创建用户后你可使用 grep 命令查看用户在 /etc/passwd
文件注释内容。
sudo useradd -c "Test User Account" myfreax
命令创建用户 myfreax 并使用 Test User Account 作为注释。
sudo useradd -c "Test User Account" myfreax
sudo grep myfreax /etc/passwd
myfreax:x :1001:1001:Test User Account:/home/username:/bin/sh
指定到期日期创建用户
useradd 命令的 -e
/--expiredate
选项允许你指定用户到期时间。此选项对于创建临时帐户很有用。
用户到期/过期时间格式,必须使用 YYYY-MM-DD
格式指定日期。可以使用 chage
命令查看用户的到期日期。
sudo useradd -e 2022-1-22 myfreax
命令创建用户 myfreax 并设置用户的到期时间为 2022 年 1 月 22 日。
sudo useradd -e 2022-1-22 myfreax
sudo chage -l myfreax
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
创建系统用户
系统与普通用户之间没有真正的差异。通常,在安装操作系统和软件时会创建系统用户。
在某些情况下,您可能需要为自定义的应用程序创建系统用户。useradd 命令的-r
/--system
选项允许你创建系统用户。
系统用户创建时没有到期日期。它们的 UID 不是从 login.defs 文件读取。而是在系统用户 ID 范围选择,该范围不同于普通用户使用的范围。
sudo useradd -r username
修改的默认值
useradd 命令的默认选项,可以使用 useradd 命令的 -D
/--defaults
选项查看或者编辑。查看 useradd 命令的默认选项很简单,运行命令useradd -D
即可查看默认选项。
也可以运行 cat 命令查看 /etc/default/useradd 文件内容确定 useradd 命令的默认选项。或手动编辑 /etc/default/useradd 文件的值来修改默认的 useradd 命令选项。
假设要将用户的默认登录 Shell 从 /bin/sh
修改为 /bin/bash
。可以使用 useradd 命令的 -s
选项为用户指定用户的默认登录 Shell,
useradd -D -s /bin/bash
sudo useradd -D | grep -i shell
SHELL=/bin/bash
结论
至此,你已经了解如何在 Linux 系统使用 useradd 命令创建用户帐户以及命令的常用选项。
useradd 命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian,Fedora和Arch Linux。如果您有任何疑问,请随时发表评论。