Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

1

22.08.2012, 23:30

Linux/Unix rechte eines laufenden prozesses

Ich wollte mal fragen ob ihr ne idee habt wie ich an die rechte eines prozesses komme, der gerade ausgeführt wird komme.
Angenommen es läuft ein cat mit der PID 1337 wie komme ich dann an die User ID?

Drakor

Fortgeschrittener

Beiträge: 204

Registrierungsdatum: 30.06.2011

Danksagungen: 105

  • Private Nachricht senden

2

23.08.2012, 19:27

Hi,

das geht sogar relativ einfach. Zu jedem Prozess gibt es in /proc ein Unterverzeichnis mit der Prozess-ID (bsp. /proc/7049/) und dort befindet sich eine Datei status, die die Uid beinhaltet (sogar mehrere, schau mal rein, die Reihenfolge ist [1]). Auslesen kannst du sie mit:

Quellcode

1
awk /^Uid/'{print $2}' /proc/PID/status


Außerdem zeigt ps mit dem Parameter u die zugehörige Uid ebenfalls an, daher würde auch

Zitat

ps aux


zum schnellen Herausfinden der Uid genügen.

Gruß
Drakor

[1] real Uid, effective Uid, saved set Uid, filesystem Uid (http://www.kernel.org/doc/man-pages/onli…an5/proc.5.html)

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Alex (23.08.2012)

Alex

Fortgeschrittener

Beiträge: 372

Registrierungsdatum: 23.06.2011

Wohnort: /home/alex

Danksagungen: 117

  • Private Nachricht senden

3

23.08.2012, 22:52

ps aux zeigt leider nur den Usernamen an, war auch schon am überlegen etwas a lá ps aux | grep pid vorzuschlagen ^^.
alexthinking.com - yet another computer weblog

Zitat

Chuck Norris knows the state of schroedinger's cat.

Drakor

Fortgeschrittener

Beiträge: 204

Registrierungsdatum: 30.06.2011

Danksagungen: 105

  • Private Nachricht senden

4

24.08.2012, 01:35

Das ist richtig, allerdings zeigt ps den Usernamen nur an, wenn dieser nicht mehr als 8 Zeichen hat. Für alle Namen, die länger als das sind, wird stattdessen die Uid angezeigt.
Willst du also tatsächlich mit ps die Uid herausfinden und nicht "nur" den Usernamen, musst du ps dazu zwingen die Spaltenbreite kleiner zu machen:

Quellcode

1
ps -eo user:1,pid | grep PID


was du letztenendes bevorzugst ist mir egal, wenn du allerdings die anderen Uid's aus der status-Datei brauchst und die automatisch auslesen willst würde ich das nehmen, ansonsten ist soeine ps Lösung fürs schnelle Nachschauen.
(Umgekehrt funktioniert der Spaltengrößen-Tipp natürlich ebenso)

Gruß
Drakor

Ähnliche Themen

Verwendete Tags

linux, prozess, unix