Arquivos Chmod para dar recursivamente ao grupo as mesmas permissões que o usuário

15

Existe um comando unix para conceder ao grupo as mesmas permissões que o usuário atualmente possui arquivo a arquivo recursivamente para uma árvore de diretórios? Ou seja, se um arquivo é gravável pelo usuário, ele deve se tornar gravável em grupo, caso contrário, não deve ser gravável em grupo e assim por diante.


fonte

Respostas:

24

Parabéns ao jamessan por nos mostrar g = u. No meu sistema, isso parece funcionar:

chmod -R g=u dir
Joey Adams
fonte
1
Isso também altera as permissões dos diretórios. A pergunta original especificou os arquivos.
jamessan
@jamessan, quais diretórios são.
Mike Graham
@ Mike, apenas porque * nix permite tratar praticamente tudo como um arquivo, não significa que os diretórios sejam realmente arquivos. Mesmo se alguém admitir que é o mesmo, há uma diferença funcional distinta entre alterar as permissões de todos os arquivos em uma árvore de diretórios e alterar as permissões de todos os arquivos e diretórios em uma árvore de diretórios.
jamessan
Mais uma vez, existe uma solução direta para o meu problema. Por que não estou surpreso?
rzetterberg
9
find dir -type f -exec chmod g=u '{}' \+
jamessan
fonte
0

Não consigo pensar em uma maneira fácil de fazer isso com os comandos existentes. Talvez um script como este ajude:

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

Além disso, mantenha em mente que alguns perms para usuários podem não se aplicar a grupos, e vice-versa.

ℝaphink
fonte
0

Não sei se esse comando existe, mas usando o find e invocando-o algumas vezes, você pode conseguir
o que está tentando fazer, por exemplo

Por exemplo:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;

O comando acima percorre o diretório atual ".", Localiza todos os arquivos que têm permissão de gravação para
o usuário, mas nenhuma permissão de gravação para o grupo e altera a permissão para que seja gravável em grupo.

Da mesma forma, você usa a variante acima da chamada para alterar as permissões de arquivo para o modo de leitura e execução do grupo.

Sateesh
fonte