# Konsolenbefehl mit root-Rechten unter Linux



## Schalli1987 (16. Mai 2010)

Hi,

ich versuche grade per Java einige Linux-shell befehle auszuführen.
Ohne besondere Berechtigung klappt das auch wunderbar, nur sobald das root-passwort verlangt wird steigt das Programma aus 

Hier mal der Code:

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Test {

	public static void main(String[] args) {
		ArrayList<String> al = new ArrayList<String>();
		al.add("/bin/sh");
		al.add("-c");
		al.add("sudo ls");

		process(al);
	}

	public static void process(ArrayList<String> cmd) {
		ProcessBuilder pb = new ProcessBuilder(cmd);

		try {
			Process p = pb.start();

			String s;

			if (p.waitFor() != 0) {
				BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
				while ((s = err.readLine()) != null)
					System.out.println("err: " + s);
			} else {
				BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
				while ((s = in.readLine()) != null)
					System.out.println("in: " + s);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
```


Der Fehler den ich bekomme
	
	
	



```
sudo: no tty present and no askpass program specified
```
sagt eigentlich nur aus, dass es keine Möglichkeit gibt nach dem Passwort zu fragen.
Aber wie schaffe ich diese Möglichkeit bzw geht es irgendwie das Passwort direkt mit zu übergeben?


Achja, die Möglichkeit die Passwortabfrage für dieses Programm zu deaktiviren finde ich eine nur sehr unschöne Lösung!


Über Vorschläge und Anregungen bin ich immer dankbar!
Schalli


----------



## Bratkartoffel (19. Mai 2010)

Hallo,

eventuell könnten die hier die Programme "gksu" und "gksudo" weiterhelfen.
Diese führen einen bestimmten Befehl mit erhöhten Rechten aus, die Passworteingabe erfolgt über einen extra Dialog.

Gruß
BK


----------



## Schalli1987 (19. Mai 2010)

Es geht mir ja genau darum diese Dialoge abzufangen.
Das mit den root-Rechten war jetzt auch nur ein Beispiel, es geht um alle möglichen Dialoge die von der Shell eine weitere Eingabe erwarten, wie z.B. auch das ändern des eigenen Userpassworts.


----------



## Bratkartoffel (21. Mai 2010)

Hallo,

dann kann ich dir auch nicht weiterhelfen. Es gibt nur wenige Programme (dazu gehört passwd Gott sei Dank nicht) die Passwörter als Parameter erlauben. Es stellt sicherheitstechnisch einfach eine sehr schlechte Lösung dar, Passwörter ungeschützt an ein Programm zu übergeben.

Was mir hier noch einfällt ist Methode "getOutputStream()" der Klasse "Process" von Java. (Hier die Doku: klick). Diese bietet eine Möglichkeit, Daten an die Standardeingabe des Programms zu schreiben. Damit könntest eventuell das Passwort an das Programm senden. Ich hab diese Methode noch nicht probiert, kann also nichts versprechen.

Es gibt eine andere Möglichkeit die mir spontan einfällt, *doch ich rate sehr stark davon ab!*
Mit Hilfe des "sudo" Befehls kann man Programme mit erhöhten Rechten ausstatten. Hierzu gibt es die Datei "/etc/sudoers" welche festlegt, welche Benutzer das Programm verwenden dürfen. Da kannst du auch eintragen, dass bei dem sudo nicht nach dem Passwort gefragt wird. (Direktive NOPASSWD, siehe manpage)

Da die obige Maßnahme den angegebenen Benutzer quasi mit root-Rechten ohne Passworteingabe ausstattet, rate ich davon ab.

Gruß
BK


----------



## Erik (27. Mai 2010)

Hallo,

ohne über den Sinn und Unsinn zu Streiten poste ich mal die Lösung:

```
gksu --su-mode -u root deinbefehlsname
```
Diesen Befehl musst du absetzten und das Programm _deinbefehlsname_ wird nach Passworteingabe mit root Rechten ausgeführt.

Gruß
Erik


----------



## Bratkartoffel (28. Mai 2010)

Guten Morgn,

Ähm Eric, siehe Post 2 und 3, genau das will er ja nicht haben... Es soll kein Dialog aufpoppen mit dem man das Passwort eingeben kann.

Gruß
BK


----------



## Dennis Wronka (28. Mai 2010)

Eventuell könnten hier POSIX capabilities helfen.


----------



## Erik (28. Mai 2010)

Bratkartoffel hat gesagt.:


> Guten Morgn,
> 
> Ähm Eric, siehe Post 2 und 3, genau das will er ja nicht haben... Es soll kein Dialog aufpoppen mit dem man das Passwort eingeben kann.
> 
> ...



Hm 

Die habe ich irgendwie überlesen...

Gruß
Eri*k*


----------

