Ich habe die Berechtigungen einer Datei ( chmod g+w testfile
) geändert und es ls -l testfile
gibt:
-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile
Ich habe dann einen Benutzer zu dieser Gruppe hinzugefügt (" / etc / group " hat eine user1:x:1000:user2
Zeile), kann diese Datei jedoch nicht als Benutzer2 bearbeiten. Warum ist das so?
permissions
users
group
Tshepang
quelle
quelle
Antworten:
user2
muss sich abmelden und wieder anmelden. Gruppenberechtigungen funktionieren folgendermaßen:/etc/passwd
, sowie in allen Gruppen, in denen Ihr Benutzer erwähnt wird/etc/group
. (Genauer gesagt, daspw_gid
Feld ingetpw(your_uid)
sowie alle Gruppen , von denen Ihre Benutzer ein explizites Mitglied . Jenseits/etc/passwd
und/etc/group
die Informationen von anderen Arten von Benutzerdatenbanken wie NIS oder LDAP kommen können.) Die Hauptgruppe der Prozess des wird effektive Gruppen - ID und die anderen Gruppen werden ihre zusätzlichen Gruppen-IDs .Wie Sie sehen, wird Ihre Änderung der Gruppenmitgliedschaft des Benutzers erst wirksam, wenn sich der Benutzer anmeldet. Für die Ausführung von Prozessen ist es zu spät. Der Benutzer muss sich also abmelden und wieder anmelden. Wenn dies zu viel Mühe bereitet, kann sich der Benutzer in einer separaten Sitzung anmelden (z. B. auf einer anderen Konsole oder mit
ssh localhost
).Unter der Haube kann ein Prozess immer nur Berechtigungen verlieren (Benutzer-IDs, Gruppen-IDs, Funktionen). Der Kernel startet den
init
Prozess (den ersten Prozess nach dem Start) als root und jeder Prozess wird letztendlich von diesem Prozess abgeleitet¹. Derlogin
Prozess (odersshd
der Teil Ihres Desktop-Managers, der Sie anmeldet) wird weiterhin als root ausgeführt. Ein Teil seiner Aufgabe besteht darin, die Root-Berechtigungen zu löschen und zu den richtigen Benutzern und Gruppen zu wechseln.Es gibt eine einzige Ausnahme: Ausführen eines setuid- oder setgid- Programms. Dieses Programm erhält zusätzliche Berechtigungen: Es kann auswählen, ob es unter verschiedenen Teilmengen der Mitgliedschaften des übergeordneten Prozesses sowie der zusätzlichen Mitgliedschaft in dem Benutzer oder der Gruppe, der bzw. der die ausführbare Datei setxid gehört, agieren soll. Insbesondere hat ein setuid-Root-Programm Root-Berechtigungen und kann daher alles² ausführen. So mögen
su
undsudo
können Programme ihre Arbeit machen.¹ Es gibt gelegentlich Prozesse, die nicht von init (initrd, udev) abgeleitet sind, aber das Prinzip ist dasselbe: Beginnen Sie als root und verlieren Sie mit der Zeit die Berechtigungen.
² Sperren von mehrstufigen Sicherheitsframeworks wie SELinux.
quelle
Möglicherweise müssen Sie Benutzer2 abmelden und wieder anmelden (oder versuchen Sie einfach, ssh'in, um eine neue Anmeldesitzung zu erstellen). Überprüfen Sie die Ausgabe von
id --groups
, um die numerischen Gruppen-IDs für einen Benutzer anzuzeigen.quelle
sudo su $(whoami)
Im Wesentlichen die gleiche Problemumgehung wie
ssh localhost
, aber verwendbar, ohne dass ein SSH-Server installiert ist.Solange du Wurzel hast. Wenn Sie jedoch gerade eine neue Gruppe hinzugefügt und Berechtigungen geändert haben, ist dies wahrscheinlich der Fall.
quelle
Es gibt einen Fall, in dem die Benutzerabmeldung nicht hilft, wenn Sie die ControlMaster-Anweisung ssh für den Host verwenden. Wenn Sie Ihr Konto zu einer Gruppe hinzufügen, sich über dieselbe ControlMaster-Verbindung abmelden und erneut anmelden, wird in der Sitzung weiterhin keine neue Mitgliedschaft angezeigt. Sie müssen die Master-Verbindung mit Gewalt unterbrechen
ssh -O exit hostname
bevor Sie sich wieder anmelden.
quelle