GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, ein Skript zum Speichern und Wiederherstellen von Berechtigungen zu erstellen?

Der einfachste Weg ist die Verwendung von ACL-Tools, auch wenn Sie keine ACLs verwenden. Rufen Sie einfach getfacl -R . >saved-permissions an um die Berechtigungen eines Verzeichnisbaums zu sichern und setfacl --restore=saved-permissions um sie wiederherzustellen.

Andernfalls können Sie Berechtigungen mit find -printf sichern . (GNU find erforderlich, aber das haben Sie unter Linux.)

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

Sie erhalten eine Datei, die Datensätze enthält, die durch ein Nullzeichen getrennt sind. Jeder Datensatz enthält die numerischen Berechtigungen, den Benutzernamen, den Gruppennamen und den Dateinamen für eine Datei. Zum Wiederherstellen durchlaufen Sie die Aufzeichnungen und rufen Sie chmod auf und chown . Die -depth Option auf find ist für den Fall, dass Sie einige Verzeichnisse unschreibbar machen wollen (Sie müssen zuerst deren Inhalt bearbeiten).

Sie können die Berechtigungen mit diesem Bash-Snippet wiederherstellen, das von einem von Daniel Alder beigesteuerten Snippet abgeleitet ist:

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

Sie können das folgende awk-Skript verwenden, um die find umzudrehen Ausgabe in einen Shell-Code, um die Berechtigungen wiederherzustellen.

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

Installieren Sie zuerst das ACL-Paket:

sudo apt-get install acl

Rekursiv speichern Berechtigungen und Eigentum an der Datei:

getfacl -R yourDirectory > permissions.acl

Wiederherstellen (relativ zum aktuellen Pfad):

setfacl --restore=permissions.acl

Linux
  1. Wie erhalte ich die eigene IP-Adresse und speichere sie in einer Variablen in einem Shell-Skript?

  2. Ist es möglich, Menüs in (terminalbasiertem) Vim zu erstellen und zu verwenden?

  3. So erstellen und wiederherstellen Sie ein Backup in Plesk

  4. Ist es möglich, Ordner mit Shell-Skript rekursiv zu erstellen?

  5. Terminal beim Neustart speichern und wiederherstellen

So erstellen und führen Sie ein Shell-Skript in CentOS 8 aus

So erstellen und wiederherstellen Sie VM-Snapshots in VirtualBox

So erstellen Sie Vorlagen in LibreOffice, um Zeit zu sparen und die Produktivität zu steigern

Bash-Anfängerserie Nr. 1:Erstellen Sie Ihr erstes Bash-Shell-Skript und führen Sie es aus

Erstellen Sie ein Image eines Servers und stellen Sie einen Server aus einem gespeicherten Image wieder her

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus