本文记录了 Linux 系统中账户管理的相关命令,包括添加账户(useradd)、删除账户(userdel)、强制登出(pkill)等命令的使用方法。
前言
在购买腾讯云的服务器并搭建个人网站后,我才算是真正的开始学习 Linux 命令。
我最开始使用的是 CentOS 7 系统,在官方停止维护之后就更换为了 Debian 系统。
但不论是 CentOS 7 系统还是 Debian 系统,其账户管理的命令都是一样的。
本文使用 Hyper-V 中的 Debian 系统作为演示环境,具体系统信息如下:
root@hyper-debian:~# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Tips : 文中命令默认以 root 账户执行,因此省略 sudo 命令。
添加账户
Linux 上可以添加普通账户、管理员账户、服务账户等多种类型的账户,这些账户的创建都可以使用 useradd 命令完成。
普通账户
普通账户无法安装系统软件、修改配置文件,一般只能修改和管理该账户所拥有的文件。
- 执行以下命令可以添加名为
newuser的账户:useradd -m -s /bin/bash newuser- 参数
-m: 创建账户家目录/home/newuser - 参数
-s /bin/bash: 指定账户登录的 Shell 为/bin/bash
- 参数
- 新账户必须使用
passwd命令设置密码,否则无法登录:passwd newuser
管理员账户
管理员账户可以通过 sudo 命令临时获取 root 账户的权限,以此执行系统级管理和维护系统任务。
- 执行以下命令可以添加名为
adminuser的管理员账户:useradd -m -s /bin/bash -G sudo adminuser- 参数
-m: 创建账户家目录/home/adminuser - 参数
-s /bin/bash: 指定账户登录的 Shell 为/bin/bash - 参数
-G sudo: 将账户组指定为sudo组
- 参数
- 新账户必须使用
passwd命令设置密码,否则无法登录:passwd adminuser
若是 CentOS 7 系统,则应使用
-G wheel参数,例如:useradd -m -s /bin/bash -G wheel adminuser
若为已有账户添加管理员权限,则应使用-aG sudo参数,例如:usermod -aG sudo newuser
服务账户
服务账户又称为系统账户,是专门用于运行系统后台程序或后台服务的账户。
- 执行以下命令可以添加名为
serviceuser的服务账户:useradd -r -s /sbin/nologin serviceuser- 参数
-r: 创建服务账户并且不创建账户家目录 - 参数
-s /bin/bash: 指定账户登录的 Shell 为/sbin/nologin从而阻止人工登录
- 参数
服务账户禁止人工登录,因此不需要设置密码。
删除账户
Linux 系统中使用 userdel 命令删除账户。
- 执行以下命令可以删除名为
newuser的账户:userdel -r newuser- 参数
-r: 同时删除账户家目录和邮件池文件
- 参数
- 可以查看
/etc/passwd文件确认newuser账户是否已删除:cat /etc/passwd | grep newuser如果没有任何输出则表示该账户已删除。
强制登出
强制登出能终止已登录会话的 Shell 进程,常用且推荐的方法是 pkill 命令。
- 执行以下命令查看已登录 Shell 会话的账户信息:
w类似输出如下:
root@hyper-debian:~# w 01:15:40 up 5:27, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 19:49 5:26m 0.03s ? -bash hyper pts/0 172.26.68.46 19:50 0.00s 0.09s 0.03s sshd: hyper [priv] hyper pts/1 172.26.68.46 01:15 12.00s 0.00s ? -bash - 使用
pkill命令和-t参数可以终止对应 TTY 账户的 Shell 进程:pkill -9 -t pts/1
总结
Linux 账户管理命令基本上就是这些,另外账户组管理、权限管理等命令不属于此类别。
我个人习惯直接使用 root 账户进行系统管理和维护,所以不会主动创建管理员账户。
服务账户一般是安装程序时由程序自行添加,例如 MySQL 、 Nginx 等服务所使用的账户。
普通账户一般会用来运行特定的程序,或者是使用该账户登录系统后再切换为 root 账户。