侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux adduser命令详解:如何创建用户和用户组(附实例和注意事项)

Linux adduser命令是用于创建新的用户或用户组的高级接口,它可以根据不同的选项和参数来定制用户账户的设置。adduser命令与useradd命令是同一个命令,只是adduser命令在创建新账户时会提供交互式的提示。本文将介绍Linux adduser命令的用法和实例,帮助你快速掌握如何添加用户和用户组。

Linux adduser命令介绍

adduser命令的全称是add user,意思是添加用户。它是Linux系统中管理用户和用户组的重要工具,可以用来创建新的用户或用户组,或者更新已有的用户或用户组的信息。adduser命令的功能包括:

  • 为新用户分配一个唯一的用户ID(UID)和用户组ID(GID)。
  • 为新用户创建一个默认的主目录(/home/)和登录shell(/bin/bash)。
  • 为新用户设置一个初始的密码,并提示用户修改密码。
  • 为新用户收集一些额外的信息,如全名、电话号码、办公室等。
  • 为新用户添加到指定的用户组或创建新的用户组。
  • 为新用户指定一个过期日期或一个不活跃时间。

adduser命令是useradd命令的高级接口,它提供了更友好的交互式提示,让用户更容易地创建新账户。useradd命令则需要用户提供更多的选项和参数,否则会使用系统的默认值。adduser命令和useradd命令实际上是同一个命令,只是通过符号链接(symbolic link)来实现的。你可以使用以下命令来查看它们的链接关系:

[linux@bashcommandnotfound.cn ~]$ ls -l /usr/sbin/adduser /usr/sbin/useradd
lrwxrwxrwx. 1 root root 7 Nov 27 13:31 /usr/sbin/adduser -> useradd
-rwxr-xr-x. 1 root root 101K Nov 27 13:31 /usr/sbin/useradd

从上面的输出可以看出,adduser命令是指向useradd命令的一个软链接(soft link),也就是说,当你执行adduser命令时,实际上是执行了useradd命令。不过,adduser命令会根据不同的选项和参数来调用useradd命令,从而提供不同的功能和交互方式。

Linux adduser命令适用的Linux版本

adduser命令在大多数的Linux发行版中都是可用的,但是在一些Linux发行版中,它可能需要安装或配置。下面是一些常见的Linux发行版中adduser命令的使用情况:

  • Ubuntu/Debian:adduser命令是默认安装的,它是一个Perl脚本,它会调用useradd命令来创建用户或用户组。它的配置文件是/etc/adduser.conf,你可以在这个文件中修改一些默认的设置,如主目录的位置、密码的复杂度等。
  • CentOS/RHEL:adduser命令是默认安装的,它是一个软链接,指向useradd命令。它的配置文件是/etc/default/useradd,你可以在这个文件中修改一些默认的设置,如主目录的位置、登录shell等。
  • Fedora:adduser命令是默认安装的,它是一个软链接,指向useradd命令。它的配置文件是/etc/default/useradd,你可以在这个文件中修改一些默认的设置,如主目录的位置、登录shell等。
  • Arch Linux:adduser命令是不可用的,你需要使用useradd命令来创建用户或用户组。你可以使用pacman命令来安装一个名为adduser的包,它提供了一个类似于Ubuntu/Debian的adduser命令的Perl脚本。它的配置文件是/etc/adduser.conf,你可以在这个文件中修改一些默认的设置,如主目录的位置、密码的复杂度等。

如果你不确定你的Linux发行版是否支持adduser命令,你可以使用以下命令来检查:

[linux@bashcommandnotfound.cn ~]$ which adduser
/usr/sbin/adduser

如果输出了adduser命令的路径,说明它是可用的。如果没有输出,说明它是不可用的,你需要使用useradd命令或者安装adduser命令。

Linux adduser命令的基本语法

adduser命令的基本语法格式如下:

adduser [options] <username>

其中,username是要创建的新用户的名称,options是一些可选的选项和参数,用来定制新用户的设置。如果不指定任何选项和参数,adduser命令会使用系统的默认值,并提供交互式的提示来创建新用户。

Linux adduser命令的常用选项说明

