2012-04-04 3 views
3

Ich habe versucht:Wie man einen Linux-Ordner von Java auszuhängen

final ProcessBuilder pb = new ProcessBuilder("umount", "foldername"); 
final Process p = pb.start(); 

Wirft

umount:/home/user/folder nicht in der fstab ist (und Sie sind nicht root)

ich versuchte

final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername"); 
final Process p = pb.start(); 

Wirft

sudo: sorry, Sie tty sudo ausführen

Ich habe das root-Passwort haben muss, aber es auf die ProcessBuilder nicht zur Verfügung stellen kann. Ich kann auch nicht bearbeiten fstab (oder was auch immer bearbeitet werden muss), weil es remote virutal Maschine auf einem Remote-Server von gespeicherten OS-Image gestartet wird.

Ich möchte nur den Befehl als root ausführen.

+0

Haben diese Befehle funktionieren, wenn sie direkt vom Terminal laufen? –

+0

Der erste Befehl druckt genau das gleiche, wenn ich nicht root bin (wenn ich root bin, wird der Ordner erfolgreich getrennt). Der zweite Befehl fordert zur Eingabe eines Kennworts auf. – fiction

+0

Können Sie '/ etc/sudoers' bearbeiten? – artbristol

Antwort

3

Sie haben ein paar Optionen:

  1. der Steuerterminal für sudo so zur Verfügung, dass der Benutzer dort das Kennwort eingeben kann.

    pb = new ProcessBuilder("sh", "-c", "sudo umount foldername </dev/tty"); 
    Process p = pb.start(); 
    p.waitFor(); 
    
  2. Führen Sie das Programm mit gksudo statt sudo. Systeme, die GTK + verwenden, enthalten häufig das gksu-Paket als eine grafische Schnittstelle für su und sudo.

    pb = new ProcessBuilder("gksudo","umount", "foldername"); 
    
  3. Öffnen Sie ein Terminal-Emulatorfenster für sudo:

    pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername"); 
    
Verwandte Themen