Есть ли способ создать файл в java, который нельзя удалить. У меня есть googled и нашел процессы, связанные с cmd. Однако мне нужен чистый «java» способ, который можно сделать на любой платформе.Java Create Undeletable File
Заранее спасибо.
Есть ли способ создать файл в java, который нельзя удалить. У меня есть googled и нашел процессы, связанные с cmd. Однако мне нужен чистый «java» способ, который можно сделать на любой платформе.Java Create Undeletable File
Заранее спасибо.
Попробуйте метод setPosixFilePermissions() и установите разрешения для чтения только для всех классов пользователей. См. Это - http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#setPosixFilePermissions%28java.nio.file.Path,%20java.util.Set%29
read-only! = undeletable – assylias
Вы можете заблокировать файл, используя java.nio.*
. Вот учебник, как его использовать. http://www.javabeat.net/2007/10/locking-files-using-java/.
Блокировка файлов - это совсем другое понятие, полностью исключающее или разрешающее файлы. Это не поможет ответить на исходный вопрос. – mmorrisson
Если вы хотите создать файл, который не может быть случайно перезаписаны, а затем посмотреть на различные ответы на этот: How do i programmatically change file permissions?
Если вы хотите создать файл, который в настоящее время программа не может удалить вообще (но привилегированный), возможно, это будет возможно путем правильной установки разрешений в родительском каталоге или, возможно, с помощью умения SELinux Mandatory Access Control.
Если вы хотите создать действительно неуправляемый файл, вам не повезло. Я не знаю какой-либо операционной системы, которая поддерживает создание файлов, которые никогда не могут быть удалены. Это будет «анти-особенность».
Я также согласился бы с комментарием @ Teifi. Создать файл, который никогда не может быть удален на компьютере пользователя, неприемлем ... если не сделано или с авторизацией администраторов системы. Я бы назвал любое программное обеспечение, которое сделало это «вредоносным».
я не намерен использовать его для злонамеренных целей.Я буду хранить хешированный пароль в файле, чтобы злоумышленники не могли изменять или удалять файл. Хотя я опубликовал ответ, это не помогает мне, потому что файл все равно может быть перезаписан так что это довольно бесполезно для хакеров. –
Я понимаю вашу точку зрения. Вы пытаетесь «делать добро». Но вы, очевидно, не понимаете мою ... что заключается в том, что окончательный контроль над машиной не подходит вам, * независимо от ваших мотивов *. –
ОК ... Я уважаю вашу точку зрения. Тогда, пожалуйста, помогите мне? Есть ли какая-либо папка (или «безопасный» раздел реестра) в Windows, где я могу хранить хешированный пароль и быть уверенным, что хакеры не могут его изменить или удалить? Мне действительно не нужно делать файл неуязвимым, скорее я просто хочу безопасное место для хранения паролей. Пожалуйста, не предлагайте базу данных; онлайн-база данных не является опцией, и автономная база данных может быть легко удалена. –
Благодарим за помощь. Я, наконец, понял. Я использовал следующий код, чтобы запретить доступ к пользователю
public static void main() throws IOException
{
Path file = Paths.get("c:/b.txt");
AclFileAttributeView aclAttr = Files.getFileAttributeView(file, AclFileAttributeView.class);
//System.out.println();
UserPrincipalLookupService upls = file.getFileSystem().getUserPrincipalLookupService();
UserPrincipal user = upls.lookupPrincipalByName(System.getProperty("user.name"));
AclEntry.Builder builder = AclEntry.newBuilder();
builder.setPermissions(EnumSet.of(AclEntryPermission.APPEND_DATA, AclEntryPermission.DELETE, AclEntryPermission.DELETE_CHILD, AclEntryPermission.EXECUTE, AclEntryPermission.READ_ACL, AclEntryPermission.READ_ATTRIBUTES, AclEntryPermission.READ_DATA, AclEntryPermission.READ_NAMED_ATTRS, AclEntryPermission.SYNCHRONIZE, AclEntryPermission.WRITE_ACL, AclEntryPermission.WRITE_ATTRIBUTES, AclEntryPermission.WRITE_DATA, AclEntryPermission.WRITE_NAMED_ATTRS, AclEntryPermission.WRITE_OWNER));
builder.setPrincipal(user);
builder.setType(AclEntryType.DENY);
aclAttr.setAcl(Collections.singletonList(builder.build()));
}
Можете ли вы дать мне ACLFileAttributeView и UserPrincipalLookUpService. bcz он не может решить .. спасибо за ваш код .. я хочу его реализовать .. но я не могу .. –
вы можете объяснить, что вы имеете в виду под «неудаляемостью»? С соответствующими правами большинство ОС позволяют вам удалять любые файлы ... – assylias
Увидев, что вы говорите о cmd, вы имеете в виду: http://fixitwizkid.com/threads/make-an-undeletable-file.1445/ As undeletable file? –
Это любая помощь? http://stackoverflow.com/questions/664432/how-do-i-programmatically-change-file-permissions –