Como configurar uma conta para ter permissões de leitura em todos os arquivos em um sistema, incluindo arquivos raiz?

1

Eu preciso criar uma espécie de conta de "operador de backup", que pode ler todos os arquivos em um sistema para copiar para um sistema de backup sem a permissão para modificar nenhum deles, incluindo aqueles que pertencem a root .

A conta root parece ser a única capaz de fazer isso, mas a conta root não é impedida de executar o que quiser. A outra opção que posso imaginar é colocar uma conta em um grupo que, como direitos de leitura, faz dessa conta um membro de cada grupo de usuários. As permissões básicas rwx no Linux não parecem criadas para isso.

O Linux tem algo mais sofisticado para tal finalidade, como algo que as ACLs podem oferecer?

As permissões são para um usuário que efetua login a partir de um servidor de backup remoto e faz o backup de todos os arquivos para o servidor remoto. Se o servidor de backup ficar comprometido, essa conta não poderá efetuar login no servidor do qual está sendo feito backup e causar algum dano. As contas no servidor submetido a backup também não podem fazer o login no servidor de backup e causar algum dano se forem comprometidas.

    
por vfclists 05.08.2018 / 17:36

2 respostas

2

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.)

    
por 05.08.2018 / 18:13
0

Você está procurando por sudo

sudo é um programa para sistemas operacionais de computadores semelhantes ao Unix que permite aos usuários executar programas com privilégios de segurança de outro usuário

    
por 05.08.2018 / 17:46