Linux adduser

305次阅读

Linux 使用 adduser 与 useradd 添加普通用户

前言

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

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

adduser 和 useradd 的区别

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

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

对于 Cen­tOS 来说是没有区别的,adduser 通过符号链接指向 useradd,即 Cen­tOS 只有 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 个步骤,略显麻烦,也没必要这样操作。但可以从中了解添加一个用户具体做了哪些事情,对解决一些问题有参考价值。

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

删除用户

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

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

pkill -u aabb

然后输入删除命令

userdel -r aabb

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

正文完