2013-03-18 1 views
1

Студенты в моем начале Класс Java начинают изучать ввод/вывод файлов, и один из их проектов включает удаление и переименование файлов. Я могу думать о десятках способов, по которым это может пойти не так.Что такое простая политика безопасности Java для ограничения записи файлов в один каталог?

Поэтому было бы полезно использовать инфраструктуру безопасности Java для ограничения их программ от переименования, удаления или записи поверх файлов, которые не содержатся в конкретном каталоге. Чтение за пределами каталога в порядке, и политика не должна быть супер-пуленепробиваемой - это больше касается предотвращения случайного ущерба, чем защиты от злонамеренности моих учеников.

Однако, я не занимался какой-либо реальной работой Java за пределами курсов программирования в школе, поэтому я не знаю, как писать или активировать файлы политик. Что такое простой файл политики, который я могу использовать для достижения этого, и как бы активировать его при запуске кода моих учеников?

+0

См. [См. эффекты файла политики] (http://docs.oracle.com/javase/tutorial/security/tour2/ step4.html) для применения политики. Что касается написания, я понятия не имею, поскольку я никогда их не использую. –

ответ

3

Вот простой политический файл с грязью, который вы можете использовать для ограничения записи файлов в определенный каталог.

grant codeBase "file:/some/root/path/sandbox/-" { 
    permission java.io.FilePermission "*", "read"; 
    permission java.io.FilePermission "/tmp/*", "read, write"; 
}; 

Предполагается, что вы будет организовывать и запускать код из /some/root/path/sandbox, и что вы будете выдачи разрешения на запись только в папку /tmp. Вы можете добавить дополнительные разрешения на чтение и запись по мере необходимости. Для вызова, запуск кода с помощью следующей командной строки:

Java -Djava.security.manager -Djava.security.policy = student.policy YourClassName

Это предполагает, что вы сохранили политику файл, названный student.policy, в той же папке, где вы запускаете код от

+0

Похоже, это будет трюк. (Хотя я немного смущен о цели «-» в конце пути.) Спасибо! – LeafStorm

+0

@LeafStorm - '-' указывает, что политика должна применяться рекурсивно в указанном каталоге. Вы можете ссылаться на поля [Подписанные, основные и кодовые базы] (http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html#FileSyntax) в разделе [Реализация политики по умолчанию и Синтаксис файла политики] (http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html) для получения более подробной информации. – Perception

+0

А, ОК. Спасибо за ссылку. – LeafStorm