Знайдіть каталоги та файли з дозволами, відмінними від 775/664


21

Я переміщую веб-сайт з одного сервера на інший, і Git не зберігає метадані, такі як дозволи на файли. Мені потрібно знайти каталоги та файли, які не є 775/664 відповідно.

Зараз я використовую цю загальну форму:

$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'

Хоча це працює, я вважаю, що це досить хакі. Чи є кращий спосіб зробити це, можливо, канонічним способом, чи мені просто бути хакіт?

Це працює на останній версії Ubuntu з інструментами GNU під Bash.

Відповіді:


39

Використовуйте -permтест findу поєднанні з -not:

find -type d -not -perm 775 -o -type f -not -perm 664
  • -perm 775відповідає всім файлам з дозволами точно рівним 775. -perm 664робить те ж саме для 664.
  • -not (булевий НЕ) заперечує тест, що випливає, тому він відповідає точно протилежним до того, що він би мав: у цьому випадку всі ті файли, які не мають правильних дозволів.
  • -o(булева АБО) поєднує в собі два набори тестів разом, які відповідають будь-якому з них: він має найнижчий пріоритет, тому він ділить наші тести на дві різні групи. Ви також можете використовувати дужки, щоб бути більш чіткими. Тут ми співставляємо каталоги з дозволами, які не є, 775і звичайні файли з такими дозволами 664.

Якщо вам потрібні дві окремі команди для каталогів і файлів, просто розріжте їх навпіл -oі використовуйте кожну половину окремо.


Красиво, дякую! Я не знав, що можуть бути встановлені дві різні умови (наприклад, -d і type -f), і не знав про -perm.
dotancohen

Можливо, зауважте, що -notце не стандарт POSIX; вони використовують !замість цього.
користувач1404316

2

Я поняття не маю, чого намагався досягти ваш код. Зазвичай причина пошуку файлів і каталогів з неправильними дозволами полягає в їх зміні.

Отже, це я успішно використовую в Ubuntu 16.04

find \! -perm 775 -type d -exec chmod 775 {} \;
find \! -perm 664 -type f -exec chmod 664 {} \;

Це демонструє! символ втечі


Насправді метою було не змінити дозволи файлів, а визначити, які файли потребують дозволу на сніжинку під час завантаження їх на виробничий веб-сервер. Спасибі.
dotancohen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.