adduser命令有很多的选项和参数,可以用来定制新用户的设置。下面是一些常用的选项和参数的说明:

选项说明
--system创建一个系统用户或用户组,它的UID和GID都小于1000,不会创建主目录和密码
--conf 使用指定的文件作为配置文件,而不是默认的/etc/adduser.conf或/etc/default/useradd
--disabled-login禁止新用户登录,不会创建密码
--disabled-password禁止新用户使用密码登录,只能使用其他方式,如SSH密钥
--gid 指定新用户的用户组ID为ID,如果用户组不存在,会自动创建。如果指定了用户名,也会将新用户添加到该用户组
--group创建一个新的用户组,如果指定了用户名,也会将新用户添加到该用户组
--home 指定新用户的主目录为directory,如果目录不存在,会自动创建
--shell 指定新用户的登录shell为shell,如/bin/bash或/bin/sh
--ingroup 将新用户添加到指定的用户组group,而不是默认的用户组
--no-create-home不创建新用户的主目录

这些选项和参数可以组合使用,来实现不同的功能。例如,如果你想创建一个系统用户,不创建主目录,不设置密码,指定用户组ID为100,登录shell为/bin/sh,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo adduser --system --no-create-home --disabled-password --gid 100 --shell /bin/sh sysuser

如果你想查看adduser命令的所有选项和参数的说明,你可以使用以下命令来查看它的手册页:

[linux@bashcommandnotfound.cn ~]$ man adduser

Linux adduser命令的实例

下面是一些使用adduser命令的实例,你可以通过这些实例来学习如何使用adduser命令来创建用户和用户组。

创建一个普通用户

最简单的使用adduser命令的方法是不指定任何选项和参数,只提供一个用户名。例如,如果你想创建一个名为alice的用户,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo adduser solr

这个命令会自动为新用户分配一个UID和GID,创建一个主目录和一个登录shell,启动passwd命令来设置密码,收集一些额外的信息。这样,一个名为solr的用户组就创建好了,你可以使用以下命令来查看它的信息:

[linux@bashcommandnotfound.cn ~]$ sudo cat /etc/group | grep solr
solr:x:1001:

如果你想在创建用户组的同时,创建一个同名的用户,并将其添加到该用户组,你可以在–group选项后面指定一个用户名。例如,如果你想创建一个名为solr的用户,并将其添加到名为solr的用户组,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo adduser --group solr

这样,一个名为bob的用户和用户组就创建好了,你可以使用以下命令来查看它们的信息:

[linux@bashcommandnotfound.cn ~]$ id solr
uid=1001(solr) gid=1001(solr) groups=1001(solr)
    
[linux@bashcommandnotfound.cn ~]$ ls -ld /home/solr
drwxr-xr-x. 2 bob bob 4096 Nov 27 13:31 /home/bob
    
[linux@bashcommandnotfound.cn ~]$ sudo cat /etc/passwd | grep solr
solr:x:1003:1003:solr,,102,234567890,876543210:/home/bob:/bin/bash
    
[linux@bashcommandnotfound.cn ~]$ sudo cat /etc/group | grep solr
solr:x:1003:

将一个用户添加到一个用户组

如果你想将一个已有的用户添加到一个已有的用户组,你可以使用--ingroup选项。这个选项会将指定的用户添加到指定的用户组,而不是默认的用户组。例如,如果你想将一个名为alice的用户添加到名为dev的用户组,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo adduser --ingroup dev alice

这个命令会将alice用户添加到dev用户组,如下所示:

Adding user `alice' to group `dev' ...
Adding user alice to group dev
Done.

这样,alice用户就成为了dev用户组的成员,你可以使用以下命令来查看它的信息:

[linux@bashcommandnotfound.cn ~]$ id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice),1002(dev)
[linux@bashcommandnotfound.cn ~]$ sudo cat /etc/group | grep dev
dev:x:1002:alice

你可以看到,alice用户的用户组ID(GID)仍然是1001,但是它的附加用户组(groups)中多了一个1002,这是dev用户组的GID。你也可以看到,dev用户组中多了一个成员alice。

