Существует ли команда unix, чтобы дать группе те же права, что и у пользователя в настоящее время, для каждого файла рекурсивно для дерева каталогов? Т.е. если файл доступен для записи пользователем, он должен стать доступным для записи в группе, в противном случае он не должен быть доступен для записи в группе и так далее.
4 ответа
Слава Jamessan за то, что показал нам g = u. В моей системе это работает:
chmod -R g=u dir
find dir -type f -exec chmod g=u '{}' \+
Я не могу придумать простой способ сделать это с помощью существующих команд. Может быть, такой скрипт поможет:
#!/bin/bash
DIR="$1"
find "$DIR" -ls | while read a b perm c d e f g h i file; do
uperm=${perm:1:3}
uperm=$(echo "$uperm" | tr -d '-')
chmod g=$uperm "$file"
done
Кроме того, имейте в виду, что некоторые привилегии для пользователей могут не относиться к группам, и наоборот.
Я не знаю, существует ли такая команда, но используя find и вызывая ее несколько раз, вы можете добиться
что вы пытаетесь сделать, например
Например:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;
Приведенная выше команда пересекает текущий каталог ".", Находит все файлы, которые имеют разрешение на запись для
пользователь, но не имеет разрешения на запись для группы и изменяет там разрешение на запись в группу.
Аналогичным образом вы используете приведенный выше вариант для изменения прав доступа к файлу для режима чтения и выполнения для группы.