Protege os arquivos do aplicativo a partir do acesso pelo mesmo usuário

2

Eu quero saber se é possível que um aplicativo crie arquivos acessíveis somente a partir do próprio aplicativo. O problema é que eu não tenho acesso root.

Por exemplo, se eu executar o aplicativo como UserA, quero garantir que qualquer outro aplicativo executado pelo UserA não possa acessar os arquivos.

    
por Simone 03.02.2012 / 20:59

5 respostas

1

Se você definir as permissões nos arquivos como: 0600 ou definir o umask 077 para o usuário que está executando o aplicativo, os arquivos só poderão ser acessados pelo usuário do aplicativo e root .

    
por 03.02.2012 / 21:19
1

Em tempos passados e em sistemas sem proc(5) montado, um processo poderia criar e abrir um arquivo, unlink(2) it, e ter um identificador aberto válido para um arquivo anônimo. Nenhum outro processo poderia nomear e, portanto, não poderia open(2) o arquivo, mesmo outro processo executado pelo mesmo usuário (ou raiz)

No entanto, como a maioria dos sistemas Linux tem /proc montado, até mesmo arquivos sem nome retêm um nome como /proc/2757/fd/4 , que é acessível a outros processos executados pelo mesmo usuário.

    
por 04.02.2012 / 22:37
0

Atualmente, não consigo pensar em uma maneira de alcançar o que você deseja sem envolver o root. Então, entre em contato com seu administrador de sistema e obtenha uma segunda conta para sua inscrição.

    
por 03.02.2012 / 22:59
0

Isso não é possível diretamente; no entanto, você pode criar um programa (ou um wrapper para esse programa) que verifique as informações sobre seu pai.

    
por 03.02.2012 / 23:51
0

É impossível para um processo sem privilégios criar um arquivo que ele possa ler, mas outros processos executados como esse usuário não pode.

Prova: suponha que o processo A (sem privilégios) tenha o arquivo aberto e o processo B (executando como o mesmo usuário) também queira abrir o arquivo. O processo B pode chamar ptrace para assumir o controle do processo A. A chamada de sistema ptrace permite ao processo B executar código arbitrário dentro do processo A, incluindo o estabelecimento de um soquete unix para processar A e passar o descritor de arquivo aberto sobre ele (passagem de descritor de arquivo é um recurso de soquetes de datagrama unix que, como o nome indica, permite ao remetente enviar um descritor de arquivo ao receptor) após o qual o receptor tem o mesmo arquivo aberto no mesmo modo).

É possível que o objetivo do seu professor seja abrir um arquivo e excluí-lo. Um arquivo excluído - tecnicamente, um arquivo desvinculado - não pode ser aberto por meios convencionais: nenhum processo (mesmo um privilegiado) pode abri-lo com a chamada do sistema open , já que não há nome que possa ser passado como argumento. Mas o processo (ou processos) que tem o arquivo aberto pode continuar trabalhando com ele; o arquivo só será realmente deletado quando o último processo que o tiver aberto morrer. Outros processos ainda podem abrir um identificador para o arquivo usando ptrace , conforme descrito acima.

Além do método ptrace , em algumas variantes unix, incluindo o Linux, pode haver outras formas de abrir um arquivo que é aberto em outro processo, através de /proc .

    
por 07.02.2012 / 00:04