useradd命令15个实际示例及/etc/passwd文件详解
linux中useradd命令15个实际示例
在 Linux 中,一个
useradd
命令是一个基础实用程序,用于添加 / 创建用户帐户Linux
和别的Unix-like
操作系统。这adduser
非常类似于useradd
命令,因为它只是一个符号链接。
useradd 命令示例
在其他一些 Linux 发行版中,
useradd
命令可能带有稍微不同的版本。我建议你在使用我们的说明创建新用户帐户之前阅读您的文档Linux
.
当我们运行
useradd
命令在 Linux 终端中执行以下主要操作:
- 它编辑
/etc/passwd
,/etc/shadow
,/etc/group
和/etc/gshadow
新创建的用户帐户的文件。 - 为新用户创建并填充家目录。
- 设置家目录的权限和所有权。
Useradd 命令语法
的基本语法
useradd
命令是:
# useradd [options] username
1. 如何在 Linux 中添加新用户
要添加 / 创建新用户,您必须遵循命令
useradd
要么adduser
和username
。这username
是用户登录名,用于用户登录系统。
只能添加一个用户,并且该用户名必须是唯一的(不同于系统中已存在的其他用户名)。
例如,添加一个名为
rumenz
的新用户,使用以下命令。
[root@rumenz ~]# useradd rumenz
当我们在 Linux 中添加一个新用户时
useradd
命令它在锁定状态下创建并解锁该用户帐户,我们需要为该帐户设置密码passwd
命令。
[root@rumenz ~]# passwd rumenz
Changing password for user rumenz.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
在 Linux 中创建用户
创建新用户后,其条目将自动添加到
/etc/passwd
文件。该文件用于存储用户的信息。
rumenz:x:1000:1000:rumenz:/home/rumenz:/bin/bash
在 Linux 中查看用户信息
上面的条目包含一组七个以冒号分隔的字段,每个字段都有自己的含义。让我们看看这些字段是什么:
Username
:用于登录系统的用户登录名。它的长度应该在 1 到 32 个字符之间。Password
: 用户密码(或 x 字符)存储在/etc/shadow
加密格式的文件。User ID (UID)
: 每个用户必须有一个用户ID
(UID
) 用户识别号。默认情况下,UID 0
为 root 用户和 UID 保留,范围从1-99
保留用于其他预定义帐户。进一步的 UID 范围从100-999
为系统帐户和组保留。Group ID (GID)
: 主要组 ID (GID
) 组标识号存储在/etc/group
文件。User Info
:此字段是可选的,允许您定义有关用户的额外信息。例如,用户全名。该字段由 “finger” 命令填充。Home Directory
: 用户家目录的绝对位置。Shell
:用户shell
的绝对位置即/bin/bash
.
2. 创建不同家目录的用户
默认情况下
useradd
命令在下面创建用户的家目录/home
带有用户名的目录。因此,例如,我们已经在上面看到了用户的默认家目录rumenz
是/home/rumenz
。
但是,此操作可以通过使用
-d
选项以及新家目录的位置(即/data/projects
)。例如,以下命令将创建一个用户rumenz
带有家目录/data/projects
。
[root@rumenz ~]# useradd -d /data/projects rumenz
[root@rumenz ~]# passwd rumenz
您可以查看用户家目录和[其他与用户相关的信息]( "检查 Linux 用户信息")例如用户 ID、组 ID、shell 和注释。
[root@rumenz ~]# cat /etc/passwd | grep rumenz
rumenz:x:1001:1001::/data/projects:/bin/bash
在 Linux 中使用家目录创建用户
3. 创建一个具有特定用户 ID 的用户
在 Linux 中,每个用户都有自己的
UID
(Unique Identification Number
)。默认情况下,每当我们在Linux
, 它分配用户 ID500
,501
,502,
等等…
但是,我们可以使用自定义用户 ID 创建用户
-u
选项。例如,以下命令将创建一个用户navin
使用自定义用户 ID1002
。
[root@rumenz ~]# useradd -u 1002 navin
现在,让我们验证创建的用户是否使用定义的用户 ID (
1002
) 使用以下命令。
[root@rumenz ~]# cat /etc/passwd | grep navin
navin:x:1002:1002::/home/navin:/bin/bash
在 Linux 中使用用户 ID 创建用户
NOTE
:确保用户 ID 的值必须与系统上任何其他已创建的用户不同。
4. 创建一个具有特定组 ID 的用户
同样,每个用户都有自己的
GID
(Group Identifier
)。我们也可以创建具有特定组 ID 的用户-g
选项。
在这个例子中,我们将添加一个用户
rumenz
带有特定的UID
和GID
同时在'的帮助下-u
和-g
选项。
[root@rumenz ~]# useradd -u 1005 -g rumenz rumenz
现在,在 ' 中查看分配的用户 ID 和组 ID
/etc/passwd
文件。
[root@rumenz ~]# cat /etc/passwd | grep rumenz
rumenz:x:1005:1000::/home/rumenz:/bin/bash
要验证用户的 GID,请使用 id 命令:
[root@rumenz ~]# id -gn rumenz
在 Linux 中使用组 ID 创建用户
5. 将用户添加到多个组
这
-G
选项用于将用户添加到其他组。每个组名用逗号分隔,中间没有空格。
在这个例子中,我们添加了一个用户
rumenz
分成多个组,如admins
,webadmin,
和developer
.
[root@rumenz:~]# groupadd admins
[root@rumenz:~]# groupadd webadmin
[root@rumenz:~]# groupadd developers
[root@rumenz:~]# usermod -a -G admins,webadmin,developers rumenz
[root@rumenz:~]# useradd -G admins,webadmin,developers paddy
接下来,使用 id 命令验证是否将多个组分配给了用户。
[root@rumenz ~]# id rumenz
uid=1000(rumenz) gid=1000(rumenz)
groups=1000(rumenz),1007(admins),1008(webadmin),1009(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
在 Linux 中将用户添加到组
[ You might also like: [How to Add or Remove a User from a Group in Linux]( "How to Add or Remove a User from a Group in Linux") ]
6. 添加没有家目录的用户
在某些情况下,由于某些安全原因,我们不想为用户分配家目录。在这种情况下,当用户登录刚刚重新启动的系统时,其家目录将是 root。当此类用户使用[su 命令时]( "su 命令"),其登录目录将是前一个用户的家目录。
要创建没有家目录的用户,
-M
用来。例如,以下命令将创建一个用户shilpi
没有家目录。
[root@rumenz ~]# useradd -M shilpi
现在,让我们使用[ls 命令]( "Linux ls 命令示例")验证创建的用户是否没有家目录。
[root@rumenz ~]# ls -l /home/shilpi
ls: cannot access /home/shilpi: No such file or directory
在 Linux 中创建没有家目录的用户
7. 创建一个有账户到期日的用户
默认情况下,当我们使用 ' 添加用户时
useradd
命令用户帐户永不过期,即它们的过期日期设置为0
(意味着永不过期)。
但是,我们可以使用
-e
选项,将日期设置在YYYY-MM-DD
格式。这有助于创建特定时间段的临时帐户。
在这个例子中,我们创建了一个用户
aparna
与帐户到期日即27th August 2021
在YYYY-MM-DD
格式。
[root@rumenz ~]# useradd -e 2021-08-27 aparna
接下来,使用'验证帐户和密码的年龄
chage
用户命令aparna
设置帐户到期日期后。
[root@rumenz ~]# chage -l aparna
Last password change : Jun 25, 2021
Password expires : never
Password inactive : never
Account expires : Aug 27, 2021
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
创建具有帐户到期日期的用户
8. 创建一个密码过期的用户
这
-f
参数用于定义密码过期后的天数。一个值0
密码过期后立即停用用户帐户。默认情况下,密码过期值设置为-1
意味着永不过期。
在此示例中,我们将设置帐户密码到期日期,即
45 days
在用户mansi
使用-e
和-f
选项。
[root@rumenz ~]# useradd -e 2021-08-14 -f 45 mansi
创建具有密码到期日期的用户
9. 添加带有自定义评论的用户
这
-c
选项允许您添加自定义注释,例如用户的full name
,phone number
等/etc/passwd
文件。注释可以单行添加,没有任何空格。
例如,以下命令将添加一个用户
mansi
并插入该用户的全名,Manis Khurana
, 进入评论区。
[root@rumenz ~]# useradd -c "Manis Khurana" mansi
您可以在
/etc/passwd
文件在评论部分。
[root@rumenz ~]# tail -1 /etc/passwd
mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh
创建全名用户
10. 在 Linux 中创建用户登录 Shell
有时,我们添加与登录
shell
无关的用户,有时我们需要为用户分配不同的 shell。我们为每个用户分配不同的登录 shell-s
选项。
在这个例子中,将添加一个用户
rumenz
没有登录 shell,即/sbin/nologin
壳。
[root@rumenz ~]# useradd -s /sbin/nologin rumenz
您可以在
/etc/passwd
文件。
[root@rumenz ~]# tail -1 /etc/passwd
rumenz:x:1011:1014::/home/rumenz:/sbin/nologin
使用登录
shell
创建用户
11. 添加具有特定家目录、默认shell
和自定义注释的用户
以下命令将创建一个用户
rumenz
带有家目录/var/www/rumenz
, 默认shell``/bin/bash
并添加有关用户的额外信息。
[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /bin/bash -c "rumenz Owner" -U rumenz
使用家目录和登录
shell
创建用户
在上面的命令中
-m -d
选项创建一个具有指定家目录的用户,-s
选项设置用户的默认shell
,即/bin/bash
.这-c
选项添加有关用户的额外信息和-U
参数创建 / 添加一个与用户同名的组。
12. 添加具有家目录、自定义shell
、自定义注释和 UID/GID 的用户
该命令与上面的非常相似,但这里我们将
shell
定义为/bin/zsh
和自定义UID
和GID
给用户rumenz
。在哪里-u
定义新用户的UID
(IE100
) 而而-g
定义GID
(IE1000
)。
[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /bin/zsh -c "rumenz Technical Writer" -u 1000 -g 100 rumenz
使用 UID 和 GID 创建用户
13. 添加具有家目录、无shell
、自定义注释和用户 ID 的用户
下面的命令与上面的两个命令非常相似,唯一的区别在这里,我们禁用了一个名为 ' 的用户的登录 shell
avishek
有一个习惯User ID
(IE1019
)。
这里
-s
选项添加默认shell``/bin/bash
,但在这种情况下,我们将登录设置为/usr/sbin/nologin
。这意味着用户rumenz
将无法登录系统。
[root@rumenz ~]# useradd -m -d /var/www/rumenz -s /usr/sbin/nologin -c "rumenz 入门小站" -u 1019 rumenz
使用 UID 和 Nologin 创建用户
14. 添加具有家目录、Shell、设置包含初始框架文件目录/ 注释和用户 ID 的用户
此命令的唯一变化是,我们使用了
-k
设置包含初始框架文件目录的选项,即/etc/
, 不是默认的/etc/skel
.我们还使用了-s
选项定义不同的shell
即/bin/tcsh
给用户rumenz
。
[root@rumenz ~]# useradd -m -d /var/www/rumenz -k /etc/ -s /bin/tcsh -c "No Active Member of rumenz" -u 1027 rumenz
使用
shell
和 UID 创建用户
15. 添加无家目录、无 Shell、无组和自定义注释的用户
以下命令与上面解释的其他命令非常不同。这里我们使用了
-M
创建一个没有用户家目录和' 的用户的选项-N
参数用于告诉系统只创建一个用户名(没有组)。这-r
参数用于创建系统用户。
[root@rumenz ~]# useradd -M -N -r -s /bin/false -c "rumenz Member" rumenz
使用 NoLogin 和组创建用户
有关 useradd 的更多信息和选项,请运行
useradd
终端上的命令以查看可用选项。
# useradd
近期热文
linux中使用 head,tail和cat命令高效处理文件
linux下的/etc/passwd详解
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。
类似于下面的例子:
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
“用户名”
代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
“口令”
一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
“用户标识号”
是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
“组标识号”
字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
“注释性描述”
字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
“主目录”
也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。
各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。
常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。系统中有一类用户称为伪用户(psuedousers),这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。
伪用户含义
包括:
bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lplp或lpd 子系统使用
nobody NFS使用
拥有帐户文件
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit,cron,mail,usenet等,它们也都各自为相关的进程和文件所需要。
由于Linux /etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高
的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。