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 <数字>命令。

设置有效期限

chage -E <YYYY-MM-DD> <用户> # 设置用户账号的有效期限;将日期设置成-1可以去除期限
chage -l <用户> # 检查用户账号和密码期限信息

禁止通过ssh进行流量转发

修改/etc/ssh/sshd_config,文件,添加以下配置:

Match User <用户>
    X11Forwarding no
    AllowTcpForwarding no

修改配置后,需要运行systemctl restart sshd使配置生效。

为用户添加/撤销docker权限

如果希望使某用户能够直接使用docker命令而无需借助sudo,只要将该用户加入docker用户组即可 1 。有关操作方法与为用户添加/撤销sudo权限类似,见前述。

1 这种做法不需要另外将该用户置于sudo用户组、对其赋予sudo权限,但仍然会增加其权限,需要特别注意。

删除用户

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