GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible crear un script para guardar y restaurar permisos?

La forma más fácil es usar las herramientas de ACL, incluso si en realidad no usa ACL. Simplemente llame a getfacl -R . >saved-permissions para hacer una copia de seguridad de los permisos de un árbol de directorios y setfacl --restore=saved-permissions para restaurarlos.

De lo contrario, una forma de respaldar los permisos es con find -printf . (Se requiere búsqueda de GNU, pero eso es lo que tiene en Linux).

find -depth -printf '%m:%u:%g:%p\0' >saved-permissions

Obtiene un archivo que contiene registros separados por un carácter nulo; cada registro contiene los permisos numéricos, el nombre de usuario, el nombre de grupo y el nombre de archivo para un archivo. Para restaurar, recorra los registros y llame a chmod y chown . El -depth opción a find es en caso de que desee hacer que algunos directorios no se puedan escribir (primero debe manejar su contenido).

Puede restaurar los permisos con este fragmento de bash derivado de un fragmento aportado por Daniel Alder:

while IFS=: read -r -d '' mod user group file; do
  chown -- "$user:$group" "$file"
  chmod "$mod" "$file"
done <saved-permissions

Puede usar el siguiente script awk para convertir el find salida en algún código de shell para restaurar los permisos.

find -depth -printf '%m:%u:%g:%p\0' |
awk -v RS='\0' -F: '
BEGIN {
    print "#!/bin/sh";
    print "set -e";
    q = "\047";
}
{
    gsub(q, q q "\\" q);
    f = $0;
    sub(/^[^:]*:[^:]*:[^:]*:/, "", f);
    print "chown --", q $2 ":" $3 q, q f q;
    print "chmod", $1, q f q;
}' > restore-permissions.sh

Primero instale el paquete ACL:

sudo apt-get install acl

almacenar recursivamente permisos y propiedad del archivo:

getfacl -R yourDirectory > permissions.acl

Restaurar (relativo a la ruta actual):

setfacl --restore=permissions.acl

Linux
  1. ¿Cómo obtener la dirección IP propia y guardarla en una variable en un script de Shell?

  2. ¿Es posible crear y usar menús en Vim (basado en terminal)?

  3. Cómo crear y restaurar copias de seguridad en cPanel

  4. Cómo crear y restaurar una copia de seguridad en Plesk

  5. ¿Es posible guardar el contenido de la consola virtual de Linux y retroceder en un archivo?

Cómo crear y ejecutar un script de Shell en CentOS 8

Cómo crear y restaurar instantáneas de máquinas virtuales en VirtualBox

Cómo crear plantillas en LibreOffice para ahorrar tiempo y aumentar la productividad

Bash Beginner Series #1:Cree y ejecute su primer script de Bash Shell

Cree una imagen de un servidor y restaure un servidor a partir de una imagen guardada

Cómo crear y ejecutar un script de shell en Ubuntu 22.04