Suponho que, normalmente, basta executar o utilitário de backup como raiz, por meio de cron
ou por meio de um comando forçado em uma chave SSH, e depois confiar no utilitário para não fazer nada perigoso.
O uso de ACLs para conceder permissões a todos os arquivos no sistema seria um pouco complicado, já que você precisaria ter as ACLs definidas para cada arquivo individualmente (como as ACLs POSIX não têm realmente um conceito de dar acesso a uma subárvore, você só tem ACLs padrão que são copiadas automaticamente para novos arquivos). E os proprietários desses arquivos podem simplesmente remover essas permissões, acidentalmente ou de propósito. Programas conscientes de segurança (como SSH ou GPG) também podem ficar um pouco irritados se perceberem que seus arquivos podem ser lidos por alguém (mas não tenho certeza se esses dois verificam ACLs).
No entanto, existe um caminho. O sistema do Linux contém uma capacidade apenas para isso:
CAP_DAC_READ_SEARCH
- Bypass file read permission checks and directory read and execute permission checks;
- invoke
open_by_handle_at(2)
;- use the
linkat(2)
AT_EMPTY_PATH
flag to create a link to a file referred to by a file descriptor.
(não tenho certeza de como o último deles está relacionado aos outros, mas vou ignorá-lo ...)
Se você tem um utilitário específico que deseja ter esse recurso, é possível fornecê-lo a ele com setcap
:
# setcap "CAP_DAC_READ_SEARCH+ep" /path/to/somecmd
Apesar de agora, qualquer um que possa executar o binário /path/to/somecmd
, terá acesso a essa habilidade. Então, você provavelmente deseja proteger esse arquivo específico do acesso por usuários arbitrários. (Assuma a propriedade de root:backup
, com permissões rwx--x---
, em que backup
é o grupo de usuários que devem ser capazes de executá-lo.)