GNU/Linux >> Znalost Linux >  >> Linux

Je možné vytvořit skript pro uložení a obnovení oprávnění?

Nejjednodušší způsob je použít nástroje ACL, i když ve skutečnosti nepoužíváte ACL. Jednoduše zavolejte na getfacl -R . >saved-permissions k zálohování oprávnění stromu adresářů a setfacl --restore=saved-permissions k jejich obnovení.

Jinak lze oprávnění zálohovat pomocí find -printf . (Je vyžadováno hledání GNU, ale to je to, co máte na Linuxu.)

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

Získáte soubor obsahující záznamy oddělené znakem null; každý záznam obsahuje číselná oprávnění, uživatelské jméno, název skupiny a název souboru pro jeden soubor. Chcete-li obnovit, projděte záznamy a zavolejte chmod a chown . -depth možnost na find je v případě, že chcete, aby některé adresáře byly nezapisovatelné (nejprve musíte zpracovat jejich obsah).

Oprávnění můžete obnovit pomocí tohoto úryvku bash odvozeného z úryvku od Daniela Aldera:

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

K otočení find můžete použít následující skript awk výstup do nějakého kódu shellu pro obnovení oprávnění.

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

Nejprve nainstalujte balíček ACL:

sudo apt-get install acl

Rekurzivně ukládat oprávnění a vlastnictví k souboru:

getfacl -R yourDirectory > permissions.acl

Obnovit (vzhledem k aktuální cestě):

setfacl --restore=permissions.acl

Linux
  1. Jak získat vlastní IP adresu a uložit ji do proměnné ve skriptu Shell?

  2. Je možné vytvářet a používat nabídky v (terminálovém) Vimu?

  3. Jak vytvářet a obnovovat zálohy v cPanel

  1. Vytvořte nového uživatele a udělte oprávnění v MySQL

  2. Je možné rekurzivně vytvářet složky pomocí skriptu shell?

  3. Je možný smíšený skript Shell a python?

  1. Uložit a obnovit své karty terminálu?

  2. Uložte a obnovte terminál při restartu

  3. Je možné uložit obsah virtuální konzole Linux a scrollback do souboru?