GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible de créer un script pour enregistrer et restaurer les autorisations ?

Le moyen le plus simple consiste à utiliser les outils ACL, même si vous n'utilisez pas réellement les ACL. Appelez simplement getfacl -R . >saved-permissions pour sauvegarder les permissions d'une arborescence de répertoires et setfacl --restore=saved-permissions pour les restaurer.

Sinon, un moyen de sauvegarder les autorisations est avec find -printf . (Recherche GNU requise, mais c'est ce que vous avez sous Linux.)

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

Vous obtenez un fichier contenant des enregistrements séparés par un caractère nul; chaque enregistrement contient les autorisations numériques, le nom d'utilisateur, le nom de groupe et le nom de fichier pour un fichier. Pour restaurer, faites une boucle sur les enregistrements et appelez chmod et chown . Le -depth option à find est au cas où vous voudriez rendre certains répertoires non inscriptibles (vous devez d'abord gérer leur contenu).

Vous pouvez restaurer les autorisations avec cet extrait bash dérivé d'un extrait fourni par Daniel Alder :

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

Vous pouvez utiliser le script awk suivant pour activer le find sortie dans du code shell pour restaurer les autorisations.

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

Installez d'abord le package ACL :

sudo apt-get install acl

Stocker de manière récursive autorisations et propriété du fichier :

getfacl -R yourDirectory > permissions.acl

Restaurer (par rapport au chemin actuel) :

setfacl --restore=permissions.acl

Linux
  1. Comment obtenir la propre adresse IP et l'enregistrer dans une variable dans un script shell ?

  2. Est-il possible de créer et d'utiliser des menus dans Vim (basé sur un terminal) ?

  3. Enregistrer et restaurer vos onglets de terminal ?

  4. Comment créer et restaurer des sauvegardes dans cPanel

  5. Est-il possible de créer des dossiers de manière récursive à l'aide d'un script shell ?

Comment créer et exécuter un script Shell dans CentOS 8

Comment créer et restaurer des instantanés de machine virtuelle dans VirtualBox

Comment créer des modèles dans LibreOffice pour gagner du temps et augmenter la productivité

Bash Beginner Series #1 :Créez et exécutez votre premier script shell Bash

Créer une image d'un serveur et restaurer un serveur à partir d'une image enregistrée

Comment créer et exécuter un script shell dans Ubuntu 22.04