Los archivos Chmod recursivamente otorgan al grupo los mismos permisos que el usuario

15

¿Existe un comando de Unix para otorgarle al grupo los mismos permisos que el usuario tiene actualmente, archivo por archivo, de forma recursiva para un árbol de directorios? Es decir, si un archivo es escribible por el usuario, debería convertirse en un grupo de escritura, de lo contrario no debería ser un grupo de escritura, etc.


fuente

Respuestas:

24

Felicitaciones a jamessan por mostrarnos g = u. En mi sistema, esto parece funcionar:

chmod -R g=u dir
Joey Adams
fuente
1
Eso también cambia los permisos de los directorios. La pregunta original especificaba archivos.
jamessan
@jamessan, qué directorios son.
Mike Graham el
@ Mike, solo porque * nix te permite tratar casi todo como un archivo, no significa que los directorios realmente sean archivos. Incluso si se admitiera que son iguales, existe una diferencia funcional clara entre cambiar los permisos de todos los archivos en un árbol de directorios y cambiar los permisos de todos los archivos y directorios en un árbol de directorios.
jamessan
Una vez más, hay una solución directa a mi problema. ¿Por qué no estoy sorprendido?
rzetterberg
9
find dir -type f -exec chmod g=u '{}' \+
jamessan
fuente
0

No puedo pensar en una manera fácil de hacerlo con los comandos existentes. Tal vez un script como este ayudaría:

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

Además, tenga en cuenta que algunos permisos para los usuarios pueden no aplicarse a los grupos, y viceversa.

Phaphink
fuente
0

No sé si existe tal comando, pero haciendo uso de buscar e invocarlo varias veces puedes lograr
lo que estás tratando de hacer, por ejemplo

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

El comando anterior atraviesa el directorio actual ".", Encuentra todos los archivos que tienen permiso de escritura para
el usuario pero no tiene permisos de escritura para el grupo y cambia su permiso para que el grupo pueda escribir.

De manera similar, utiliza la invocación de la variante anterior para cambiar los permisos de archivo para el modo de lectura y ejecución para el grupo.

sateesh
fuente