Apenas permite que o root altere o sistema de arquivos

2

O VPS I manage usa um sistema de backup diário de arquivo rsync de link físico simples salvo em um arquivo de loop. Isso é ótimo, porque cada backup ocupa apenas tanto espaço quanto o que foi alterado a cada dia, e todas as permissões de usuário / grupo são mantidas.

Eu gostaria de dar aos usuários acesso direto aos seus diretórios pessoais em cada backup, mas estou preocupado com a destruição intencional ou acidental de dados de backup, já que agora eles podem alterar, destruir ou adicionar dados de backup que eles originalmente possuído. Eu estive procurando uma maneira de montar este sistema de arquivos similar a uma opção de montagem ro, mas algo que ainda permitiria acesso rw ao root, mas eu não tive absolutamente nenhuma sorte. Em outras palavras, quero que os usuários possam visualizar e copiar os dados de backup sem realmente poder alterá-los e que esses dados mantenham as permissões originais.

Não tenho preferências reais no que diz respeito ao sistema de arquivos, desde que seja um sistema de arquivos unix padrão que possa preservar permissões, suportar hard links e negar acesso de gravação aos usuários sem retirar a permissão w de tudo.

    
por Uejji 09.04.2012 / 06:36

1 resposta

3

Monte os backups em um local acessível apenas ao usuário root e torne uma montagem de ligação somente leitura acessível aos usuários. Por exemplo,

% chown root:root /root/.private
% chmod 700 /root/.private
% mount -o rw [...] /root/.private/mnt

% mount --bind /root/.private/mnt /export/mnt
% mount -o remount,ro /export/mnt

Agora, /root/.private/mnt é de leitura / gravação apenas para raiz e /export/mnt é somente leitura para todos.

As montagens de ligação somente leitura requerem o kernel Linux 2.6.26 ou superior. Observe que um remount deve ser executado após a ligação para alterar as opções de montagem.

Eu não sei de nenhuma maneira de realizar os pedidos em fstab ; meu rc.local está configurado para chamar um script parecido com isto:

#!/usr/bin/perl -an
BEGIN{@ARGV=qw(/etc/fstab /proc/mounts)}/#/,or$o{$F[1]}[@ARGV]=",$F[3],"}{$$b[0]=~/,rw,/&&$$b[1]=~/,ro,/&&system qw(mount -o remount,ro),$a while($a,$b)=each%o

Código bastante terrível (mostra que eu participo de PCG com muita frequência para meu próprio bem), mas isso nunca foi planejado para ser compartilhado ... basicamente força remount,ro em tudo que é ro em /etc/fstab , mas é rw em /proc/mounts . Eu tenho o script porque eu tenho uma dúzia deles; se você tem apenas um, eu simplesmente codifico em um script de shell simples.

    
por 09.04.2012 / 06:51