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

Linux-Berechtigungen 101

Linux-Berechtigungen zu verstehen und zu steuern, welche Benutzer Zugriff auf Dateien haben, ist eine grundlegende Fähigkeit für die Systemadministration.

Dieser Artikel behandelt standardmäßige Linux-Dateisystemberechtigungen, geht weiter auf spezielle Berechtigungen ein und endet mit einer Erläuterung der Standardberechtigungen mit umask .

Die Ausgabe des ls-Befehls verstehen

Bevor wir darüber sprechen können, wie Berechtigungen geändert werden, müssen wir wissen, wie sie angezeigt werden. Die ls Befehl mit dem langen Listenargument (-l ) gibt uns viele Informationen über eine Datei.

$ ls -lAh
total 20K
-rwxr-xr--+ 1 root root    0 Mar  4 19:39 file1
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file10
-rwxrwxr--+ 1 root root    0 Mar  4 19:39 file2
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file8
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file9
drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir

Um zu verstehen, was das bedeutet, brechen wir die Ausgabe bezüglich der Berechtigungen in einzelne Abschnitte auf. Es wird einfacher, jeden Abschnitt einzeln zu referenzieren.

Sehen Sie sich jede Komponente der letzten Zeile in der obigen Ausgabe an:

drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir
Abschnitt 1 Abschnitt 2 Abschnitt 3 Abschnitt 4 Abschnitt 5 Abschnitt 6 Abschnitt 7
d rwx rwx rwx  . root root

Abschnitt 1 (links) zeigt, um welche Art von Datei es sich handelt.

d Verzeichnis
- Normale Datei
l Ein weicher Link

Die Infoseite für ls hat eine vollständige Auflistung der verschiedenen Dateitypen.

Jede Datei hat drei Zugriffsmodi:

  • der Besitzer
  • die Gruppe
  • alle anderen

Die Abschnitte 2, 3 und 4 beziehen sich auf die Benutzer-, Gruppen- und "andere Benutzer"-Berechtigungen. Und jeder Abschnitt kann eine Kombination aus r enthalten (lesen), w (schreiben) und x (ausführbare) Berechtigungen.

Jeder der Berechtigungen ist außerdem ein numerischer Wert zugeordnet, was wichtig ist, wenn es um die oktale Darstellung von Berechtigungen geht.

Berechtigung Oktalwert
Lesen 4
Schreiben 2
Ausführen 1

Abschnitt 5 beschreibt alle alternativen Zugriffsmethoden wie SELinux oder File Access Control List (FACL).

Methode Zeichen
Keine andere Methode  -
SELinux  .
FACLs  +
Jede Kombination von Methoden  +

Abschnitte 6 und 7 sind die Namen des Eigentümers bzw. der Gruppe.

Chown und chmod verwenden

Der chown-Befehl

Der Chown Der Befehl (Eigentümer ändern) wird verwendet, um den Benutzer- und Gruppenbesitz einer Datei zu ändern.

So ändern Sie sowohl den Benutzer- als auch den Gruppenbesitz der Datei foo zu root , können wir diese Befehle verwenden:

$ chown root:root foo
$ chown root: foo

Ausführen des Befehls mit dem Benutzer gefolgt von einem Doppelpunkt (: ) legt sowohl den Benutzer- als auch den Gruppenbesitz fest.

Um nur den Benutzerbesitz der Datei foo festzulegen zum Stamm Benutzer, geben Sie ein:

$ chown root foo

Um nur den Gruppenbesitz der Datei foo zu ändern , der Gruppe einen Doppelpunkt voranstellen:

$ chown :root foo

Der chmod-Befehl

Die chmod Der Befehl (Änderungsmodus) steuert die Dateiberechtigungen für den Besitzer, die Gruppe und alle anderen Benutzer, die weder der Besitzer noch Teil der mit der Datei verknüpften Gruppe sind.

Die chmod Der Befehl kann Berechtigungen sowohl in oktaler (z. B. 755, 644 usw.) als auch in symbolischer (z. B. u+rwx, g-rwx, o=rw) Formatierung festlegen.

Die Oktalschreibweise weist 4 "Punkte" zum Lesen zu , 2 zum Schreiben , und 1 zum Ausführen . Wenn wir dem Benutzer Lesen zuweisen möchten Berechtigungen weisen wir dem ersten Slot 4 zu, aber wenn wir write hinzufügen möchten Berechtigungen müssen wir 2 hinzufügen. Wenn wir execute hinzufügen möchten , dann fügen wir 1 hinzu. Wir tun dies für jeden Berechtigungstyp:Eigentümer, Gruppe und andere.

Zum Beispiel, wenn wir read zuweisen möchten , schreiben , und Ausführen an den Besitzer der Datei, sondern nur gelesen und ausführen für Gruppenmitglieder und alle anderen Benutzer würden wir 755 in oktaler Formatierung verwenden. Das sind alle Berechtigungsbits für den Besitzer (4+2+1), aber nur eine 4 und 1 für die Gruppe und andere (4+1).

