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

UID/GID nur eines Threads in Linux ändern

Der Linux-spezifische setfsuid() / setfsgid() sind pro Thread und nicht pro Prozess. Sie sind speziell für diesen Anwendungsfall (Dateiserver) konzipiert.

Beachten Sie, dass access() prüft weiterhin den Zugriff mit der echten UID und GID - das ist Absicht (es soll die Frage beantworten "sollte der Benutzer, der diese Binärdatei ausgeführt hat, den gegebenen Zugriff auf diese Datei haben" ). Für die setfsuid() / setfsgid() In diesem Fall sollten Sie die angeforderte Operation einfach ausprobieren und an dieser Stelle einen Fehler aufgrund fehlender Berechtigungen feststellen.


Um die UID nur für einen Thread zu ändern, müssen Sie den Systemaufruf direkt verwenden:syscall(SYS_setresuid, ...); Die libc-Funktion setresuid() wird es für alle Threads synchronisieren (unter Verwendung eines Signals, das es an alle Threads sendet)!


Linux
  1. Linux – Erzwingt das Dateisystem unter Linux eine Serialisierung, was bedeutet, dass zu einem bestimmten Zeitpunkt nur eine Änderung am Dateisystem tatsächlich erfolgt?

  2. Ändern Sie den Hostnamen eines Linux-Servers

  3. So ändern Sie UID oder GID sicher in Linux

  4. So beschränken Sie den su-Zugriff auf einen Benutzer nur durch PAM in Linux

  5. gleichzeitiger zugriff auf datei linux

So ändern Sie einen Hostnamen unter Redhat 7 Linux

Cd-Befehl in Linux (Verzeichnis wechseln)

Was ist UID in Linux, wie man es findet und ändert

So ändern Sie den Benutzer unter Linux

So ändern Sie die IP-Adresse unter Linux

Wie benenne ich einen Thread in Linux?