[Linux基础]-7-Linux用户权限管理
引言
这篇文章主要介绍Linux中用户权限的基础知识;主要包括sudo的用法,su和su -的用法与区别介绍。
文章目录
0×1.Linux用户sudo权限管理
★ 什么是 sudo:
● sudo 的全称是 "superuser do"。它可以授予普通用户执行特定系统管理任务的权限,而无需以 root 用户身份登录。这提高了系统的安全性,因为用户无需知道或使用 root 密码
● sudo 可以通过配置文件 /etc/sudoers 来控制哪些用户可以执行哪些命令。这样可以限制权限,确保用户只能够执行他们被授权的任务
● sudo 会记录所有使用 sudo 执行的命令。 这些日志可以帮助系统管理员审计和监控系统的使用
● 使用 sudo 验证成功后,用户在短时间内(默认是 15 分钟)执行 sudo 命令时不需要再次输入密码,这段时间可以通过配置调整
● 使用 sudo 命令后,可以使用 sudo -k 来清除 sudo 会话缓存,以便下次使用 sudo 时需要重新输入密码
● sudo无法用于shell的内建命令(例如cd),这是因为cd命令不是一个独立的可执行文件
★ /etc/sudoers 配置文件语法格式:
#示例-1
#下面这一条配置个字段的含义如下
#第一个root代表用户名称,这里是root账户
#第一个 ALL 表示该规则适用于所有主机。如果有多台主机共享同一个 sudoers 文件,该规则将在所有主机上生效
#(ALL:ALL)中第一个ALL 表示用户可以以任何用户的身份运行命令,第二个ALL表示用户可以以任何组的身份运行命令
#整条配置的最后一个 ALL 表示用户可以运行所有命令
root ALL=(ALL:ALL) ALL
#示例-2
#代表用户hk987可以在所有共享这个sudoers文件的主机上,以任何用户身份,任何组身份,无需密码(NOPASSWD)运行所有命令
hk987 ALL=(ALL:ALL) NOPASSWD: ALL
#示例-3
#代表hk987可以在所有共享这个sudoers文件的主机上,以www-data用户或www-data组的身份,执行“/usr/bin/systemctl restart apache2”这条命了
hk987 ALL=(www-data:www-data) /usr/bin/systemctl restart apache2
#示例-4
#代表hk987可以在所有共享这个sudoers文件的主机上,以任何用户和组身份,执行后面的apt或vim程序(将所有需要给与权限的程序用英文逗号隔开)
hk987 ALL=(ALL:ALL) /usr/bin/apt, /usr/bin/vim
#示例-5
#用%号开头可以指定一个组,所以这条配置的意思就是,所有在wheel组下的用户可以在所有共享这个sudoers文件的主机上,以任何用户和组身份,不用密码执行/usr/bin/python3程序
#wheel 组是一个特别的用户组,通常用于限制哪些用户可以使用 sudo 命令来获得超级用户权限。
#这是一种安全措施,确保只有经过特别授权的用户才能执行需要超级用户权限的操作。
%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/python3
#示例-6
#includedir用于包含指定目录中的所有配置文件
#这种方法使得 sudo 配置更加模块化和易于管理
#通过将不同用户或组的配置分散到多个文件中,可以更轻松地管理权限,并减少出错的可能性
#在被包含的目录中,可以自定义任意名字的sudoers配置文件,只要配置文件中包含的语法不出错就行
@includedir /etc/sudoers.d
0×2.Linux使用su切换用户
su的用法有两种,分别是"su"和"su -",下面是它们的区别:
● su(substitute user 或 switch user)允许当前用户切换到另一个用户身份,默认为 root 用户
● 使用 su 需要知道目标用户的密码(例如,切换到 root 用户需要输入 root 密码)
● 默认情况下,su 不会改变当前的环境变量(例如路径、主目录等)
● su - 类似于 su,但会模拟目标用户的登录环境,包括加载该用户的环境变量、启动文件(如 .bash_profile 或 .profile)等
● 与 su 一样,使用 su - 需要输入目标用户的密码
● su - 会加载目标用户的完整环境,使其更接近一个新登录会话
使用方法演示:
#直接使用su命令,默认切换到root用户,且不会改变当前的环境变量
987@hk987.xyz:~$ su
#用sudo命令实现
987@hk987.xyz:~$ sudo -s
#直接使用su -命令,默认切换到root用户,改变当前的环境变量为root用户的环境变量
987@hk987.xyz:~$ su -
#用sudo命令实现
987@hk987.xyz:~$ sudo -i
#指定切换到某个用户,例如hk987用户
987@hk987.xyz:~$ su hk987
#指定切换到某个用户且改变当前的环境变量为hk987用户的环境变量
987@hk987.xyz:~$ su - hk987
#如果你只需要在一个命令中切换目录并执行一个操作,可以使用 sudo 与 bash -c 结合来临时切换目录
#使用sudo命令启动bash然后使用-c参数执行命令(bash会暂时获得当前用户sudo权限)
987@hk987.xyz:~$ sudo bash -c 'cd /root && ls -la'