webForumDet fria alternativet

Ändra filrättigheter i Java?

Java

4 svar · 269 visningar · startad av andreascarlsson

Medlem sedan feb. 2003202 inlägg
Frågan#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

Medlem sedan sep. 2001961 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.

Medlem sedan feb. 2003202 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å!

Medlem sedan dec. 2000485 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)

Medlem sedan feb. 2003202 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!!!

398 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
269 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)