Для начала, я новичок в этом, поэтому, пожалуйста, простите меня, если это слишком элементарно или я слишком не информирован.
Я хотел бы проверить все файлы в определенном каталоге на моем VPS, чтобы убедиться, что файлы имеют размер 644, а каталоги - 755. О FTP не может быть и речи, потому что файлов / каталогов слишком много. SSH кажется наиболее логичным выбором, но прежде чем я перейду к разрешениям chmod, я хотел бы посмотреть, что я буду менять. Есть ли способ найти и отобразить файлы / каталоги, не соответствующие этим критериям?
Заранее благодарим за понимание.
В качестве уточнения ответа Дэвида Спиллетта, как насчет использования одной команды поиска? Я думаю, что он немного чище, чем все каналы, и вызывает grep. Более того, он устраняет некоторые крайние случаи, когда это может взорваться.
find . -type f ! -perm 644
должен найти каждый файл, у которого нет прав -rw-r - r-. Для каталогов вы можете использовать find . -type d ! -perm 755
.
Когда вы будете довольны тем, что видите, вы даже можете объединить chmod в одну команду:
find . -type f ! -perm 644 -exec chmod 644 {} \;
find . -type d ! -perm 755 -exec chmod 755 {} \;
find . -type f | xargs ls -l | grep -v rw-r--r--
"найти все файлы в текущем каталоге, перейти к" ls -l ", чтобы перечислить их детали, и просканировать вывод ls
для всех строк не (параметр -v команды grep отменяет совпадение), содержащий «rw-r - r--» и для каталогов:
find . -type d | xargs ls -l | grep -v drw-r--r--
Если вы хотите просканировать другой каталог, замените "." с ним, например:
find /path/to/directory -type f | xargs ls -l | grep -v rw-r--r--
и если некоторые из имен файлов / каталогов могут содержать пробелы, используйте параметры «использовать строки с разделителями 0» в find и xargs, например, чтобы избежать ошибок:
find . -type f -print0 | xargs -0 ls -l | grep -v rw-r--r--
Также вы можете удалить -v
вариант из grep для поиска файлов / каталогов, которые делать совпадение, если вы хотите указать их как проверку работоспособности.
С помощью find
по умолчанию также будет сканировать подкаталоги. Чтобы сканировать только один каталог, а не его дочерние элементы, вы можете просто передать вывод ls -l
через grep
Вместо того, чтобы использовать find
и xargs
.
Когда ты бежишь chmod
помните, что вы можете указать -v
параметр, чтобы он перечислял, что он делает и не меняется во время выполнения операции - это может быть полезно, чтобы убедиться, что вы дали правильную команду.
Следующая команда должна предоставить вам числовые разрешения для всех файлов в указанном каталоге.
stat -c "%a %n" /path/to/files/*
Посмотрите, работает ли для вас первый ответ: Просмотр разрешений @stackoverflow