Получить права для конкретного пользователя в файле / каталоге

Я ищу команду, которая по существу будет делать следующее: проверить, какие права у пользователя есть в файле / dir (включая 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 

Доступна ли такая команда или какие инструменты / команды не могут использоваться для создания скрипта, который бы это сделал?

One Solution collect form web for “Получить права для конкретного пользователя в файле / каталоге”

Я разрабатываю следующий код 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 .

  • ACL по умолчанию: файлы и каталоги
  • Разрешить пользователю доступ к файлам python mailman от root?
  • ACL - то же самое имя acl для всех вновь созданных файлов автоматически
  • Приоритет пользователя и владельца группы в разрешении файлов
  • Использовать ACL для согласования разрешений внутри одной папки
  • Возможно ли создать файл с привилегиями других пользователей?
  • Установка прав доступа rwx по умолчанию для группы, но только rw разрешения по умолчанию для файлов
  • установить все исполняемые файлы, исполняемые всеми пользователями, но оставить неисполняемый файл неисполнением?
  • Разрешение группы ACL по-прежнему не позволяет разрешениям на запись
  • Сбой ACL NFSv4
  • В чем разница между этими двумя наборами команд для настройки разрешений ACL?
  • Почему собственная группа не получает исполняемый бит?
  • Linux и Unix - лучшая ОС в мире.