¿Hay un comando o indicador para clonar la propiedad y los permisos del usuario / grupo en un archivo de otro archivo? ¿Para hacer que los permisos y la propiedad sean exactamente los de otro archivo?
shell
permissions
files
chown
usuario394
fuente
fuente

--referenceparámetro dechmodychownantes :).En cualquier unix con utilidades GNU, como Linux (no integrado) o Cygwin, puede usar
chmod --referenceychown --reference.Si su sistema tiene ACL , pruebe los comandos de ACL
getfaclysetfacl. Estos comandos difieren un poco de un sistema a otro, pero en muchos puede usargetfacl other_file | setfacl -bnM - file_to_changepara copiar los permisos. Esto no copia la propiedad; puede hacerlo analizando cuidadosamentels -l other_file, suponiendo que no tiene nombres de usuario o grupo que contengan espacios en blanco.fuente
Hice un comando bash basado en la respuesta de Matteo :)
Código:
chmod $( stat -f '%p' "$1" ) "${@:2}"Uso:
cp-permissions <from> <to>...fuente
${*:2}? ¡Nunca vuelvas a hacer eso! Eso fallará si alguno de los nombres de archivo contiene espacio (o pestañas). Utilizar"${@:2}". Además, use en"$1"lugar de solo$1.chmod "$(stat -c '%a' "$fromfile")" tofileen GNU Coreutils, pero también podría usarlo--referenceen ese caso, ya que lastatutilidad CLI no es POSIX, incluso dice pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.htm,ls -leso no lo cortará: "La salida de ls (con la opción -l y opciones relacionadas) contiene información que lógicamente podría ser utilizada por utilidades como chmod y touch para restaurar los archivos a un estado conocido. Sin embargo, esta información se presenta en un formato que esas utilidades no pueden usar directamente. se traduce fácilmente a un formato que puede usarse "Si no está utilizando un sistema con chmod / chown de GNU (que admite la
--referenceopción), podría intentar analizar la salida dels -lAquí un pequeño script para
chmod(si tiene una vista que admite expresiones regulares extendidas, podrían escribirse de una manera mucho más legible ...)ACTUALIZACIÓN :
Esto es aún más fácil usando
stat:fuente
ls -lsalida, podría analizar lastatsalida.statsintaxis * BSD aquí. Suchmod $(stat ...)comando no funcionará porque%psolo genera demasiada información para * BSDchmod, use%Lppara generar solo los bits u / g / o. Se requeriría algo un poco más elaborado para los bits fijos / setuid / setgid.Quería agregar un ajuste al guión de Matteo . Se debe usar un bucle for para validar que los archivos existen antes de ejecutar realmente el comando chmod en ellos. Esto permitirá que el error del script salga con más gracia.
Creo que esta es la mejor opción porque se puede usar para todos los sistemas operativos * nix, como Solaris, Linux, etc.
Descubrí que en una de mis máquinas Solaris 10
statno se encontraba. Sin embargo, eso podría ser un problema con mi configuración.fuente
Esto funciona para mi:
cp -p --attributes-only <from> <to>fuente