Sida 1 av 1

root-rättigheter via java-applikation

Postat: 30 aug 2007, 14:28
av banarne
Hej!

Jag vill skapa en ny fil i en mapp som kräver att man har root-rättigheter.
Och detta vill jag göra i min java-applikation, finns det någon möjlighet att få root-rättigheter via java-applikationen?
Det är viktigt att det sker via java-applikationen då det är den enda applikationen som man ska komma åt vid det tillfället.
Jag använder Ubuntu 7.04.

tack på förhand

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 14:33
av DrMegahertz
Om du använder setuid på filen så tvingar du den att köras med ett speciellt uid, men det ska nog finnas en snyggare lösning..

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 14:49
av Lars
Utan att alls veta vad det är för program så skulle jag vilja hävda att det är felkonstruerat om det kräver root-rättigheter enbart för att skapa en katalog ;)

Jag vet inte om setuid fungerar på Java-program, men det är en farlig metod som helst ska undvikas. Kan du inte skapa katalogen manuellt istället? Eller lägga den i användarens hemkatalog?

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 15:10
av banarne
Jag vill inte skapa en katalog utan jag vill skapa en fil i mappen /usr/lib/jvm/.... som kräver root-rättigheter.
Och det via min java-applikation.
Det är en propertities-fil för usb som jag skulle vilja skapa via min applikation.

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 15:24
av banarne
hehe nu e jag jobbig.

För att förtydliga för Lars så är det jag jag själv som programmerar applikationen som ska kunna skapa en properties fil innan den ska kommunicera med USB.

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 15:31
av Lars
Jo, men varför ska applikationen in och mecka i systemkataloger för? Det är något som man normalt gör när programmet installeras på datorn, inte varje gång programmet körs.

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 16:12
av gasol
Du kan ju skapa en deamon som körs med nån bra uid som man sedan kan kommunicera med via nån IPC metod... så kommer klient applikationen köras som användaren och deamon processen får göra "de farliga" sakerna. Sedan kan ju deamon processen har en lista på uid's som får kommunicera med den...

SV: root-rättigheter via java-applikation

Postat: 30 aug 2007, 16:22
av banarne
Jo det e så att jag har placerat properties-filen i mappen som den tydligen ska ligga i om usb-kommunikationen ska funka, men det gör den inte ändå.
Då har jag läst att det kan hjälpa om man implementerar kommandona i properties filen till applikationen och startar metoden som skapar en egen properties-fil så är man garanterad att den har hamnat på rätt ställe.
Jag är verkligen beroende av det här då jag ser det som en sista möjlighet att få min usb-kommunikation att fungera. Jag använder för övrigt javax.usb som använder sig av denna properties-fil som jag vill få att funger.

skulle även kanske behöva denna funktion för att skriva över properties-filen senare via min java-applikation.
hoppas

skalat av lite av innehållet i properties-filen för att att inte ta för mycket plats i forumet.


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public final class PrinterInit {
   
    public static void printerInit(){
        String archivoConf =
            System.getProperty("java.home") + File.separator + "lib" +
            File.separator + "javax.usb.properties";
       
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(archivoConf));
           
            out.write(
           
                            .....
            "javax.usb.services = com.ibm.jusb.os.linux.LinuxUsbServices"+ "\n" +

           

            "# These properties enable queueing for different pipe types.  If the operating"+ "\n" +
            "# system does not support queueing for a particular pipe type (or at all),"+ "\n" +
            "# enable queueing here.  This queueing is most likely much slower than OS-level"+ "\n" +
            "# queueing, so if the OS supports queueing, these should not be enabled."+ "\n" +
            "com.ibm.jusb.UsbPipeImp.queueSubmissions.control = true"+ "\n" +
                          ..................
           
            out.close();
        } catch (IOException e) {
            System.err.println("properties:" + "javax.usb.properties");
            System.err.println("arch:" + archivoConf);
        }

    }
}