Intereting Posts
Синтаксис: значение unset ssh -o config? Что использовать для резервного копирования файлов, сохраняя списки ACL? Как удалить конкретный перевод xterm X11 по умолчанию? Бесплатное распространение gnu / linux для веб-сервера Как использовать настоящий PCI-модем в виртуальной машине? Как связать RT2870STA.dat с AP для подключения Wi-Fi к TP-Link T2UH AC600? Как найти процессор и использование памяти для дочерних процессов Как получить gnome для запуска / etc / gdm / PostSession / Default при использовании XRDP w / VNC Как читать вывод использования SysRq для использования в режиме показа памяти? Почему приложение «ssh -X» работает медленнее, чем vncviewer через «ssh -X» Подключите два устройства ttySx на одном компьютере Где найти результирующий .so файл компиляции? Как настроить точку доступа Wi-Fi только для пользователей, если они согласятся с EULA? Открытие файла из Nemo не устанавливает текущий рабочий каталог Почему мышь и клавиатура замораживаются при замене Linux

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

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

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

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