Copie los permisos de propietario de un archivo para agrupar

25

¿Cómo puedo copiar los permisos de usuario / propietario de un archivo a sus permisos de grupo?

Por ejemplo, si los permisos son 755, quiero que se conviertan en 775.

Aclaración: 755 -> 775 123 -> 113 abc -> aac

Bonificación si puedo hacer esto de forma recursiva para todos los archivos en un directorio.

(Es decir, para cada archivo, los permisos del propietario se copian en los permisos del grupo. Cada archivo puede tener permisos diferentes).

Annan
fuente
No estoy seguro de entenderlo. ¿Desea cambiar el permiso en el directorio / archivos para que el permiso de grupo sea como el propietario? Si es así, solo juega con chmod. Puedo mostrarle un ejemplo más explícito en mi respuesta si lo desea.
Anarko_Bizounours
En su respuesta, cambia todos los archivos a 775. ¿Qué sucede si uno de los archivos tiene originalmente el permiso 123? Luego debe cambiarse a 113 y no a 775. El permiso que utilicé en la pregunta (755) es solo un ejemplo, el permiso real puede ser cualquier cosa. Quiero hacer esto programáticamente.
Annan
el número después de chmod es solo un permiso numérico. Si haces un ls -l y obtienes 452 como permiso, entonces solo a chmod 442 / you_directory /. Todo se explica (bastante bien) en la página de Wikipedia que vinculé a mi respuesta.
Anarko_Bizounours
esta parece ser una pregunta duplicada de serverfault.com/questions/241082/…
ShoeLace

Respuestas:

54

puede usar g=upara hacer que los permisos de grupo sean los mismos que los permisos de usuario

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

y recursivamente

chmod -R g=u *

o para alguna especificación de archivo

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

La página de manual de chmod es tu amigo.

user9517 es compatible con GoFundMonica
fuente
buena manera de hacerlo! Olvidé este truco cada vez que xD
Anarko_Bizounours
¡Nunca escuché de este truco! Útil uno.
skinp
Ese g=utruco me ahorró horas de administración tediosa. Ahí va un +1 ;-)
Edurne Pascual
Tenía un montón de archivos propiedad de mi usuario que quería compartir con todos los usuarios. así lo hicechmod -R ag=u ${path_to_directory}
Trevor Boyd Smith
2

Como la gente ha dicho, cambiar los permisos de los archivos puede ser peligroso. Con gran poder viene una gran responsabilidad, y todo eso shizas. Esta es mi respuesta:

archivo / usr / bin / otog:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

Ejemplo de uso:

find . -exec otog {} \;

Utiliza stat para obtener permisos numéricos, usa chmod para cambiar los permisos.

PD: ¡Mira la respuesta de Iain para una mejor manera de hacer esto!

Annan
fuente
1
¿No debería ser $ {p: 0: 1} $ {p: 0: 1} $ {p: 2: 1}?
minaev
Sí, tienes razón. Extrañamente funcionó a mi manera también.
Annan
Alguien por favor explique el voto negativo?
Annan
Yo no, pero me gustaría compensar. Esta es una buena solución que funciona.
minaev
1
Yo diría que es más seguro usar comandos peligrosos en los scripts que manualmente. En scripts bien probados, eso es :). Por otro lado, chmodestá lejos de ser un comando muy, muy peligroso. Comparado con rm, quiero decir, rsync --deleteo con algunos otros.
minaev
1

En primer lugar, debe enumerar su derecho.

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

para traducir el resultado en un permiso numérico, use esto: R = 4, W = 2, X = 1.

Entonces, en este archivo 2, el permiso es 755.

Después de obtener su derecho, debe usar el comando chmod para cambiar el derecho de la manera que desee:

chmod 775 /your_directory/

Este comando solo cambiará el derecho en el directorio, pero no en el archivo dentro.

Si quieres cambiar el derecho dentro también, entonces ejecuta este comando:

chmod 775 /your_directory/ -fR

El -fR forzará la recursividad. (úsela solo si está seguro del derecho que desea aplicar y el archivo dentro del directorio).

Si solo desea cambiar el derecho en el archivo1, entonces:

chmod 775 /your_directory/file1

¡Y así se desmoronan las galletas!

/! \ Tenga cuidado, el mal uso de este comando puede destruir todos los permisos de su sistema operativo y provocar un mal funcionamiento del mismo. /! \

ps: mira allí para obtener más información sobre chmod.

Espero que esto te ayudará.

Anarko_Bizounours
fuente
He agregado algunas aclaraciones a la pregunta. Es posible que los archivos no tengan los mismos permisos de propietario, por lo tanto, si se va a utilizar chmod, ¿debe haber una forma de extraer los permisos de propietario antes de pasarlo a chmod?
Annan
es complicado, pero el comando ls -l debe darle el permiso, pero estará en esta forma -rw-rw-r--. ¡El problema es que NO DEBE usar un script para trabajar con chmod! primero debe obtener todos los permisos del archivo. Entonces chmod para tener el buen derecho para el grupo. Editaré mi respuesta para mostrar un ejemplo.
Anarko_Bizounours