Полномочия группы набора как полномочия владельца

Можно сделать это визуально с комбинацией. К сожалению, это - инструмент GUI, но если Вы просто хотите сделать это однажды, и на относительно маленьком файле, это должно быть прекрасным:

Изображение ниже является выводом meld a b:

enter image description here

3
18.03.2015, 01:38
3 ответа

Есть довольно простой ответ (хотя я не знаю, работает ли он на всех версиях * NIX); Просто делайте

chmod g=u *

I.E., Установите G разрешения RUP, равные разрешениям U .

Это задокументировано в Chmod (1) :

Формат символического режима [[ UgOA ...] [[[[ + - = ] [ Перми ...] ...], где Перми - это либо ноль или более букв из множества RWXXST , или одна буква из множества UGO . ...

буквы RWXXST Выберите .... Вместо одного или нескольких из этих букв вы можете указать ровно одну из букв UGO : Разрешения, предоставленные пользователю, которые принадлежат файлу ( U ), Разрешения, предоставленные другим пользователям которые являются членами группы файлов ( G ), а также разрешения, предоставленные Пользователям, которые находятся в ни одной из двух предыдущих категорий ( o ).

1
27.01.2020, 21:23

О (недавнее для SED -Z ) Система GNU, вы можете сделать что-то вроде:

find . ! -type l -printf '%m:%p\0' |
  sed -Ez '/^.?(.)\1.:/d;s/(.)(.)(.):/\1\1\2\x0/' |
  xargs -r0n2 echo chmod

(удалить ECHO при выполнении результат).

Обратите внимание, что он обращается только к R , W , x бит не специальных.

Если вы не хотите, чтобы это рекурсивно:

find . -mindepth 1 -maxdepth 1 ! -type l -printf '%m:%p\0' |
  sed -Ez '/^.?(.)\1.:/d;s/(.)(.)(.):/\1\1\2\x0/' |
  xargs -r0n2 echo chmod
1
27.01.2020, 21:23

Попробуйте:

for file in $(find .); do
   perm=$(stat -c "%a" ${file});
   echo chmod ${perm:0:1}${perm:0:1}${perm:2:1} ${file};
done

Не забудьте удалить ECHO .

Улучшена версия:

find . -exec sh -c 'for file do
   perm=$(stat -Lc "%a" "$file")
   echo chmod "${perm:0:1}${perm:0:1}${perm:2:1}" "$file"
done' sh {} +

Как в Ответ Стефана Чазелас ,

  • Использование - Mindepth 1 Во избежание обработки . .
  • Используйте -максеп 1 , чтобы избежать рекурсиона (ввод подкаталогов).
  • Использование ! -тип л , чтобы избежать обработки символических ссылок (Хотя этот ответ будет обрабатывать символические ссылки в порядке).

Обратите внимание, что эта команда не будет работать правильно для файлов которые имеют любой из битов режима высокого порядка (SETUID, SETGID и TYCHY).

1
27.01.2020, 21:23

Теги

Похожие вопросы