有时候,Linux系统管理员会被要求在Linux上创建具有特定属性、限制或注释的用户帐户,那么可能会使用到“ useradd ”或“ adduser ”,它是Linux系统中最流行的命令。
在Linux系统中,“ useradd ”命令是一个低级实用程序,用于在Linux和其它类Unix操作系统中添加或创建用户帐户。“ adduser ”与“ useradd ”命令非常相似,因为它只是一个符号链接。
在某些Linux发行版中,“ useradd ”命令的版本可能略有不同。所以,建议首先阅读相关手册文档,然后再阅读下面的内容。
当我们在Linux终端中运行“ useradd ”命令时,它会执行以下主要任务:
- 为新创建的用户帐户编辑/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow文件。
- 为新用户创建并填充主目录。
- 设置主目录的权限和所有权。
Useradd命令语法
‘ useradd ’命令的基本语法是:
useradd [options] username
接下来,本文将通过Linux中的实际示例演示15个最常用的“ useradd ”命令。
1、在Linux系统中添加新用户
要添加或创建新用户,必须使用“ useradd ”或“ adduser ”命令,后跟“ username ”。“username”是用户用于登录系统的登录名。注意,只能添加一个用户,并且用户名必须是唯一的,并且系统上不存在该用户名。
例如,要添加名为“ecscoupon ”的新用户,请使用以下命令:
useradd ecscoupon
当我们在Linux中使用“ useradd ”命令添加新用户时,它会在锁定状态下创建。要解锁该用户帐户,需要使用“ passwd ”命令为该帐户设置密码:
passwd ecscoupon Changing password for user ecscoupon. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
创建新用户后,其条目会自动添加到“ /etc/passwd ”文件中。这个文件是用来存放用户的信息的,属于以下命令查看:
cat /etc/passwd | grep ecscoupon
条目应该是:
ecscoupon:x:1000:1000:ecscoupon:/home/ecscoupon:/bin/bash
上面的条目包含一组七个以冒号分隔的字段,每个字段都有自己的含义,下面看看这些字段是什么:
- Username–用户登录名用于登录系统,它的长度应介于1到32个字符之间。
- Password–用户密码(或
'x'
字符)以加密格式存储在“ /etc/shadow ”文件中。 - 用户ID (UID) – 每个用户都必须有一个用户ID ( UID ),它代表用户识别号。默认情况下,UID 0为root用户保留,UID范围从1到99为其它预定义帐户保留。此外,范围从100到999的UID是为系统帐户和组保留的。
- 组ID (GID) –主组ID ( GID ) 代表组标识号,存储在“ /etc/group ”文件中。
- 用户信息(注释)–此字段是可选的,允许你定义有关用户的额外信息,例如用户的全名。
- 主目录–用户主目录的绝对位置。
- Shell –用户shell的绝对位置,即/bin/bash。
2、创建具有不同主目录的用户
默认情况下,“ useradd ”命令使用用户名在“ /home ”目录下创建用户的主目录。例如,如上所示,用户“ ecscoupon ”的默认主目录是“ /home/ecscoupon ”。
但是,可以通过使用'-d'
选项以及新主目录的位置(例如“ /data/projects ”)来更改此行为。例如,以下命令将创建一个用户“ anusha ”,其主目录设置为“ /data/projects”:
# useradd -d /data/projects anusha # passwd anusha
然后可以使用以下cat命令查看用户的主目录和其它用户相关信息,例如用户ID、组ID、shell和注释:
cat /etc/passwd | grep anusha anusha:x:1001:1001::/data/projects:/bin/bash
3、创建具有特定用户ID的用户
在Linux中,每个用户都有自己的UID(唯一标识号)。默认情况下,当我们在Linux中创建新用户帐户时,它会分配用户ID 500、501、502等。但是,我们可以使用'-u'
选项创建具有自定义用户ID的用户。例如,以下命令将创建一个用户“ navin ”,其自定义用户ID为“ 1002 ”:
useradd -u 1002 navin
现在,让我们使用以下命令验证使用定义的用户 ID ( 1002 )创建的用户。
cat /etc/passwd | grep navin navin:x:1002:1002::/home/navin:/bin/bash
注意:确保用户ID值必须与系统上任何其它已创建的用户不同。
4、创建具有特定组ID的用户
同样,每个用户都有自己的GID(组标识符)。我们还可以使用'-g'
选项创建具有特定组ID的用户。在此示例中,我们将借助'-u'
和'-g'
选项同时添加具有特定UID和GID的用户“ tarunika ”,具体命令如下:
useradd -u 1005 -g tecmint tarunika
现在,检查“ /etc/passwd ”文件中分配的用户ID和组ID:
cat /etc/passwd | grep tarunika tarunika:x:1005:1000::/home/tarunika:/bin/bash
要验证用户的GID,请使用id命令:
id -gn tarunika
5、将用户添加到多个组
'-G'
选项用于将用户添加到其它组。每个组名称都用逗号分隔,中间没有空格。在此示例中,将用户“ tecmint”添加到多个组,例如admins、webadmin和developments。
groupadd admins groupadd webadmin groupadd developers usermod -a -G admins,webadmin,developers tecmint useradd -G admins,webadmin,developers paddy
接下来,使用id命令验证是否已将多个组分配给用户:
id tecmint uid=1000(tecmint) gid=1000(tecmint) groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers)
6、添加没有主目录的用户
在某些情况下,出于安全原因,我们不想为用户分配主目录,当用户登录到刚刚重新启动的系统时,他们的主目录将是root。当这样的用户使用“ su ”命令时,他们的登录目录将是前一个用户的主目录。要创建没有主目录的用户,请使用'-M'
选项。例如,以下命令将创建一个没有主目录的用户“ shilpi ”:
useradd -M shilpi
现在,我们使用ls命令验证用户是否是在没有主目录的情况下创建的:
ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory
7、在Linux中创建具有到期日期的用户
默认情况下,当我们使用“ useradd ”命令添加用户时,用户帐户永不过期,这意味着它们的过期日期设置为0(这意味着永不过期)。但是,我们可以使用'-e'
选项设置到期日期,该日期应采用YYYY-MM-DD格式。这对于创建特定时间段的临时帐户很有帮助。
在此示例中,我们创建一个用户“ aparna ”,其帐户到期日期为2024年8月27日,格式为YYYY-MM-DD:
useradd -e 2024-08-27 aparna
接下来,在设置帐户到期日期后,为用户aparna使用“ chage ”命令验证帐户和密码的过期信息:
chage -l aparna Last password change : Jun 25, 2023 Password expires : never Password inactive : never Account expires : Aug 27, 2024 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
,这意味着它永不过期。
在此示例中,我们将使用'-e'
和'-f'
选项为用户“ mansi ”设置帐户密码到期日期,即45天。
useradd -e 2024-04-27 -f 45 mansi
9、在Linux系统中添加带注释的用户
'-c'
选项允许你将自定义注释(例如用户的全名、电话号码等)添加到“ /etc/passwd ”文件中。注释可以作为单行添加,不带任何空格。例如,以下命令将添加用户“ mansi ”并将该用户的全名Manis Khurana插入注释字段:
useradd -c "Manis Khurana" mansi
可以使用tail命令在注释部分查看“ /etc/passwd ”文件中插入的注释。
tail -1 /etc/passwd mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh
10、在Linux中创建用户登录Shell
有时,我们添加与登录shell无关的用户,或者有时需要为用户分配不同的shell,可以使用“ -s ”选项为每个用户分配不同的登录shell 。在此示例中,将添加一个没有登录shell的用户“ tecmint ”,即“ /sbin/nologin ”shell:
useradd -s /sbin/nologin tecmint
你可以在“ /etc/passwd ”文件中检查分配给用户的shell:
tail -1 /etc/passwd tecmint:x:1011:1014::/home/tecmint:/sbin/nologin
11、创建具有指定主目录、Shell和注释的用户
以下命令将创建一个用户“ ravi ”,其主目录为“ /var/www/tecmint ”,默认shell为/bin/bash,以及有关该用户的其它信息:
useradd -m -d /var/www/tecmint -s /bin/bash -c "TecMint Owner" -U ravi
在上面的命令中,选项'-m'
和'-d'
创建一个具有指定主目录的用户,并且'-s'
选项将用户的默认shell设置为/bin/bash。'-c'
选项添加有关用户的额外注释信息,参数'-U'
创建/添加与用户同名的组。
12、创建具有定义的目录、Shell、注释、UID/GID的用户
该命令与上面的命令非常相似,但这里我们将shell定义为“ /bin/zsh ”,并为用户“tarunika”设置自定义UID和GID 。'-u'
选项定义新用户的UID(即100),'-g'
选项定义GID(即1000)。
useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika
13、创建具有主目录、无Shell、注释和UID的用户
以下命令与上面两个命令非常相似。唯一的区别是,在这里,我们为具有自定义用户ID(即1019 )的名为“ avishek ”的用户禁用了登录shell 。'-s'
选项将默认shell设置为/bin/bash,但在本例中,我们将登录shell设置为“ /usr/sbin/nologin ”。这意味着用户“ avishek ”将无法登录系统:
useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek
14、创建具有指定目录、Shell、Skeleton和UID的用户
此命令中唯一的变化是我们使用'-k'
选项将自定义Skeleton目录设置为/etc/custom.skell而不是默认目录/etc/skel。此外,还使用'-s'
选项为用户“ navin ”定义不同的shell,即/bin/tcsh。
useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin
15、创建一个没有Home目录、Shell或Group的用户,并带有注释
以下命令与上面介绍的其它命令有很大不同。这里,使用'-M'
选项创建一个没有用户主目录的用户,'-N'
选项用于指示系统只创建一个用户名(不创建组)。'-r'
选项用于创建系统用户:
useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton
另外,有关“ useradd ”的更多信息和选项,请在终端中运行“ useradd ”命令以查看可用的选项:
useradd
最后,如果要修改用户帐户属性,例如修改用户名、用户ID (UID)、主目录、shell等,请使用usermod命令。