我正在寻找一个命令,该命令本质上会执行以下操作:检查用户对文件/目录(包括 ACL)拥有哪些权限并返回它。
例如,假设您有以下目录:
-rw-r--r-- 1 user1 group1 [snip] file1
-rw-rw-r-- 1 user2 group1 [snip] file2
drwxrwx--- 1 user2 group2 [snip] dir1
那么命令和输出应该是(如果 user1 仅是 group1 的成员):
rights user1 file1 => r-- or 4
rights user1 file2 => rw- or 6
rights user1 dir1 => --- or 0
是否有这样的命令可用,或者哪些工具/命令不能用于构建可以执行此操作的脚本?
答案1
我详细阐述了以下bash代码
#!/bin/bash
# Use: $0 user files
user="$1"
shift
sudo -u "$user" bash -c 'for f; do
[[ -r "$f" ]] && printf 'r' || printf '-'
[[ -w "$f" ]] && printf 'w' || printf '-'
[[ -x "$f" ]] && printf 'x' || printf '-'
printf " %s\\n" "$f"
done' _ "$@"
这应该自动考虑 acl(如果可用),但缺点是使用sudo
(或替代su
)成为$user
。