파일/디렉토리에 대한 특정 사용자의 권한 얻기

파일/디렉토리에 대한 특정 사용자의 권한 얻기

기본적으로 다음을 수행하는 명령을 찾고 있습니다. 사용자가 파일/디렉터리(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.

관련 정보