Установка глобальных прав просмотра для подкаталогов (rx), но при этом файлы недоступны всем, кроме владельца и членов группы

Установка глобальных прав просмотра для подкаталогов (rx), но при этом файлы недоступны всем, кроме владельца и членов группы

Обычно у меня есть каталог, который я хочу, чтобы все пользователи могли просматривать, но файлы в нем должны быть нечитаемыми и неисполняемыми.

Я вижу несколько связанных вопросов, которые не совсем соответствуют тому, что я хочу:

  • Этот вопросиспользует umask. Не применяется, так как эти файлы уже созданы.

  • Этот вопросиспользует ACL. Я хочу использовать здесь разрешения UNIX.

Обычно я использую findкоманду, но я знаю, что у нее есть некоторые слабости. Я опубликую ее как потенциальный ответ немного позже вместе с тем, почему я думаю, что может быть лучший способ.

решение1

Я обычно использую следующее:

find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555

Однако это не учитывает исполняемые файлы. Я думал сделать что-то вроде этого для файлов:

find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx

Но это все еще две команды, и я не уверен, что это лучший способ. Может быть, у кого-то есть лучшее предложение.

решение2

Ну, просто не устанавливайте одинаковые права доступа для каталога и файлов в нем:

$ chmod g+rx directory/
$ chmod g= directory/*

Здесь члены группы могут входить в каталог и просматривать его, но они не смогут читать находящиеся в нем файлы.

Редактировать: относительно вашего нового названия я бы предложил:

$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *

решение3

Для уже созданных каталогов и файлов:

find /start_directory -type d -exec chmod 755 {} \;

find /start_directory -type f -exec chmod 660 {} \;

Если ваши пользователи должны иметь возможность создавать новые файлы и/или подкаталоги, пожалуйста, предоставьте более подробную информацию, поскольку решение зависит от конкретных требований.

Связанный контент