2011-01-11 4 views
0

ich versuche, die Erlaubnis in ein Verzeichnis in Linux gewährt zu überprüfen, ich meine, ich mit Erlaubnis ein Verzeichnis 755wie kann ich die Datei Erlaubnis eines Verzeichnisses mit Java bekommen

[email protected]:~$ ls -l/|grep directory 
drwxr-xr-x 3 root root 4096 2011-01-10 12:33 directory 

Wie kann ich diese Erlaubnis gelesen mit Java? Ich habe versucht, FilePermission verwenden, aber wenn ich ein Verzeichnis mit allen Berechtigungen (777) die FilePermission Klasse gibt immer eine Ausnahme

java.security.AccessControlException: Access denied (java.io.FilePermission /home/directory read) 
at java.security.AccessController.checkPermission(AccessController.java:103) 
at com.snippets.Check4DirectoryPermission.checker(Check4DirectoryPermission.java:50) 
at com.snippets.Check4DirectoryPermission.main(Check4DirectoryPermission.java:70) 

gibt es eine andere Möglichkeit, dies zu tun?

Antwort

3

java.io.File.canRead(), in dem die Datei Beispiel diejenige, der das Verzeichnisses

Returns repräsentiert ist: wahr, wenn und nur wenn die von diesen abstrakten Pfadnamen angegebene Datei vorhanden und kann durch die Anwendung gelesen werden; andernfalls false

3

Ich glaube, Sie einen Fehler gemacht: Der Befehl ls die Existenz von /directory zeigt, aber die Java-Code Beschwerden über /home/directory - die es nicht gibt, es sei denn Sie einen Benutzer directory genannt haben.

Von Ihrer Stapelüberwachung nehme ich an, dass Sie selbst ein FilePermission-Objekt erstellen und es an AccessController.checkPermission() übergeben. Dies ist nicht, wie es verwendet wird - die FilePermission Klasse tut NICHT stellen die Dateisystemberechtigungen und überprüft sie nicht. Es wird nur von Javas SecurityManager verwendet, z.B. Es wird geprüft, ob die Richtliniendatei Regeln enthält, die der Anwendung den Zugriff auf die Datei ermöglichen. Ob das lokale Dateisystem Berechtigungen unterstützt oder nicht, spielt keine Rolle.

Wie Bozho vorschlagen, erstellen Sie ein java.io.File() Objekt und verwenden Sie die canXXX() Methoden, um zu überprüfen, ob Sie auf den Ordner oder die Datei zugreifen können.

Wenn Sie detailliertere Informationen zu Berechtigungen auf Dateiebene für eine Datei benötigen, müssen Sie auf Java 7 warten. Siehe the Java NIO.2 Tutorial, insbesondere das java.nio.file.attribute-Paket.

Verwandte Themen