Как проверить действующие разрешения/доступность файла для данного файла и данного пользователя?

Как проверить действующие права доступа к файлам (включая ACL)/доступность для данного файла и данного пользователя (включая сервисные/системные учетные записи) без проверки всего пути вручную?

Пример: Предположим, пользователь joe и файл /long/path/to/file.txt. Даже если файл .txt был изменен на 777, Джо все равно должен иметь доступ к /long/, а затем /long/path/ и затем /long/path/to/ раньше. Если у joe нет доступа хотя бы для чтения ко всем папкам в пути, он не может получить доступ (чтение/запись/выполнение) к файлу. Таким образом, действующие разрешения для него (как пользователя «мир/все») равны 0, и он не может получить доступ к файлу.

В качестве альтернативы: как мне получить список разрешений (включая ACL) всех пользователей (включая учетные записи служб/систем) для данного файла?

Приложение или bash-скрипт также приветствуются.

Похожий вопрос с несколько иной направленностью уже задавали в Unix & Linux: как проверить, может ли пользователь получить доступ к данному файлу?

ls -del FILE|DIRбудут перечислены как стандартные разрешения unix, так и списки ACL. Что именно вы ищете?
@patrix Ваша lsкоманда показывает права доступа к данному файлу. Но, как описано в связанном вопросе Unix и Linux, разрешения на главном пути могут быть установлены иначе, так что файл, доступный для чтения всем, не может быть прочитан произвольным пользователем. Результат: права доступа к файлу равны (77)7, но действующие права доступа к файлу равны (77)0 (для произвольного пользователя, отличного от владельца и не входящего в ту же группу)
Не могли бы вы уточнить свой вопрос, чтобы он стоял сам по себе, и, возможно, добавить несколько примеров? Также может быть полезно различать права доступа к файлам (которые отображаются с помощью ls -del) и возможность доступа (что, кажется, то, что вы ищете).
Интересный вызов на самом деле! Если принять во внимание жесткие ссылки на файлы, будет очень интересно :-)

Ответы (1)

Одним из коммерческих приложений, которое предоставляет эффективные разрешения для пользователя и выбранного файла или папки, является TinkerTool System :

В приведенном ниже примере показаны действующие разрешения файла /private/var/log/clamav.log для пользователя Spotlight . Пользователь Spotlight не может ни читать, ни записывать данные.

введите описание изображения здесь

При активации вкладки «Показать или установить разрешения» разрешения/владение POSIX отображаются явно.

введите описание изображения здесь