GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile creare uno script per salvare e ripristinare i permessi?

Il modo più semplice è utilizzare gli strumenti ACL, anche se in realtà non si utilizzano gli ACL. Basta chiamare getfacl -R . >saved-permissions per eseguire il backup dei permessi di un albero di directory e setfacl --restore=saved-permissions per ripristinarli.

Altrimenti, un modo per eseguire il backup dei permessi è con find -printf . (GNU find è richiesto, ma è quello che hai su Linux.)

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

Ottieni un file contenente record separati da un carattere nullo; ogni record contiene le autorizzazioni numeriche, il nome utente, il nome del gruppo e il nome del file per un file. Per ripristinare, esegui il loop sui record e chiama chmod e chown . Il -depth opzione a find è nel caso tu voglia rendere alcune directory non scrivibili (devi prima occuparti del loro contenuto).

Puoi ripristinare i permessi con questo frammento bash derivato da un frammento fornito da Daniel Alder:

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

Puoi utilizzare il seguente script awk per trasformare il find output in un codice shell per ripristinare i permessi.

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

Installa prima il pacchetto ACL:

sudo apt-get install acl

Memorizza in modo ricorsivo autorizzazioni e proprietà del file:

getfacl -R yourDirectory > permissions.acl

Ripristina (rispetto al percorso corrente):

setfacl --restore=permissions.acl

Linux
  1. È possibile creare e utilizzare menu in Vim (basato su terminale)?

  2. Salvare e ripristinare le schede del terminale?

  3. Come creare e ripristinare backup in cPanel

  4. È possibile creare cartelle in modo ricorsivo usando lo script di shell?

  5. Salva e ripristina il terminale al riavvio

Come creare ed eseguire uno script di shell in CentOS 8

Come creare e ripristinare snapshot VM in VirtualBox

Come creare modelli in LibreOffice per risparmiare tempo e aumentare la produttività

Bash Beginner Series n. 1:crea ed esegui il tuo primo script Bash Shell

Crea un'immagine di un server e ripristina un server da un'immagine salvata

Come creare ed eseguire uno script di shell in Ubuntu 22.04