Dieser Klontrick in Linux erspart Ihnen Kopfschmerzen bei der Berechtigungsverwaltung

Schnellzugriffe

  • Das Chaos und der Stress fehlerhafter Berechtigungen
  • Das Problem?
  • Eigentümerschaft klonen mit chown
  • Berechtigungen klonen mit chmod
  • Alles klonen mit setfacl
  • Ordnung ins Chaos bringen

Wichtige Erkenntnisse

  • Linux-Dateiberechtigungen sind für die Kontrolle entscheidend und das Klonen korrekt konfigurierter Dateieinstellungen kann durcheinander geratene Berechtigungen schnell beheben.
  • Einfache Fehler mit chown- und chmod-Befehlen können Chaos verursachen, aber das Klonen von chown und chmod kann Dateiberechtigungen effizient wiederherstellen.
  • Sie können dieselbe Klontechnik auch mit Zugriffskontrolllisten verwenden.

Die Dateiberechtigungen von Linux steuern, wer was mit Dateien und Verzeichnissen tun kann. Wenn sie jedoch durcheinander geraten, kann ihre Wiederherstellung ein Albtraum sein. Das Klonen der Berechtigungen einer Arbeitsdatei ist die schnellste Lösung.

Das Chaos und der Stress durch schlechte Berechtigungen

Unter Linux haben Dateien und Verzeichnisse eine Reihe von Berechtigungen. Sie steuern, welche Aktionen ausgeführt werden können und von wem.

Berechtigungen erlauben oder verweigern jemandem das Lesen aus einer Datei, das Schreiben in sie oder das Ausführen einer Datei. Bei einer Datei bedeutet Ausführen, ein Skript oder eine Anwendung auszuführen. Bei einem Verzeichnis bedeutet Ausführen, mit dem Befehl cd in dieses Verzeichnis zu wechseln.

Berechtigungen wirken sich direkt auf den ordnungsgemäßen Betrieb und die Sicherheit Ihres Computers aus. Schlecht eingestellte Berechtigungen können Chaos verursachen und Ihre Daten praktisch außer Reichweite bringen.

Dateien haben auch Besitzer. Neue Benutzer werden bei ihrer Erstellung einer Gruppe mit demselben Namen wie ihr Benutzeranmeldename hinzugefügt. Standardmäßig besitzt ein Benutzer alle von ihm erstellten Dateien, und die Gruppe der Datei wird auf die Gruppe des Benutzers eingestellt. Eine Datei oder ein Verzeichnis hat drei Berechtigungssätze. Einen für den Besitzer, einen für Mitglieder der Gruppe der Datei und einen dritten für alle, die nicht in die ersten beiden Kategorien fallen.

Beim Entpacken alter Archivdateien oder beim Wiederherstellen von Informationen aus Backups, die auf anderen Computern erstellt wurden, können zwar die Dateien übrig bleiben, aber die Berechtigungen sind völlig inkorrekt. In eine ähnliche Situation können Sie geraten, wenn Sie Fehler mit den Befehlen chown und chmod machen. Der Befehl chmod legt die Dateiberechtigungen fest, und der Befehl chown legt den Dateibesitz fest.

Das manuelle Beheben dieser Art von Fehlerzuständen ist mühsam. Die Lösung besteht darin, mit chown und chmod die Einstellungen einer korrekt konfigurierten Datei zu klonen.

Das Problem?

Ich brauchte einige Dateien aus einer Archivdatei, die mir zugeschickt worden war. Ich habe das Archiv entpackt, aber das extrahierte Verzeichnis hatte ein Vorhängeschloss-Symbol.

Ich musste das Root-Passwort eingeben, um das Verzeichnis zu betreten. Ein Doppelklick allein reichte nicht aus.

Eine Überprüfung mit ls (erneut mit sudo) zeigt das Problem.

sudo ls -hld project

Der Root-Benutzer besitzt das Verzeichnis und niemand hat Lese- oder Schreibberechtigungen.

Die Dateien und Unterverzeichnisse gehören ebenfalls Root und die Berechtigungen sind ein Mischmasch aus verschiedenen falschen Einstellungen.

sudo ls -hl project

Lassen Sie uns zuerst die Eigentumsfragen klären.

Eigentumsrechte beim Klonen mit chown

Ich möchte den Eigentümer der Datei auf mich festlegen. Mein Benutzername ist Dave. Wir verwenden den Befehl chown und kopieren die Eigentümereinstellungen aus einem Verzeichnis, das richtig festgelegt ist.

sudo chown -R –reference=/home/dave/Downloads project

Der –referenceDie Option teilt chown mit, aus welchem ​​Verzeichnis die Berechtigungseinstellungen kopiert werden sollen. Die Option -R (rekursiv) weist chown an, die neuen Berechtigungen für das Zielverzeichnis sowie für alle Dateien und Unterverzeichnisse festzulegen.

Wir können mit ls überprüfen, ob der Benutzer Dave jetzt der Eigentümer der Dateien und Verzeichnisse ist. Wir müssen noch sudo verwenden, da wir die Berechtigungen noch nicht geklärt haben.

sudo ls -hl project

Nachdem wir nun den Besitz der Dateien und Verzeichnisse zurückgefordert haben, können wir die Berechtigungen korrigieren.

Berechtigungen mit chmod klonen

Dieser Vorgang ist dem mit chown sehr ähnlich, aber wir müssen bei den Berechtigungen etwas vorsichtiger sein.

Das Festlegen der Eigentümerschaft ist einfach. Alle Dateien und Verzeichnisse gehören demselben Benutzer, sodass sie alle dieselben Einstellungen erhalten. Für Verzeichnisse und ausführbare Dateien muss jedoch die Berechtigung x (Ausführen) festgelegt sein. Für normale Dateien ist diese Berechtigung nicht erforderlich. Daher müssen wir mehrere Berechtigungssätze erstellen und sie auf die entsprechenden Dateien anwenden. Dies können wir in drei Schritten tun.

Wir verwenden zunächst eine normale Datei als Referenzdatei. Dadurch werden die Berechtigungen so festgelegt, als ob alles eine normale Datei wäre. Dann verwenden wir eine ausführbare Referenzdatei, um die Berechtigungen für alle Shell-Skripte festzulegen. Schließlich verwenden wir chmod auf herkömmliche Weise, um die Ausführungsberechtigung für die Verzeichnisse festzulegen.

Unser erster Schritt besteht darin, die normale Datei als Referenzdatei zu verwenden:

sudo chmod -R –reference=/home/dave/Downloads/existing.dat project

Wir können ls verwenden, um zu sehen, welche Auswirkungen dies hatte.

sudo ls -hld project

sudo ls -hl project

Die Berechtigungen aus der Referenzdatei (Lesen und Schreiben für den Eigentümer und die Gruppe und schreibgeschützt für andere) wurden auf alle Dateien und Verzeichnisse repliziert.

Wir müssen die Ausführungsberechtigung für alle Skripte wiederherstellen. Wir haben ein Referenzskript, aus dem wir die Berechtigungen übernehmen können.

sudo chmod -R –reference=/home/dave/Downloads/existing.sh project/*.sh

Wir verwenden das Platzhalterzeichen „*“, da es mit jeder Skriptdatei im gesamten Verzeichnisbaum zurechtkommt, unabhängig von ihrem Namen.

Wir können sehen, dass die Ausführungsberechtigung für die Datei „appveyor.sh“ festgelegt wurde.

sudo ls -hl project

Das Wiederherstellen der Ausführungsberechtigung für die Verzeichnisse erfordert einen cleveren Trick. Wir können kein Platzhalterzeichen verwenden, da dies wahrscheinlich auch auf Dateien zutrifft. Wir verwenden also das Berechtigungsflag „X“ in Großbuchstaben. Dies bedeutet: „Setzen Sie das Ausführbarkeitsbit nur, wenn das Ziel eine Datei ist, bei der das Ausführbarkeitsbit bereits gesetzt ist, oder wenn es sich um ein Verzeichnis handelt.“

Wir können dies verwenden, da in unseren ausführbaren Skripten das Ausführbarkeitsbit bereits gesetzt ist und sie es beibehalten. In allen Verzeichnissen im Verzeichnisbaum ist das Ausführbarkeitsbit ebenfalls gesetzt.

sudo chmod -R +X project

Jetzt ist alles wieder in einem funktionierenden Zustand mit den richtigen Eigentümern, den richtigen Berechtigungen und Verzeichnissen, in die Sie per cd wechseln können.

ls -hl project

Alles klonen mit setfacl

Wenn Sie Zugriffskontrolllisten (ACLs) verwenden, können Sie die Einstellungen einer korrekt eingestellten Datei trotzdem in andere Dateien klonen. ACLs geben Ihnen eine präzise Kontrolle und ermöglichen Ihnen beispielsweise, Berechtigungen für jeden Benutzer einzeln festzulegen, wobei verschiedene Benutzer unterschiedliche Berechtigungen haben.

Um die Einstellungen zu klonen, müssen wir die Einstellungen aus unserer korrekt konfigurierten Datei an den Befehl zum Festlegen der Berechtigungen weiterleiten.

Mit dem Befehl getfacl können wir die ACL-Einstellungen der vorhandenen Datei anzeigen.

getfacl existing.file

Der Eigentümer Dave hat Lese-, Schreib- und Ausführungsberechtigungen. Benutzer Mary hat Lese- und Schreibberechtigungen. Um diese Einstellungen in die Dateien im Projektverzeichnis zu klonen, verwenden wir den Befehl setfacl. Wir leiten die Ausgabe des Befehls getfacl weiter, um sicherzustellen, dass wir die gewünschten ACL-Einstellungen erhalten. Die Dateien, auf die wir die ACL-Einstellungen anwenden möchten, befinden sich in einem Verzeichnis namens „source“.

getfacl /home/dave/Downloads/existing.file | setfacl –set-file=- source

Die Option –set-file nimmt normalerweise den Namen einer Datei an, aus der Sie die Einstellungen kopieren möchten. Die Verwendung eines einzelnen Bindestrichs “-” als Dateiname weist setfacl an, stdin als Datenquelle zu verwenden. Dies werden unsere weitergeleiteten Daten sein.

Durch Betrachten einer beliebigen Datei im Quellverzeichnis wird überprüft, ob die kopierten ACL-Einstellungen angewendet wurden.

getfacl terminal.c

Aus dem Chaos kommt Ordnung

Der Anblick des Chaos, das einen manchmal nach dem Herunterladen, Wiederherstellen oder Entpacken von Dateien erwartet, kann einem das Herz brechen. Aber es ist ganz einfach, mit nur wenigen Befehlen in der richtigen Reihenfolge Ordnung in das Chaos zu bringen.


Posted

in

by

Tags:

Comments

Leave a Reply