Найти файлы с установленными списками ACL

Как я могу найти все файлы с некоторыми расширенными списками ACL, т.е. те, с небольшим + в конце флагов разрешений, показанных ls -l,

Я не мог найти соответствующий флаг для find, Мой наивный подход был бы find в сочетании с ls -l и grep, Но я не думаю, что это хорошо.

У кого-нибудь есть идея?

5 ответов

Решение

getfacl может дамп ACL рекурсивно, и он имеет --skip-base опция для игнорирования файлов без ACL.

getfacl -R -s -p /directory | sed -n 's/^# file: //p'

Версия Perl:

getfacl -R -p -s  / | perl -wn -e ' if (/^# file/) { s|^# file: /||; print; }'

-R: Список ACL всех файлов и каталогов рекурсивно.

-s: Пропустить файлы, которые имеют только базовые записи ACL (владелец, группа, другие).

getfacl -Rs .
getfacl --recursive --skip-base .

Как я это решил:

      getfacl --recursive --skip-base / 2>/dev/null | grep "file:" | cut -d" " -f3 | awk '{print "/"$1}'

возвращает:

      /dev/snd/seq
/dev/snd/timer
/dev/dri/card0

Я нашел это прибегая к помощи противоположного; чтобы найти файлы без установленных ACL. Это то, что я закончил (на случай, если какой-то другой гуглер найдет это)

ls --color=auto -lR | grep -v "\+ " | grep -v "^[.,a-z,1-9]" | grep -v "^$"

По-видимому ls -R быстрее, чем поиск (у меня есть файлы kagillion, и каждая команда поиска занимает у меня 2 часа).

Другие вопросы по тегам