Die Aufschlüsselung dafür ist:4+2+1=7; 4+1=5; und 4+1=5.

Wenn wir read zuweisen wollten und schreiben an den Eigentümer der Datei, sondern nur gelesen für Mitglieder der Gruppe und alle anderen Benutzer könnten wir chmod verwenden wie folgt:

$ chmod 644 foo_file

In den folgenden Beispielen verwenden wir die symbolische Notation in verschiedenen Gruppierungen. Beachten Sie die Buchstaben u , g , und o repräsentieren Benutzer , Gruppe , und andere . Wir verwenden u , g , und o in Verbindung mit + , - , oder = um Berechtigungsbits hinzuzufügen, zu entfernen oder zu setzen.

Um die Ausführung hinzuzufügen Bit zum Besitzberechtigungssatz:

$ chmod u+x foo_file

Um lesen zu entfernen , schreiben , und Ausführen von Mitgliedern der Gruppe:

$ chmod g-rwx foo_file

Um den Besitz für alle anderen Benutzer auf Lesen zu setzen und schreiben :

$ chmod o=rw

Die speziellen Bits:UID setzen, GID setzen und Sticky-Bits

Zusätzlich zu den Standardberechtigungen gibt es ein paar spezielle Berechtigungsbits, die einige nützliche Vorteile haben.

Benutzer-ID festlegen (suid)

Wenn suid für eine Datei festgelegt ist, wird eine Operation als Eigentümer der Datei ausgeführt, nicht als Benutzer, der die Datei ausführt. Ein gutes Beispiel dafür ist passwd Befehl. Es braucht die suid Bit gesetzt werden, damit das Ändern eines Passworts mit Root-Rechten läuft.

$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

Ein Beispiel für das Setzen von suid bit wäre:

$ chmod u+s /bin/foo_file_name

Gruppen-ID festlegen (sgid)

Der sgid bit ähnelt der suid Bit in dem Sinne, dass die Operationen unter dem Gruppenbesitz des Verzeichnisses durchgeführt werden, anstatt dass der Benutzer den Befehl ausführt.

Ein Beispiel für die Verwendung von sgid Dies wäre der Fall, wenn mehrere Benutzer im selben Verzeichnis arbeiten und jede im Verzeichnis erstellte Datei dieselben Gruppenberechtigungen haben muss. Das folgende Beispiel erstellt ein Verzeichnis namens collab_dir , setzt die sgid bit und ändert den Gruppenbesitz in webdev .

$ mkdir collab_dir
$ chmod g+s collab_dir
$ chown :webdev collab_dir

Jetzt hat jede im Verzeichnis erstellte Datei den Gruppenbesitz von webdev anstelle des Benutzers, der die Datei erstellt hat.

$ cd collab_dir
$ touch file-sgid
$ ls -lah file-sgid
-rw-r--r--. 1 root webdev 0 Jun 12 06:04 file-sgid

Das "klebrige" Bit

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Das Sticky-Bit zeigt an, dass nur der Eigentümer einer Datei die Datei löschen kann, auch wenn die Gruppenberechtigungen dies sonst zulassen würden. Diese Einstellung ist normalerweise in einem gemeinsamen oder kollaborativen Verzeichnis wie /tmp am sinnvollsten . Im Beispiel unten ist das t im Ausführen Spalte alle anderen Berechtigungssatz zeigt an, dass das Sticky-Bit angewendet wurde.

$ ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jun 12 06:07 /tmp/

Denken Sie daran, dass dies niemanden daran hindert, die Datei zu bearbeiten. es hält sie nur davon ab, den Inhalt eines Verzeichnisses zu löschen.

Das Sticky-Bit setzen wir mit:

$ chmod o+t foo_dir

Versuchen Sie selbst, das Sticky-Bit für ein Verzeichnis zu setzen und geben Sie ihm vollständige Gruppenberechtigungen, damit mehrere Benutzer das Verzeichnis lesen, schreiben und ausführen können, da sie sich in derselben Gruppe befinden.

Erstellen Sie von dort aus Dateien als jeder Benutzer und versuchen Sie dann, sie als der andere zu löschen.

Wenn alles richtig konfiguriert ist, sollte ein Benutzer nicht in der Lage sein, Benutzer von dem anderen Benutzer zu löschen.

Beachten Sie, dass jedes dieser Bits auch im Oktalformat mit SUID=4, SGID=2 und Sticky=1 gesetzt werden kann.

$ chmod 4744
$ chmod 2644
$ chmod 1755

Groß- oder Kleinschreibung?

Wenn Sie die Spezialbits setzen und ein großes S sehen oder T Anstelle von Kleinbuchstaben (wie wir bis zu diesem Punkt gesehen haben) liegt das daran, dass das zugrunde liegende Ausführungsbit nicht vorhanden ist. Zur Veranschaulichung erstellt das folgende Beispiel eine Datei mit gesetztem Sticky-Bit. Wir können dann das Ausführungsbit hinzufügen/entfernen, um die Falländerung zu demonstrieren.

