2011-06-07 2 views
1

Мне нужно установить разрешение на чтение файла конкретному пользователю операционной системы, как это сделать на Java?Изменить разрешение созданного файла, чтобы только текущий пользователь мог его прочитать

Редактировать: Файл будет создан с разрешениями только для пользователя, запускающего приложение, чем для того, чтобы установить разрешение на чтение одному пользователю, другие пользователи не будут иметь права на чтение файла.

+1

Depends в операционной системе. – Marcelo

+0

windows и linux, существует ли универсальный API для этого? –

+0

Вам нужно будет выполнить специальную команду os для изменения прав доступа к файлам. Вы можете посмотреть ответ ncmathsadist и посмотреть, достаточно ли этих методов для того, что вы притворяетесь. – Marcelo

ответ

0

, если вы хотите изменить права доступа к файлам на старых версиях Java, как Java 5, вы можете использовать это:

Runtime.getRuntime().exec("chmod 000 " + PATH + fileName); 

на окнах, вам придется заменить CHMOD с соответствующим CACLS.exe синтаксис команды

3

Используйте методы setExecutable, setReadable и setWritable в java.io.File. Вы можете использовать их, чтобы изменить любой бит разрешения вашего файла. Прямая ссылка: http://download.oracle.com/javase/6/docs/api/java/io/File.html#setReadable%28boolean%29. Тестирование на MacOSX подтверждает, что изменено только значение считываемого пользователем. Когда программа

import java.io.File; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     File f = new File("test.txt"); 
     f.setReadable(true); 
    } 
} 

следующее.

$ touch test.txt 
$ chmod 000 test.txt 


$ javac Test.java 
$ java Test 
$ ls -l test.txt 
-r-------- 1 morrison staff 0 Jun 7 13:28 test.txt 
+0

Это даст разрешение только одному пользователю? Другой пользователь, чем тот, который запускает приложение? У других пользователей SO будет разрешение на чтение файла? –

+1

Это изменяет разрешение на чтение файла. Второй аргумент может использоваться для ограничения изменения только для владельца. В противном случае все разрешения (chomod + r) изменяются. – ncmathsadist

+1

Можете ли вы показать похожий пример на платформе Windows? – bbaja42

1

Если вы нацеливаете Windows Vista/7, создайте JAR как EXE и вставьте манифест, запрашивающий права администратора. Если это просто проблема ввода-вывода, используйте стандартные методы файлов setReadable, setWritable, setExecutable :)

1

Что касается прав доступа для одного пользователя, начните с использования кода ncmathsadist для добавления разрешений на чтение, а затем измените владелец файла для тех, кому нужен доступ.

Я нашел в исходном коде Ant, который они используют для задания владельца смены. Для unix это можно найти в дереве исходных файлов Ant в org/apache/tools/ant/taskdefs/optional/unix/Chown.java. Возможно, вы сможете включить это и использовать его как вызов API, чтобы программно изменить пользователя.

 Смежные вопросы

  • Нет связанных вопросов^_^