You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下无需切换用户,如何查询其他用户对指定文件的权限?

在Linux中不切换用户查询非当前用户对文件的权限

当然有办法,以下是几种不用su切换用户就能实现的实用方法:

1. 使用access命令(部分系统可用)

access命令可以直接测试指定用户对文件的权限,语法如下:

access -u 目标用户名 -r/-w/-x 文件路径
  • -r:测试读权限
  • -w:测试写权限
  • -x:测试执行权限
    命令返回0表示该用户拥有对应权限,非0则没有。比如测试用户alice对/var/log/syslog的读权限:
access -u alice -r /var/log/syslog
echo $?  # 输出0表示可读,非0不可读

2. 用getfacl分析ACL权限

如果文件设置了ACL(访问控制列表),getfacl能列出详细的权限规则,帮你判断目标用户的权限:

getfacl 文件路径

输出里会包含:

  • 所有者(owner)、所属组(group)的基础权限
  • 针对特定用户的ACL条目(比如user:alice:rwx)
  • 针对特定组的ACL条目
  • 掩码(mask)限制的有效权限
    结合目标用户的所属组(用id 目标用户名查看),就能精准判断其实际拥有的权限。

3. 手动计算基础权限

如果文件只有传统的Unix权限位,你可以通过两步手动判断:

  1. 查看文件的权限位和属主属组:
ls -l 文件路径

比如输出-rwxr-xr-- 1 bob staff 1024 Aug 1 10:00 test.txt,表示所有者bob有rwx,组staff有r-x,其他用户有r--。
2. 查看目标用户的UID、GID和所属组:

id 目标用户名

对比文件的属主、属组,就能对应判断权限:

  • 如果目标用户是文件所有者,匹配所有者权限位
  • 如果目标用户属于文件的所属组,匹配组权限位
  • 否则匹配其他用户权限位

4. 用runuser以目标用户身份测试(需root权限)

如果你有root权限,可以用runuser直接以目标用户的身份执行权限测试命令,不用切换会话:

runuser -l 目标用户名 -c 'test -r 文件路径 && echo "可读" || echo "不可读"'
runuser -l 目标用户名 -c 'test -w 文件路径 && echo "可写" || echo "不可写"'
runuser -l 目标用户名 -c 'test -x 文件路径 && echo "可执行" || echo "不可执行"'

这个方法最直接,因为是模拟目标用户的实际访问情况,但需要root权限才能执行。

内容的提问来源于stack exchange,提问作者Fifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:00:49