$ touch file cap-ST-demo
$ chmod 1755 cap-ST-demo
$ ls -l cap-ST-demo
-rwxr-xr-t. 1 root root 0 Jun 12 06:16 cap-ST-demo

$ chmod o-x cap-X-demo
$ ls -l cap-X-demo
-rwxr-xr-T. 1 root root 0 Jun 12 06:16 cap-ST-demo

Bedingtes Setzen des Ausführungsbits

Bis zu diesem Punkt haben wir die execute gesetzt Bit mit einem kleinen x , die es ohne Fragen einstellt. Wir haben eine andere Möglichkeit:Verwenden Sie ein großes X anstelle von Kleinbuchstaben wird execute gesetzt Bit nur dann, wenn es bereits irgendwo in der Berechtigungsgruppe vorhanden ist. Dies kann ein schwierig zu erklärendes Konzept sein, aber die folgende Demo wird helfen, es zu veranschaulichen. Beachten Sie hier, dass nach dem Versuch, die Datei execute hinzuzufügen Bit zu den Gruppenprivilegien, es wird nicht angewendet.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+X cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file

In diesem ähnlichen Beispiel fügen wir das Ausführungsbit zuerst zu den Gruppenberechtigungen hinzu, indem wir den Kleinbuchstaben x verwenden und verwenden Sie dann den Großbuchstaben X um Berechtigungen für alle anderen Benutzer hinzuzufügen. Diesmal das große X setzt die Berechtigungen.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ ls -l cap-X-file
-rw-r-xr--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ chmod o+X cap-X-file
ls -l cap-X-file
-rw-r-xr-x. 1 root root 0 Jun 12 06:31 cap-X-file

Umask verstehen

Die umask maskiert (oder "blockiert") Bits aus dem Standard-Berechtigungssatz, um Berechtigungen für eine Datei oder ein Verzeichnis zu definieren. Zum Beispiel eine 2 in der umask Ausgabe zeigt an, dass es das Schreiben blockiert Bit aus einer Datei, zumindest standardmäßig.

Mit der umask Befehl ohne Argumente erlaubt es uns, die aktuelle umask zu sehen Einstellung. Es gibt vier Spalten:Die erste ist für das spezielle suid-, sgid- oder sticky-Bit reserviert, und die restlichen drei repräsentieren den Eigentümer, die Gruppe und andere Berechtigungen.

$ umask
0022

Um zu verstehen, was das bedeutet, können wir umask ausführen mit einem -S (wie unten gezeigt), um das Ergebnis der Maskierung der Bits zu erhalten. Zum Beispiel wegen der 2 Wert in der dritten Spalte, der write Bit wird von der Gruppe und anderen Abschnitten maskiert; nur lesen und ausführen kann für diese zugewiesen werden.

$ umask -S
u=rwx,g=rx,o=rx

Um zu sehen, was der Standard-Berechtigungssatz für Dateien und Verzeichnisse ist, stellen wir unsere umask ein auf alle Nullen. Das bedeutet, dass wir beim Erstellen einer Datei keine Bits maskieren.

$ umask 000
$ umask -S
u=rwx,g=rwx,o=rwx

$ touch file-umask-000
$ ls -l file-umask-000
-rw-rw-rw-. 1 root root 0 Jul 17 22:03 file-umask-000

Wenn wir jetzt eine Datei erstellen, sehen wir, dass die Standardberechtigungen Lesen sind (4) und schreiben (2) für alle Abschnitte, was 666 in oktaler Darstellung entsprechen würde.

Wir können dasselbe für ein Verzeichnis tun und sehen, dass seine Standardberechtigungen 777 sind. Wir brauchen die Ausführung bit auf Verzeichnisse, damit wir sie durchqueren können.

$ mkdir dir-umask-000
$ ls -ld dir-umask-000
drwxrwxrwx. 2 root root 4096 Jul 17 22:03 dir-umask-000/

Fazit

Es gibt viele andere Möglichkeiten, wie ein Administrator den Zugriff auf Dateien auf einem System steuern kann. Diese Berechtigungen sind grundlegend für Linux und wir können auf diesen grundlegenden Aspekten aufbauen. Wenn Ihre Arbeit Sie zu FACLs oder SELinux führt, werden Sie sehen, dass sie ebenfalls auf diesen ersten Regeln des Dateizugriffs aufbauen.


Linux
  1. Was ist Umask unter Linux

  2. Linux-Labor:SysAdmin 101

  3. Linux-Berechtigungen ändern

  4. Überprüfen Sie die Linux-Dateiberechtigungen mit ls

  5. Wie installiere ich VIM unter Linux, wenn ich keine Root-Berechtigungen habe?

Standardpasswort für Kali Linux

Grundlegendes zu Linux-Dateiberechtigungen

Umask-Befehl unter Linux

Chmod-Befehl in Linux (Dateiberechtigungen)

So ändern Sie Berechtigungen in Linux

Chmod-Befehl unter Linux