2009-03-27 4 views
1

Es gibt eine Standardmethode (funktioniert über Linux-Distributionen hinweg), um einen Prozess (von einer anderen Anwendung) zu starten, der nach dem root-Passwort fragt, um Privilegien zu erhöhen?Beste Möglichkeit, die Berechtigungen programmatisch unter verschiedenen Linux-Versionen zu erhöhen?

Ich habe versucht, Gksudo (es ist standardmäßig in Ubuntu installiert), aber unter anderen Distributionen (oder unter anderen Desktop-Manager) kann es nicht installiert werden.

+3

Ich könnte auf die "nicht programmierungsbezogenen" Leute hinweisen, dass die Linux/Unix-Designphilosophie oft sehr kleine Einzweckkomponenten beschreibt, die über Rohre oder Sockel aneinandergereiht werden können. Nur weil es keine verknüpfbare API wie in Windows ist, ist es nicht weniger programmierend in Linux. – bmdhacks

Antwort

3

, das überall funktioniert, aber nicht die Passwort-Cache und fragt nach der Wurzel und nicht das User-Passwort (wie sudo tut):

su - -c command 

EDIT: Nicht auf ubuntu, wo die Wurzel -Konto ist deaktiviert. Wahrscheinlich müssen Sie etwas wie folgt aus:

test -x /usr/bin/sudo && sudo command || su - -c command 
+0

su - fragt nach dem root-Passwort und erlaubt Ihnen, alles zu tun, während sudo so konfiguriert werden kann, dass Sie Benutzerpasswörter und Limit-Befehle abfragen, die Sie ausführen dürfen. – vartec

+0

@vartec: Die ursprüngliche Frage enthält den Text "nach dem root-Passwort fragen, um Privilegien zu erhöhen", was genau das ist. – Powerlord

+0

Funktioniert nicht auf Distributionen wie Ubuntu, wo root sich nicht interaktiv anmelden darf. – ephemient

1

Die einzige Standard Sache ist Textmodus su. Die meisten Distributionen haben auch sudo installiert.

nun in KDE basierten Distributionen finden Sie kdesu, während in GNOME haben basierend es wirdgksu und gksudo sein. Computer in Kerberized-Domänen haben ksu.

Sie könnten versuchen, /etc/sysconfig/desktop zu verwenden, um zu sehen, welcher der Standarddesktop ist.

3

Ich würde empfehlen, Blick auf PolicyKit, was die meisten modernen Distributionen verwenden, um dies zu erreichen.

1

Wenn Ihre Anwendung es einem Benutzer normalerweise erlaubt, Berechtigungen zu erhöhen, installiert es seine eigene Einzweck-ausführbare Datei setuid - Einzweck bedeutet, dass es die erforderliche Aufgabe ausführt, anstatt als Allzweck-Startprogramm zu fungieren.

$ su - 
# cp `type -p id` /usr/local/bin/root-id 
# chown root:users /usr/local/bin/root-id 
# chmod 4750 /usr/local/bin/root-id 
$ /usr/local/bin/root-id 
... euid=0(root) ... 

OTOH setuid- Executables haben auch zu einer gemeinsamen Quelle für Sicherheitslöcher gewesen, so Sorgfalt walten lassen.