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