前言

在 Linux 操作系统中,添加用户可以使用useraddadduser这两个命令。曾经在添加用户的实践中遇到过一些坑,比如使用useradd命令添加用户后无法正常使用,对adduseruseradd傻傻分不清楚。网上找到的相关内容很碎片化,初看会让人一脸懵逼,这促使我对这些知识进行了整理。

本文所有指令需要在 root 权限下执行。非 root 用户需要加sudo前缀,或使用sudo -i命令切换到 root 账户操作。

adduser 和 useradd 的区别

对于 Debian 或 Ubuntu ,主要的区别在使用方式上:

  • adduser是一个 perl 脚本,通过交互式菜单设定一些用户参数。在输入adduser 用户名后,会自动创建用户主目录(并复制/etc/skel目录下的文件)、指定系统 shell,提示输入用户密码,很简单的就添加了一个标准的普通用户。非常适合萌新和喜欢偷懒的大佬
  • useradd是一个指令,如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。如果你需要正常使用这个账户,就还需要设置密码、创建家目录等额外操作。适合有经验的专业人士和喜欢装逼的大佬

对于 CentOS 来说是没有区别的,adduser通过符号链接指向useradd,即 CentOS 只有useradd

使用 adduser 添加用户

以添加用户名为p3terx的用户为例子,输入以下命令进入添加用户交互式菜单

adduser p3terx

然后会提示输入密码,之后一路回车即可,非常简单。

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

使用 useradd 添加用户

前面提到,useradd如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。为了和adduser一样添加一个标准的普通用户就需要指定选项,或者手动进行额外操作,这样添加的用户才能正常使用。所以对于useradd添加标准的普通用户有使用选项不使用选项两种方式。

使用选项

以添加用户名为p3terx的用户为例子,输入命令添加用户、添加用户目录、指定 bash 为 shell

useradd -m -s /bin/bash p3terx
-m 自动创建用户的家目录,并将/etc/skel中的文件复制到家目录中

-s 指定用户登入后所使用的 shell

然后对该用户设置密码,输入命令后会提示输入两次密码

passwd p3terx

不使用选项

在不使用选项的情况下,添加一个标准普的通用户的过程相总共有6个步骤,略显麻烦,也没必要这样操作。但可以从中了解添加一个用户具体做了哪些事情,对解决一些问题有参考价值。

  1. 以添加用户名为p3terx的用户为例子,输入命令添加用户
useradd p3terx
  1. 设置密码
passwd p3terx
  1. 创建家目录
mkdir /home/p3terx
  1. /etc/skel目录下的文件复制到该用户目录
cp -r /etc/skel/. /home/p3terx
  1. 更改家目录归属
chown -R p3terx:p3terx /home/p3terx
  1. 指定 Shell 为/bin/bash
usermod -s /bin/bash p3terx

删除用户

如果因为错误的方式添加了用户,而不知道如何解决,可以删除这个用户。

以删除p3terx这个用户为例子,首先终结该用户所有进程

pkill -u p3terx

然后输入删除命令

userdel -r p3terx
-r 表示删除用户的同时,将其宿主目录和系统内与其相关的内容删除。

授予普通用户 sudo 权限

有时需要使用 root 权限,比如安装软件、启动服务等操作时就需要用到sudo命令来提升权限才能进行操作。而新添加的普通用户是没有权限进行 sudo 操作的,所以我们需要对普通用户授予 sudo 权限。可以参考《Linux 中授予普通用户 sudo 权限的正确方法》这篇文章来进行设置。

参考文章

一天一点linux(18):adduser和useradd的区别

Linux 用户和用户组管理

linux useradd 命令基本用法