获取特定用户对文件/目录的权限

获取特定用户对文件/目录的权限

我正在寻找一个命令,该命令本质上会执行以下操作:检查用户对文件/目录(包括 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

相关内容