Restrinja o acesso ao arquivo para acrescentar apenas

11

Eu tenho um diretório com arquivos de log e estou colocando logs do script iniciado pelos usuários neles. O log com o syslog não parece possível neste caso. (rsync não daemon)

Quero que os usuários tenham apenas permissões de gravação em arquivos de log. O problema é que as permissões de gravação devem ser mais restritas, para que os usuários (script) possam anexar apenas esses arquivos. O sistema de arquivos subjacente é o XFS.

O seguinte não funciona:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

Existe alguma outra solução para isso? Obrigado por suas dicas.

metalhead
fonte
Tem certeza de que é XFS? chattr +afunciona para mim aqui (3,2 kernel). Observe que você precisa ser root para usar chattr(um $prompt sugere não-superusuário), embora você receba uma mensagem de erro diferente se chattr +afor suportada e você não for root.
Stéphane Chazelas
Quais são as opções de montagem na partição? Pode ser possível armazená-lo usando o xattr, que pode precisar da opção de montagem relevante? (O socumentation para XFS não mencionar muito sobre isso ou ...)
Gert van den Berg
Isso foi fechado no SF, então eu estou deixando-o aberto aqui
Michael Mrozek

Respostas:

8

O chattrutilitário foi escrito para sistemas de arquivos ext2 / ext3 / ext4. Como emite ioctls nos arquivos, cabe ao sistema de arquivos subjacente decidir o que fazer com eles. O driver XFS nos kernels Linux mais recentes suporta o mesmo FS_IOC_SETFLAGSioctl que o ext [234] para controlar sinalizadores como somente anexar, mas você pode estar executando um kernel mais antigo onde não possui (CentOS?). Tente usar o xfs_ioutilitário:

echo chattr +a | xfs_io test.log

Observe que, para o XFS, como para o ext [234], apenas o root pode alterar o sinalizador somente de acréscimo (mais precisamente, você precisa do CAP_LINUX_IMMUTABLErecurso).

Gilles 'SO- parar de ser mau'
fonte
1

Você tem permissões para fazer isso? De man 1 chattr:

Um arquivo com o conjunto de atributos `a 'só pode ser aberto no modo de acréscimo para gravação. Somente o superusuário ou um processo que possui o recurso CAP_LINUX_IMMUTABLE pode definir ou limpar esse atributo.

peterph
fonte
0

Como alternativa, você pode obter o mesmo usando o SELinux , é provável que ele esteja ativado e em execução se você estiver usando a distribuição compatível do Red Hat. Isso funciona em todos os sistemas de arquivos, o SELinux impede que os processos executem operações não permitidas.

Infelizmente, você precisa escrever uma política para seu aplicativo para permitir o acesso a todos os recursos do sistema, exceto anexando arquivos específicos. Isso pode ser um pouco desafiador se você fizer isso pela primeira vez, mas há uma vantagem nessa camada adicional de segurança.

Eu tenho um exemplo de como escrever uma regra de arquivo somente anexado nesta palestra: https://www.youtube.com/watch?v=zQcYXJkwTns

lzap
fonte