Linux 使用 adduser 与 useradd 添加普通用户
前言
在 Linux 操作系统中,添加用户可以使用 useradd
和 adduser
这两个命令。曾经在添加用户的实践中遇到过一些坑,比如使用 useradd
命令添加用户后无法正常使用,对 adduser
和 useradd
傻傻分不清楚。网上找到的相关内容很碎片化,初看会让人一脸懵逼,这促使我对这些知识进行了整理。
本文所有指令需要在 root 权限下执行。非 root 用户需要加
sudo
前缀,或使用sudo -i
命令切换到 root 账户操作。
adduser 和 useradd 的区别
对于 Debian 或 Ubuntu ,主要的区别在使用方式上:
adduser
是一个 perl 脚本,通过交互式菜单设定一些用户参数。在输入adduser 用户名
后,会自动创建用户主目录(并复制/etc/skel
目录下的文件)、指定系统 shell,提示输入用户密码,很简单的就添加了一个标准的普通用户。非常适合萌新和喜欢偷懒的大佬。useradd
是一个指令,如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。如果你需要正常使用这个账户,就还需要设置密码、创建家目录等额外操作。适合有经验的专业人士和喜欢装逼的大佬。
对于 CentOS 来说是没有区别的,adduser
通过符号链接指向 useradd
,即 CentOS 只有 useradd
使用 adduser 添加用户
以添加用户名为 aabb
的用户为例子,输入以下命令进入添加用户交互式菜单
adduser aabb
然后会提示输入密码,之后一路回车即可,非常简单。
Adding user `aabb' ...
Adding new group `aabb' (1002) ...
Adding new user `aabb' (1001) with group `aabb' ...
Creating home directory `/home/aabb' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for aabb
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
添加标准的普通用户有使用选项和不使用选项两种方式。
使用选项
以添加用户名为 aabb
的用户为例子,输入命令添加用户、添加用户目录、指定 bash 为 shell
useradd -m -s /bin/bash aabb
-m
自动创建用户的家目录,并将/etc/skel
中的文件复制到家目录中
-s
指定用户登入后所使用的 shell
然后对该用户设置密码,输入命令后会提示输入两次密码
passwd aabb
不使用选项
在不使用选项的情况下,添加一个标准普的通用户的过程相总共有 6 个步骤,略显麻烦,也没必要这样操作。但可以从中了解添加一个用户具体做了哪些事情,对解决一些问题有参考价值。
- 以添加用户名为
aabb
的用户为例子,输入命令添加用户
useradd aabb
- 设置密码
passwd aabb
- 创建家目录
mkdir /home/aabb
- 将
/etc/skel
目录下的文件复制到该用户目录
cp -r /etc/skel/. /home/aabb
- 更改家目录归属
chown -R aabb:aabb /home/aabb
- 指定 Shell 为
/bin/bash
usermod -s /bin/bash aabb
删除用户
如果因为错误的方式添加了用户,而不知道如何解决,可以删除这个用户。
以删除 aabb
这个用户为例子,首先终结该用户所有进程
pkill -u aabb
然后输入删除命令
userdel -r aabb
-r
表示删除用户的同时,将其宿主目录和系统内与其相关的内容删除。