关于符号链接权限覆盖问题及Ubuntu 22.04中Snap绕过Firefox权限限制的咨询
嗨,我来帮你拆解这个问题的核心原因和解决办法~
首先,你遇到的情况本质上有两个关键点:
1. 符号链接的权限不生效
你修改的/usr/bin/firefox大概率是一个符号链接(可以用ls -l /usr/bin/firefox验证,行首会显示l标识),而符号链接本身的权限(比如你设置的700)其实是无效的——系统实际会检查它指向的目标文件的权限。所以哪怕你把这个链接锁得再死,只要用户能访问到目标文件,就能正常运行程序。
2. Snap版本的Firefox优先级更高
Ubuntu 22.04默认是通过Snap包安装Firefox的,你的系统PATH环境变量里,/snap/bin的优先级比/usr/bin要高(可以让普通用户执行echo $PATH确认)。这意味着当用户直接输入firefox时,系统会先找到/snap/bin/firefox并启动它,完全跳过了你修改权限的/usr/bin/firefox。
针对你的需求(阻止特定非管理员用户使用Firefox),可以试试这些方法:
方法一:调整用户的PATH顺序
编辑该用户的~/.bashrc或~/.profile文件,添加一行命令把/snap/bin从PATH中移除,或者放到/usr/bin之后:# 移除/snap/bin PATH=$(echo $PATH | sed 's/\/snap\/bin://g') # 或者把/usr/bin移到最前面 PATH="/usr/bin:$PATH"保存后让用户重新登录,此时输入
firefox会优先访问/usr/bin/firefox,而你已经设置了700权限,普通用户就会收到权限拒绝的提示。方法二:给用户设置Firefox别名
在用户的~/.bashrc里添加一行别名,让输入firefox时直接提示权限不足:alias firefox='echo "Permission denied: You are not allowed to run Firefox."'这个方法简单但有漏洞——用户如果直接输入
/snap/bin/firefox还是能绕过,适合配合PATH调整一起用。方法三:限制Snap版Firefox的访问权限
Snap应用的权限由Snapd管理,默认所有用户都能运行已安装的Snap应用。如果要彻底阻止特定用户,可以:- 先确认Snap Firefox的实际路径:
which firefox(管理员执行会显示/snap/bin/firefox) - 修改该路径的权限为只有管理员能访问:
不过要注意,Snap更新后可能会重置这个权限,需要定期检查。sudo chmod 700 /snap/bin/firefox
- 先确认Snap Firefox的实际路径:
备注:内容来源于stack exchange,提问作者Manu

