Proteção de arquivos através do Java

Pessoal estou criando um arquivo XML que não pode ser excluído, essa criação é através do JAVA utilizando a IDE Netbeans. Gostaria de saber se existe alguma maneira de proteger esse arquivo, ou seja se através do código do java eu pudesse tirar a permisão de editar e excluir esse arquivo. É meio complicado, mas espero que alguem já tenha passado por isso.

Abraços.

Dê uma olhada na classe java.io.File, especificamente em em setReadOnly() e setWritable() http://download.oracle.com/javase/6/docs/api/java/io/File.html.

Ok

Vou dar uma olhada aki

Não consegui aki, será que alguem tem alguma exemplo?

Se ele não pode ser editado nem removido, não deve ficar sob poder do usuário.

Não há como proteger completamente um arquivo. O máximo que dá pra fazer é marcá-lo como somente leitura (que evita alterações, mas não a exclusão).

Ainda sim, mesmo que usando a opção de somente leitura, o usuário pode ir nas propriedades do arquivo e marcá-lo com permissão de escrita.

Então alguem tem alguma idéia pra eu poder proteger esse arquivo?

Agradeço a ajuda!

Mais alguem pra me ajudar?

Eu considero este um problema insolucionável. Talvez seja necessária outra abordagem (manter o arquivo em um servidor remoto, ou algo assim).

Aliás, você não disse pra que o arquivo serve, nem o que sua aplicação faz.

É um arquivo que guarda as informações da conexão, como o servidor, porta, nome do banco e tal.

Eu utilizo uma abordagem semelhante a sua, porém no meu caso o sistema verifica se o arquivo está lá e se as informações estão no arquivo corretamente, caso não esteja o sistema manda o usuário entrar em contato comigo e vamos ver o que aconteceu.

Eu uso um arquivo de propriedades, com propriedade e valor, exemplo:

servidor.banco.dados = 192.168.0.1 usuario.banco.dados = FULANO senha.banco.dados = 8eb8c59b18f6418c8fc9d27803
Não considero que seja uma forma ideal para se fazer isso, mas está funcionando sem problemas há 6 anos.

Caso este arquivo esteja armazenado em um servidor unix e derivados utilize

chmod u=rwx,g=rwx,o=rwx nome_diretório
onde:
u-> permissões que serão aplicadas para o dono do arquivo
g-> permissões que serão aplicadas para o grupo do dono do arquivo
o-> permissões que serão aplicadas a todos o outros usuários
r-> permissão de leitura
w-> permissão de escrita
x-> permissão de execução

Existe outras opções e so pesquisar.

Se for windows pesquise sobre o comando ICACLS

e uso um método com


                try {
			Process exec = Runtime.getRuntime().exec("icacls arquivo /deny User1:(d,wdac)");
		} catch (IOException e) {
			e.printStackTrace();
		}

Agradeço as dicas do pessoal, e em relação a linux ou windows, provavelmente rodará em windows. Mas num queria engessar o projeto, vou continuar tentando alguma coisa que pelo menos dê uma proteção. Porém caso o arquivo seja excluído ou confiugurado errado o máximo que pode acontecer é não conectar com o banco :lol:

Mas ai já é outro problema…

Abraço pessoal, agradeço as dicas de todos!