Permitir que o arquivo seja lido apenas pelo comando do sistema em um Programa C

1

Eu tenho um programa em C program.c que contém um comando system("/bin/cat file.txt") , em que file.txt é um arquivo no mesmo diretório que o programa em C. Agora gostaria de impedir que os usuários leiam o arquivo.txt simplesmente por cat file.txt . No entanto, quando eles executarem ./program 1234 , o comando do sistema deverá mostrar o conteúdo file.txt . Como posso modificar permissões de arquivo para fazer isso?

    
por Aneesh Relan 26.01.2016 / 15:44

1 resposta

2

Para conceder permissões elevadas ao processo (neste caso, poder ler o arquivo enquanto usuários comuns não podem) é exatamente a funcionalidade do SUID / SGID. Leia a bagunça da UID / EUID, não é exatamente trivial.

Você pode escapar criando um grupo para isso, tornar o arquivo pertencente a esse grupo, gravável apenas, por exemplo, root e legível pelo grupo, com o programa SGID. Algo como isso é usado pelos jogos para restringir a gravação de arquivos de alta pontuação.

    
por 27.01.2016 / 00:13