12

Существует ли команда unix, чтобы дать группе те же права, что и у пользователя в настоящее время, для каждого файла рекурсивно для дерева каталогов? Т.е. если файл доступен для записи пользователем, он должен стать доступным для записи в группе, в противном случае он не должен быть доступен для записи в группе и так далее.

4 ответа4

21

Слава Jamessan за то, что показал нам g = u. В моей системе это работает:

chmod -R g=u dir
9
find dir -type f -exec chmod g=u '{}' \+
0

Я не могу придумать простой способ сделать это с помощью существующих команд. Может быть, такой скрипт поможет:

#!/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

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

0

Я не знаю, существует ли такая команда, но используя find и вызывая ее несколько раз, вы можете добиться
что вы пытаетесь сделать, например

Например:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;

Приведенная выше команда пересекает текущий каталог ".", Находит все файлы, которые имеют разрешение на запись для
пользователь, но не имеет разрешения на запись для группы и изменяет там разрешение на запись в группу.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .