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

Linux – Unix-Berechtigungen und Dateitypen verstehen?

Ich habe nie wirklich verstanden, wie chmod funktioniert bis heute gearbeitet. Ich habe ein Tutorial befolgt, das mir eine große Sache erklärt hat.

Ich habe zum Beispiel gelesen, dass Sie drei verschiedene Berechtigungsgruppen haben:

  • Eigentümer (u )
  • Gruppe (g )
  • alle (o )

Basierend auf diesen drei Gruppen weiß ich jetzt Folgendes:

  • Wenn die Datei dem Benutzer gehört, bestimmen die Benutzerberechtigungen den Zugriff.
  • Wenn die Gruppe der Datei mit der Gruppe des Benutzers identisch ist, bestimmt die Gruppenberechtigung den Zugriff.
  • Wenn der Benutzer nicht der Eigentümer der Datei ist und nicht in der Gruppe ist, wird die andere Berechtigung verwendet.

Ich habe auch erfahren, dass Sie die folgenden Berechtigungen haben:

  • lesen (r )
  • schreiben (w )
  • Ausführen (x )

Ich habe ein Verzeichnis erstellt, um mein neu erworbenes Wissen zu testen:

mkdir test

Dann habe ich einige Tests gemacht:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

Nachdem ich einige Zeit herumgealbert habe, glaube ich, dass ich chmod endlich verstanden habe und wie Sie die Berechtigung mit diesem Befehl festlegen.

Aber...

Ich habe noch ein paar Fragen:

  • Was bedeutet das d am Start stehen für?
  • Wie lautet der Name und die Verwendung des enthaltenden Slots und welche anderen Werte kann er enthalten?
  • Wie kann ich sie aktivieren und deaktivieren?
  • Was ist der Wert für dieses d ? (Da Sie nur 7=4+2+1 7=4+2+1 7=4+2+1 haben)
  • Warum wird manchmal 0777 verwendet? statt 777 Berechtigungen festlegen?

Aber da ich nicht mehrere Fragen stellen sollte, werde ich versuchen, sie in einer Frage zu stellen.

Was bedeutet in UNIX-basierten Systemen wie allen Linux-Distributionen bezüglich der Berechtigungen der erste Teil (d ) stehen und wozu dient dieser Teil der Berechtigungen?

Akzeptierte Antwort:

Ich beantworte Ihre Fragen in drei Teilen:Dateitypen, Berechtigungen und Anwendungsfälle für die verschiedenen Formen von chmod .

Dateitypen

Das erste Zeichen in ls -l Ausgabe repräsentiert den Dateityp; d bedeutet, dass es sich um ein Verzeichnis handelt. Es kann nicht gesetzt oder nicht gesetzt werden, es hängt davon ab, wie die Datei erstellt wurde. Die vollständige Liste der Dateitypen finden Sie in der ls-Dokumentation; diejenigen, denen Sie wahrscheinlich begegnen werden, sind

  • - :„normale“ Datei, erstellt mit jedem Programm, das eine Datei schreiben kann
  • b :Spezielle Blockdateien, typischerweise Platten- oder Partitionsgeräte, können mit mknod erstellt werden
  • c :zeichenspezifische Datei, kann auch mit mknod erstellt werden (siehe /dev für Beispiele)
  • d :Verzeichnis, kann mit mkdir erstellt werden
  • l :Symbolischer Link, kann mit ln -s erstellt werden
  • p :Named Pipe, kann mit mkfifo erstellt werden
  • s :Socket, kann mit nc -U erstellt werden
  • D :door, erstellt von einigen Serverprozessen auf Solaris/openindiana.

Berechtigungen

chmod 0777 wird verwendet, um alle Berechtigungen in einem chmod festzulegen Ausführung, anstatt Änderungen mit u+ zu kombinieren usw. Jede der vier Ziffern ist ein Oktalwert, der einen Satz von Berechtigungen darstellt:

  • suid , sgid und „klebrig“ (siehe unten)
  • Benutzerberechtigungen
  • Gruppenberechtigungen
  • "andere" Berechtigungen

Der Oktalwert wird als Summe der Berechtigungen berechnet:

  • "lesen" ist 4
  • „Schreiben“ ist 2
  • "Ausführen" ist 1

Für die erste Ziffer:

  • suid ist 4; Binärdateien mit diesem gesetzten Bit werden als ihr Eigentümer ausgeführt (üblicherweise root )
  • sgid ist 2; Binärdateien mit diesem Bit-Set laufen als ihre Besitzergruppe (dies wurde für Spiele verwendet, damit Highscores geteilt werden konnten, aber es ist oft ein Sicherheitsrisiko, wenn es mit Schwachstellen in den Spielen kombiniert wird), und Dateien, die in Verzeichnissen mit diesem Bit-Set erstellt wurden, gehören zu den standardmäßig die Eigentümergruppe des Verzeichnisses (dies ist praktisch, um freigegebene Ordner zu erstellen)
  • „sticky“ (oder „eingeschränkte Löschung“) ist 1; Dateien in Verzeichnissen mit diesem gesetzten Bit können nur von ihrem Besitzer, dem Besitzer des Verzeichnisses oder root gelöscht werden (siehe /tmp für ein allgemeines Beispiel dafür).
