Könnte ein User Space-Prozess einen Root-Unterprozess starten?

0

Ich benutze Ubuntu Linux und ich habe eine proprietäre Viber-Software. Heute habe ich eine Datei mit Viber gespeichert und festgestellt, dass sie im Dateisystem mit dem Root- Benutzer als Eigentümer gespeichert wurde . Ich habe mehr gegraben und festgestellt, dass zwei Prozesse ausgeführt werden, einer unter meinem Benutzernamen und einer unter root. Könnte mir jemand erklären, ob es einem Prozess im Benutzerbereich möglich ist, einen anderen Unterprozess als Root zu starten?

Hier sind die Berechtigungen der mit Viber gespeicherten Datei:

mehdix@spielplatz:~/New Folder2$ ls -l
total 240
-rw-rw-r-- 1 root root 245455 Okt  9 09:50 saved_with_viber

Und hier ist das Ergebnis des Befehls 'ps':

mehdix@spielplatz:~$ ps axuf | grep Viber
mehdix   23857  0.0  0.0   4444   644 ?        S    Okt08   0:00          \_ /bin/sh /usr/share/viber/Viber.sh
root     23864  0.0  1.8 2794592 146604 ?      Sl   Okt08   0:17          |   \_ /usr/share/viber/Viber
mehdix   26484  0.0  0.0  17432   964 pts/5    S+   09:43   0:00                  \_ grep --color=auto Viber
mehdix@spielplatz:~$

Hier ist die Ausgabe von 'ls -l / usr / share / viber / Viber':

mehdix@spielplatz:~$ ls -l /usr/share/viber/Viber
-rwsr-sr-x 1 root root 1733113 Okt 31  2013 /usr/share/viber/Viber

und hier ist der Inhalt von '/usr/share/viber/Viber.sh':

mehdix@spielplatz:~$ cat /usr/share/viber/Viber.sh
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
  dirname=$PWD/$dirname
fi

LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
Mehdi Sadeghi
quelle
Sicher. SUID nachschlagen.
Bob
@ Bob Ich verstehe die Situation nicht. Ich bin mir ziemlich sicher, dass ein User-Space-Programm niemals in der Lage sein sollte, etwas als root auszuführen. Wie kann es dann einen root-Unterprozess starten und Dateiberechtigungen als root markieren? Oder irre ich mich ganz?
Mehdi Sadeghi
Kannst du die Ausgabe von zeigen ls -l /usr/share/viber/Viberund /usr/share/viber/Viber.shirgendwo posten ? Das könnte uns sagen, was los ist ...
Lemonsqueeze

Antworten:

2

Sicher. Eine Datei mit dem SUID-Berechtigungsbit wird unter dem Dateieigentümer und nicht unter dem Benutzer ausgeführt, der sie gestartet hat. Eine SUID-Datei von root wird unter root ausgeführt.

sudoist ein Beispiel für ein solches Programm. Sie können es von jedem Benutzer aus starten, aber es wird unter root ausgeführt und kann weitere Prozesse mit root-Rechten starten.

Wie Sie in Ihrer ls -lAusgabe sehen können, wird diese Methode hier verwendet: Die Datei gehört rootund das SUID-Bit ist gesetzt (wie durch die Ausführungsberechtigungen sanstelle von xfür Benutzer angegeben). Tatsächlich scheint das SGID-Bit ebenfalls gesetzt zu sein.

Bob
quelle
Wenn ich 'sudo' starte, muss ich das root-Passwort eingeben, aber wenn ich Viber starte, gebe ich kein Passwort ein. Ist das wichtig?
Mehdi Sadeghi
@MehdiSadeghi Das Passwort wird von der sudoBinärdatei angefordert und verwaltet und hat nichts mit SUID zu tun - es tritt auf, nachdem die Binärdatei unter dem rootBenutzer ausgeführt wurde. Die SUID- und andere Berechtigungsfunktionalität wird vom Kernel ( exec) verwaltet.
Bob