Кто-то испортил / usr / local / permissions, так что никто другой не может получить к нему доступ. Теперь я хотел бы дублировать разрешения пользователей в разрешениях групп, поскольку chmod g + rx -R / usr / local небезопасно. Как это сделать?
Используя linux (ubuntu 10.04).
Вы можете скопировать разрешения:
chmod -R g=u /usr/local
Это скопирует разрешения пользователя в разрешения группы.
cd /usr/local
chmod -R g-rwx .
find . -perm -u+r -exec chmod g+r {} \;
find . -perm -u+w -exec chmod g+w {} \;
find . -perm -u+x -exec chmod g+x {} \;
Это сначала очищает права группы для всех файлов. Затем он должен выполнить поиск вниз, по очереди исследуя каждый файл на предмет каждого из трех битов прав пользователя (r, w, x). Для каждого разрешения, когда он находит файл, в котором установлен этот бит (без учета других битов прав пользователя), он устанавливает эквивалентный групповой бит для этого файла.
я сильно Советую вам сначала протестировать это в случайном подкаталоге, желательно с несколькими файлами, которые вы создаете сами. Но это работает в моих сопоставимых тестах.
Я тоже нашел это решение на основе Perl в сети.
find . | perl -ne 'chomp; $a = (stat $_)[2] & 07777; $a = ($a & 07707) | (($a >> 3) & 070); chmod($a, $_)'
но
chmod g=u
упомянутые в другом месте, я думаю, лучше