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

Ich habe einen Benutzer zu einer Gruppe hinzugefügt, aber Gruppenberechtigungen für Dateien haben immer noch keine Wirkung?

Ich habe die Berechtigungen einer Datei geändert (chmod g+w testfile ) und Ausführen von ls -l testfile ergibt:

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

Ich habe dieser Gruppe dann einen Benutzer hinzugefügt („/etc/group “ hat user1:x:1000:user2 line), aber ich kann diese Datei nicht als user2 bearbeiten. Warum ist das so?

Akzeptierte Antwort:

user2 muss sich ab- und wieder anmelden. Gruppenberechtigungen funktionieren folgendermaßen:

  • Wenn Sie sich anmelden, erhalten Ihre Prozesse eine Gruppenmitgliedschaft in Ihrer Hauptgruppe, die in /etc/passwd erwähnt wird , sowie alle Gruppen, in denen Ihr Benutzer in /etc/group erwähnt wird . (Genauer gesagt, die pw_gid Feld in getpw(your_uid) , sowie alle Gruppen, in denen Ihr Benutzer ausdrücklich Mitglied ist. Jenseits von /etc/passwd und /etc/group , die Informationen können aus anderen Arten von Benutzerdatenbanken wie NIS oder LDAP stammen.) Die Hauptgruppe wird zur effektiven Gruppen-ID des Prozesses und die anderen Gruppen werden zu seinen zusätzlichen Gruppen-IDs.
  • Wenn ein Prozess eine Operation ausführt, die die Mitgliedschaft in einer bestimmten Gruppe erfordert, wie z. B. der Zugriff auf eine Datei, muss diese Gruppe entweder die effektive Gruppen-ID oder eine der zusätzlichen Gruppen-IDs des Prozesses sein.

Wie Sie sehen, wird Ihre Änderung an der Gruppenmitgliedschaft des Benutzers erst wirksam, wenn sich der Benutzer anmeldet. Für laufende Prozesse ist es zu spät. Der Benutzer muss sich also ab- und wieder anmelden. Wenn das zu umständlich ist, kann sich der Benutzer bei einer separaten Sitzung anmelden (z. B. auf einer anderen Konsole oder mit ssh localhost). ).

Unter der Haube kann ein Prozess immer nur verlieren Privilegien (Benutzer-IDs, Gruppen-IDs, Fähigkeiten). Der Kernel startet die init Prozess (der erste Prozess nach dem Booten), der als Root ausgeführt wird, und jeder Prozess ist letztendlich von diesem Prozess abstammt¹. Die login process (oder sshd , oder der Teil Ihres Desktop-Managers, der Sie anmeldet) immer noch als Root ausgeführt wird. Ein Teil seiner Aufgabe besteht darin, die Root-Rechte aufzugeben und zu den richtigen Benutzern und Gruppen zu wechseln.

Es gibt eine einzige Ausnahme:das Ausführen eines setuid- oder setgid-Programms. Dieses Programm erhält zusätzliche Berechtigungen:Es kann wählen, unter verschiedenen Teilmengen der Mitgliedschaften des übergeordneten Prozesses zu agieren, plus der zusätzlichen Mitgliedschaft in dem Benutzer oder der Gruppe, der die ausführbare setxid-Datei gehört. Insbesondere ein setuid-Root-Programm hat Root-Berechtigungen und kann daher alles tun²; so funktionieren Programme wie su und sudo ihren Job machen können.

Verwandte Themen:Wie deaktiviere ich die Funktion „Einfügen mit mittlerer Maustaste“ in allen Programmen?

¹ Es gibt gelegentlich Prozesse, die nicht von init abgeleitet sind (initrd, udev), aber das Prinzip ist das gleiche:Starte als root und verliere mit der Zeit die Privilegien.
² Sperren von mehrstufigen Sicherheitsframeworks wie SELinux.


Linux
  1. So fügen Sie Benutzer zu einer Gruppe in Linux hinzu

  2. Vorrang von Benutzer- und Gruppeneigentümern bei Dateiberechtigungen?

  3. Wenn ich Berechtigungen für eine Tar-Datei ändere, gilt das für die darin enthaltenen Dateien?

  4. So erzwingen Sie Benutzer-/Gruppenbesitz von Dateien auf einer Samba-Freigabe

  5. Linux, warum kann ich nicht schreiben, obwohl ich Gruppenrechte habe?

So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu

Dateien werden gelöscht, aber der Speicherplatz ist noch voll

/etc/passwd zeigt Benutzer in einer Gruppe an, /etc/group jedoch nicht

So gewähren Sie Nicht-Root-Benutzern Zugriff auf Gerätedateien

Wie kann ich den Speicher gelöschter, aber noch verwendeter Dateien unter Linux zurückfordern?

Welche Berechtigungen sollten meine Website-Dateien/Ordner auf einem Linux-Webserver haben?