webForumDet fria alternativet

Ändra filrättigheter i Java?

4 svar · 267 visningar · startad av andreascarlsson

andreascarlssonMedlem sedan feb. 2003211 inlägg
#1

Kan man på något sätt ändra filrättigheterna i ett filsystem m.h.a. Java?

Man kan ju skapa, radera och ändra filer, så rimligtvis borde man jui även kunna sätta rättigheterna också? Eller? :q

LimeMedlem sedan sep. 2001837 inlägg
#2

På vilket system????

Där har du svaret och problemet. Java är plattformsoberoende. Att sätta rättigheterna för filer är inte helt trivialt. Olika operativsystem har olika sätt att definiera behörigheter och har olika behörighetsmodeller.

andreascarlssonMedlem sedan feb. 2003211 inlägg
#3

Ja och detta borde väl vara ett jobb för JVM:en?? Eller?

Jag tycker att det borde finnas en metod (i lämplig klass) som heter setPermission(String user, String permission) där permission kan vara read, read/write, read/write/execute, osv...

Sedan är det väl upp till JVM:en att översätta detta till det aktuella systemets behörighetsmodell.

OBS! förmodligen är det nog inte så trivialt i verkligeten, men jag blir lite irriterad när saker och ting inte fungerar som jag tycker att de borde :)

SHIT SHIT!!! Får hitta någon annan lösning då... *lååång suck*

Tack ändå!

D3VaST8DMedlem sedan dec. 2000469 inlägg
#4

Surfade runt lite och hittade detta (dock en FUL lösning ):

You may use exec() to perform nearly any OS command you wish.

Here's a sample bit of code:

static public void chmod777(File file) {
if (file == null || !file.exists())
return;
try {
String command = "chmod 777 " + file.getAbsolutePath();
Runtime r = Runtime.getRuntime();
Process p = r.exec(command);
// p.waitfor();

} catch (IOException ioe) {
ioe.printStackTrace();
}
}

The problem with exec() is platform dependency.

A quick and dirty check to see if you're on unix might be to look at the
file.pathSeparatorChar();
and see if it is equal to "/" ... obviously, this isn't perfect.

This example is static so, it could be used from a "helper class" .... You might wish to return sucess or failure state, or perhaps set the permissions from a parameter.

Sedan kan du ju alltid kika och söka på java.security.Securityoch ACL.

En sökning gav:
http://java.sun.com/j2se/1.3/docs/guide/security/permissions.html

http://tns-www.lcs.mit.edu/manuals/java-api-1.1beta2/api/java.security.acl.Acl.html#addEntry(java.security.Principal,%20java.security.acl.AclEntry)

andreascarlssonMedlem sedan feb. 2003211 inlägg
#5

Tackar!!

Det var en jäkligt ful lösning, men den verkar fungera! :)

Jag misstänker dock att systemet aldrig kommer att köras på någon windowsburk, eller dylikt, så denna lösning borde fungera bra!!

Tack så mycket!!!

Genererad på 400 ms · cache AV · v20260730165559-full.f96bc7eb