跳转至

管理用户和组

底层工具和前端工具

管理用户和组可以使用底层工具 useraddgroupaddusermod,也可以使用 adduser 这种对用户友好的前端工具。前端工具适合交互式操作,上手简单;底层工具适合在脚本中使用,学习成本稍微高一点。

常用命令汇总

这里把管理用户和组的相关命令列出来,命令中 jack 是用户名,group01 是组名。个别命令会进入对话模式,请勿全部复制粘贴。

# 创建用户
sudo adduser jack

# 创建组
sudo addgroup group01

# root 强制修改用户密码
sudo passwd jack

# 修改自己的密码
passwd

# 将用户加入组
sudo adduser jack group01

# 删除组
sudo delgroup group01

# 删除用户
sudo deluser jack --remove-home

adduser

下面演示如何创建一个用户、将用户加入组,最后删除用户:

$  sudo adduser jack
Adding user `jack' ...
Adding new group `jack' (1004) ...
Adding new user `jack' (1003) with group `jack' ...
Creating home directory `/home/jack' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for jack
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] 
$  id jack
uid=1003(jack) gid=1004(jack) groups=1004(jack)
$  sudo adduser jack sudo
Adding user `jack' to group `sudo' ...
Adding user jack to group sudo
Done.
$  id jack
uid=1003(jack) gid=1004(jack) groups=1004(jack),27(sudo)
$ sudo deluser jack --remove-home
Looking for files to backup/remove ...
Removing files ...
Removing user `jack' ...
Warning: group `jack' has no more members.
Done.

adduser jack 执行之后进入对话模式,输入密码两次,后面可以一路回车。默认会创建「home 目录」,并创建与用户同名的组。更多默认选项通过 /etc/adduser.conf 配置。

useradd

  • -b, --base-dir 指定新用户「home 目录」的基目录
  • -d, --home-dir 指定新用户的「home 目录」
  • -m, --create-home 创建「home 目录」
  • -M, --no-create-home 不创建「home 目录」
  • -p, --password PASSWORD 指定新用户的密码,可以是明文也可以是密文
  • -s, --shell SHELL 新用户的「登录 shell」
  • -u, --uid UID 指定新用户的 ID
  • -g, --gid GROUP 指定新用户主组的名称或 ID

使用 useradd 创建一个常规用户:

# 创建 jack 用户,设置密码为 PASSWORD,并创建「home 目录」
useradd jack -p PASSWORD -m

创建非登录用户

创建非登录用户可指定 -s /usr/sbin/nologin,即禁用「登录 shell」,命令如下:

useradd jack -d /var/lib/jack -m -s /usr/sbin/nologin

修改密码

passwd 以对话模式修改密码,一次修改一个用户;chpasswd 可以批量修改密码,它从 stdin 读取用户名和密码。

chpasswd 使用方法如下:

$  echo "jack:NewPassword" | sudo chpasswd
$  cat passwd.list 
jack:pw-jack
user01:pw-01
user02:pw-02
$  cat passwd.list  | sudo chpasswd
$