ファイル/ディレクトリに対する特定のユーザーの権限を取得する

ファイル/ディレクトリに対する特定のユーザーの権限を取得する

デフォルトでは、次のようなコマンドを探しています。ユーザーがファイル/ディレクトリ(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

おすすめ記事