Назад | Перейти на главную страницу

Как проверить права доступа к файлам через SSH

Для начала, я новичок в этом, поэтому, пожалуйста, простите меня, если это слишком элементарно или я слишком не информирован.

Я хотел бы проверить все файлы в определенном каталоге на моем 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