创建一个用户并指定主目录和登录shell

如果你想创建一个用户,并指定它的主目录和登录shell,你可以使用--home和--shell选项。这些选项可以让你自定义新用户的主目录的位置和登录shell的类型。例如,如果你想创建一个名为charlie的用户,指定它的主目录为/data/charlie,指定它的登录shell为/bin/zsh,你可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo adduser --home /data/charlie --shell /bin/zsh charlie

这个命令会自动为新用户分配一个UID和GID,创建一个主目录和一个登录shell,启动passwd命令来设置密码,收集一些额外的信息,如下所示:

Adding user `charlie' ...
Adding new group `charlie' (1004) ...
Adding new user `charlie' (1004) with group `charlie' ...
Creating home directory `/data/charlie' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for charlie
Enter the new value, or press ENTER for the default
	Full Name []: Charlie Brown
	Room Number []: 103
	Work Phone []: 345678901
	Home Phone []: 765432109
	Other []: 
Is the information correct? [Y/n] Y

这样,一个名为charlie的用户就创建好了,你可以使用以下命令来查看它的信息:

[linux@bashcommandnotfound.cn ~]$ id charlie
uid=1004(charlie) gid=1004(charlie) groups=1004(charlie)
[linux@bashcommandnotfound.cn ~]$ ls -ld /data/charlie
drwxr-xr-x. 2 charlie charlie 4096 Nov 27 13:31 /data/charlie
[linux@bashcommandnotfound.cn ~]$ sudo cat /etc/passwd | grep charlie
charlie:x:1004:1004:Charlie Brown,,103,345678901,765432109:/data/charlie:/bin/zsh

你可以看到,charlie用户的主目录是/data/charlie,登录shell是/bin/zsh。

Linux adduser命令的注意事项

在使用adduser命令时,有一些注意事项需要了解,以避免一些常见的错误或问题。下面是一些常见的注意事项:

  • adduser命令需要root权限或sudo权限才能执行,否则会提示Permission denied。
  • adduser命令会检查用户名的合法性,用户名必须以字母开头,只能包含字母、数字、下划线、连字符和点号,不能包含空格或其他特殊字符,否则会提示Invalid user name。
  • adduser命令会检查用户名的唯一性,用户名不能与已有的用户或用户组重复,否则会提示User already exists。
  • adduser命令会检查用户组的合法性,用户组必须以字母开头,只能包含字母、数字、下划线、连字符和点号,不能包含空格或其他特殊字符,否则会提示Invalid group name。
  • adduser命令会检查用户组的唯一性,用户组不能与已有的用户或用户组重复,否则会提示Group already exists。
  • adduser命令会检查主目录的合法性,主目录必须以/开头,不能包含空格或其他特殊字符,否则会提示Invalid home directory。
  • adduser命令会检查登录shell的合法性,登录shell必须以/开头,不能包含空格或其他特殊字符,否则会提示Invalid shell。
  • adduser命令会检查登录shell的可用性,登录shell必须存在于/etc/shells文件中,否则会提示Shell not in /etc/shells。
  • adduser命令会检查密码的合法性,密码必须符合系统的复杂度要求,不能包含用户名或其他敏感信息,否则会提示Bad password。
  • adduser命令会检查密码的一致性,密码必须与确认密码相同,否则会提示Passwords do not match.
  • adduser命令会检查用户信息的合法性,用户信息不能包含冒号或换行符,否则会提示Invalid user information.

如果你在使用adduser命令时遇到了以上的错误或问题,你可以根据提示来修改你的输入,或者查看adduser命令的手册页来获取更多的帮助。

如果你在使用adduser命令时遇到了以下的错误:

bash: adduser: command not found

说明你的系统中没有安装或配置adduser命令,你可以使用以下的方法来解决:

  • 如果你的系统是Ubuntu/Debian,你可以使用以下命令来安装adduser命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt install adduser
  • 如果你的系统是CentOS/RHEL/Fedora,你可以使用以下命令来安装adduser命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install shadow-utils
  • 如果你的系统是Arch Linux,你可以使用以下命令来安装adduser命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S adduser
0

评论区