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 <用户>
命令来查看用户属于哪些用户组,其中是否有sudo
或wheel
。如果发现用户存在于前述组中,你可以使用以下命令将其从组中去除。
# 在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 <用户> # 删除<用户>的账号及其主目录