Linux用户管理操作

计算机技术
作者

zenggyu

发布日期

2019-11-08

摘要
介绍常用的Linux用户管理操作。

引言

本文用来记录常用的Linux用户管理操作,方便日常参考。本文所记录的多数操作需通过root权限来执行。

注:下文将提到的一些指令是通过修改/etc/passwd/etc/shadow/etc/sudoers等文件起效的。但在某些情况下,这些文件可能处于不可变更(immutable)状态,这时即使是root用户也无法对其进行修改。要检查某个文件是否处于该状态,可以使用lsattr <文件>命令;如果输出的属性序列中含有字符i,则代表该文件处于不可变更状态(见以下代码及输出示例)。要解除不可变更状态,可以使用chattr -i <文件>命令。

lsattr /etc/passwd

# 以下信息表明文件处于不可变更状态:
# ----i---------e--- /etc/passwd

查询用户信息

whoami # 显示当前用户名
id <用户> # 显示<用户>的相关信息,包括用户id、群组id、所属群组等。
cat /etc/passwd # 列出此计算机上的用户列表

创建用户

adduser <用户> # 创建一个名为<用户>的用户;该命令同时会创建同名的主目录,并生成相关文件

为用户添加sudo权限

将用户添加到具有sudo权限的用户群组,即可使其获取sudo权限。在Debian/Ubuntu发行版中,该用户群组默认为sudo;而在Redhat/Centos发行版中,该用户群组默认为wheel

# 在Debian/Ubuntu发行版中使用以下指令:
usermod -aG sudo <用户>

# 在Redhat/Centos发行版中使用以下指令:
usermod -aG wheel <用户>

注意,在某些情况下,suoders文件中的wheel用户组处于被注释的状态,需要通过以下指令编辑sudoers文件并去除注释符#以便使该用户组生效:

export EDITOR=nano && sudo -E visudo

撤销用户的sudo权限

你可以通过groups <用户>命令来查看用户属于哪些用户组,其中是否有sudowheel。如果发现用户存在于前述组中,你可以使用以下命令将其从组中去除。

# 在Debian/Ubuntu发行版中使用以下指令:
gpasswd -d <用户> sudo

# 在Redhat/Centos发行版中使用以下指令:
gpasswd -d <用户> wheel

修改用户密码

passwd <用户> # 修改<用户>的密码

备注:如果需要生成随机密码,可以使用openssl rand -base64 <数字>命令。

删除用户

userdel -r <用户> # 删除<用户>的账号及其主目录