SAMBA Share - impede que o usuário exclua um arquivo

2

Estou criando um arquivo oculto "Access Log" .txt dos funcionários acessando um programa que criei e preciso saber como fazer com que esse arquivo não possa ser excluído.

Por ser este programa ajuda a automatizar muitas tarefas que realizamos em estações de trabalho, e pode causar muitos danos também. Então, preciso rastrear quem acessa, para o caso de se tornar um problema.

Reiterando a pergunta, como evito que qualquer pessoa exclua esse arquivo enquanto ainda pode gravar nele.

    
por Mechaflash 15.09.2011 / 16:34

5 respostas

5

Eu acho que você tem usuários que cada vez que eles iniciam um aplicativo, este aplicativo controla quem o iniciou escrevendo algumas informações em um arquivo localizado no compartilhamento de samba acessível por todas as estações de trabalho. Já que você está se referindo ao "Access Log", eu também acho que você só precisa anexar ao arquivo e não modificar seu conteúdo.

Se o arquivo estiver em um sistema de arquivos ext2 / 3/4 no lado do servidor, certifique-se de que os usuários do samba não tenham permissões de gravação em seu diretório. Isso evitará a exclusão acidental ou intensional. Em seguida, ative o atributo somente de anexação com chattr +a <filename> , para que as informações só possam ser adicionadas e não removidas / modificadas / truncadas. O arquivo ainda pode ter permissões de gravação para todos, portanto, o aplicativo pode anexá-lo mesmo com os privilégios dos usuários.

Nota: chattr pode funcionar para outros sistemas de arquivos também, por exemplo. xfs. Eu não tenho uma lista exata.

    
por 16.10.2011 / 12:42
3

Essencialmente, o que você faz aqui é logar, então você pode preferir usar um daemon de log remoto como o rsyslogd para fazer seu log ao invés de hackear um arquivo em um compartilhamento de samba.

Dito isso, a exclusão de um arquivo é uma alteração do diretório que contém o arquivo, não do arquivo. Portanto, se você remover as permissões de gravação para os usuários no diretório, o arquivo não poderá ser excluído. Claro, ainda pode ser manipulado ou acidentalmente truncado.

    
por 16.10.2011 / 12:09
1

O objetivo de poder gravar em um arquivo e permitir o acesso somente leitura de um grupo de usuários pode ser obtido pela propriedade e permissões de arquivos. Digamos que todos os usuários que precisam desse acesso estejam no grupo 'usuários' e você sozinho tenha acesso à conta raiz nesse sistema. Então faça (como root ):

touch /var/log/AccessLog
chown root:users /var/log/AccessLog
chmod 640 /var/log/AccessLog

De agora em diante, somente o root poderá modificar o arquivo, mas todos os usuários poderão lê-lo.

Se, em vez disso, você quiser permitir que os usuários gravem no arquivo, mas precisarem acompanhar quem (e quando) o modificou, você poderá usar o FAM ( Monitor de Alteração de Arquivos . Acima disso, para manter um registro de todas as versões anteriores do arquivo, você pode colocar um sistema de controle de versão (por exemplo, GIT )) - você pode fazê-lo cooperar com o FAM para que cada modificação de arquivo acione um commit para o repositório local. Provavelmente pode haver maneiras mais fáceis de fazer isso, mas nada vem à minha mente (pelo menos nada que funcione em cima de um sistema de arquivos).

    
por 16.09.2011 / 09:37
0

Você já pensou em usar / verificar o log de auditoria? Ou usar algo como o sudo (que logaria) para poder rodar o programa? Você até considera ter um evento syslog emitido para outro servidor ao qual o (s) usuário (s) não tem acesso.

    
por 09.02.2017 / 23:12
-3

Se seus arquivos forem modificados somente nos primeiros minutos após a criação, crontab next:

find /somedir -type f -user sambauser -mtime +3m -exec chown root:users {} \; -exec chmod 640 {} \;

Encontrará todos os arquivos com a hora da última modificação em três minutos e alterará o proprietário / as permissões.

    
por 16.10.2011 / 12:40