Обычно у меня есть каталог, который я хочу, чтобы все пользователи могли просматривать, но файлы в нем должны быть нечитаемыми и неисполняемыми.
Я вижу несколько связанных вопросов, которые не совсем соответствуют тому, что я хочу:
Этот вопросиспользует
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 {} \;
Если ваши пользователи должны иметь возможность создавать новые файлы и/или подкаталоги, пожалуйста, предоставьте более подробную информацию, поскольку решение зависит от конкретных требований.