Siehe auch:Linux – das richtige Verfahren, um MDM durch LightDM auf Linux Mint zu ersetzen?

Siehe chmod Manpage für Details. Beachten Sie, dass ich bei all dem andere Sicherheitsfunktionen ignoriere, die die Berechtigungen von Benutzern für Dateien ändern können (SELinux, Datei-ACLs …).

Spezielle Bits werden je nach Dateityp (normale Datei oder Verzeichnis) und dem zugrunde liegenden System unterschiedlich behandelt. (Dies wird im chmod erwähnt Manpage.) Auf dem System, mit dem ich das getestet habe (mit coreutils 8.23 auf einem ext4 Dateisystem, auf dem Linux-Kernel 3.16.7-ckt2 ausgeführt wird), ist das Verhalten wie folgt. Für eine Datei werden die speziellen Bits immer gelöscht, sofern sie nicht explizit gesetzt sind, also chmod 0777 entspricht chmod 777 , und beide Befehle löschen die speziellen Bits und geben jedem die vollen Berechtigungen für die Datei. Bei einem Verzeichnis werden die speziellen Bits niemals vollständig gelöscht, wenn die vierstellige numerische Form verwendet wird, also chmod 0777 entspricht auch chmod 777 aber es ist irreführend, da einige der speziellen Bits unverändert bleiben. (Eine frühere Version dieser Antwort hat dies falsch verstanden.) Um spezielle Bits in Verzeichnissen zu löschen, müssen Sie u-s verwenden , g-s und/oder o-t explizit oder geben Sie einen negativen numerischen Wert an, also chmod -7000 löscht alle speziellen Bits in einem Verzeichnis.

In ls -l Ausgabe, suid , sgid und „sticky“ erscheinen anstelle des x Eintrag:suid ist s oder S anstelle des x des Benutzers , sgid ist s oder S anstelle des x der Gruppe , und „sticky“ ist t oder T anstelle des x anderer . Ein Kleinbuchstabe zeigt an, dass sowohl das spezielle Bit als auch das ausführbare Bit gesetzt sind; ein Großbuchstabe zeigt an, dass nur das spezielle Bit gesetzt ist.

Die verschiedenen Formen von chmod

Aufgrund des oben beschriebenen Verhaltens werden die vollen vier Ziffern in chmod verwendet kann verwirrend sein (zumindest stellt sich heraus, dass ich verwirrt war). Es ist nützlich, wenn Sie sowohl spezielle Bits als auch Berechtigungsbits setzen möchten; Andernfalls werden die Bits gelöscht, wenn Sie eine Datei bearbeiten, und beibehalten, wenn Sie ein Verzeichnis bearbeiten. Also chmod 2750 stellt sicher, dass Sie mindestens sgid erhalten und genau u=rwx,g=rx,o=; aber chmod 0750 löscht nicht unbedingt die speziellen Bits.

Numerische Modi anstelle von Textbefehlen verwenden ([ugo][=+-][rwxXst] ) ist wohl eher Gewohnheitssache und Ziel des Befehls. Sobald Sie sich an die Verwendung numerischer Modi gewöhnt haben, ist es oft einfacher, einfach den vollständigen Modus auf diese Weise anzugeben. und es ist nützlich, sich Berechtigungen mit numerischen Modi vorstellen zu können, da viele andere Befehle sie verwenden können (install , mknod …).

Einige Textvarianten können sich als nützlich erweisen:Wenn Sie einfach sicherstellen möchten, dass eine Datei von jedem ausgeführt werden kann, chmod a+x wird dies tun, unabhängig von den anderen Berechtigungen. Ebenso +X fügt die Ausführungsberechtigung nur hinzu, wenn eine der Ausführungsberechtigungen bereits festgelegt ist oder die Datei ein Verzeichnis ist; Dies kann praktisch sein, um Berechtigungen global wiederherzustellen, ohne dass Dateien im Vergleich zu Verzeichnissen in Sonderfällen behandelt werden müssen. Also chmod -R ug=rX,u+w,o= entspricht der Anwendung von chmod -R 750 zu allen Verzeichnissen und ausführbaren Dateien und chmod -R 640 zu allen anderen Dateien.


Linux
  1. So kopieren Sie Dateiberechtigungen und Eigentumsrechte in eine andere Datei in Linux

  2. Dateiberechtigungen und Speichern?

  3. Wie aktiviere ich die Indizierung von Apache-Dateien und -Verzeichnissen in Linux oder UNIX?

  4. UNIX / Linux:Leitfaden für Anfänger zu Datei- und Verzeichnisberechtigungen (umask, chmod, lesen, schreiben, ausführen)

  5. Linux-Interviewfragen – Grundlegende Datei- und Verzeichnisberechtigungen

Grundlegendes zu Linux-Dateiberechtigungen

Chmod-Befehl in Linux (Dateiberechtigungen)

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Grundlegendes zu Linux-Dateiberechtigungen

AWK-Befehl unter Linux/Unix

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen