Como o usermod permite que você ignore o sudo?

-1

Recentemente, minha equipe teve um show-n-tell e apresentei minhas descobertas no Docker . Eu expliquei como você pode instalar o Docker com:

curl -sSL https://get.docker.com/ | sh

Depois, expliquei que, com essa instalação, você precisa prefixar todos os comandos do Docker com sudo (por exemplo, sudo docker info ), a menos que você execute:

sudo usermod -aG docker myUser

Depois de fazer isso, basta executar, digamos, docker info .

Outro engenheiro júnior me perguntou como esse comando usermod funcionava, e eu expliquei como entendo usuários / grupos do Linux:

  • Todos os binários do Docker estão instalados no sistema pertencente a um grupo chamado docker
  • Como myUser não é, por padrão, um membro de docker , ele não tem permissões de rwx para fazer nada com os binários do Docker
  • Portanto, a solução é usar sudo , que lhe dá permissão de root para o comando especificado, ou atribuir myUser à associação ao docker group

Quando eu expliquei desta forma, um engenheiro sênior me disse de forma abrupta que eu estava errado e que " é um pouco mais complicado do que isso. "

Então eu pergunto: estou entendendo errado o modelo de segurança do Linux aqui, e o engenheiro sênior está correto? Se sim, o que estou perdendo (e o que diabos é "tão complicado")? Ou estou correto, nesse caso, alguém pode me indicar alguma documentação sólida para provar isso?

    
por Zac 30.09.2015 / 01:59

2 respostas

-1

Se você está falando sobre o quão seguro é o Linux e a Vulnerabilidade, ele pode ter sim. Se eu estou entendendo o que você está perguntando com clareza suficiente a resposta para você é sim e minha explicação é que o Linux, independentemente da distribuição que eu saiba, pode pegar vírus como qualquer outro sistema operacional dependendo do que você instala ou não. Pegue o flash player para obter exemplos, mesmo no Windows, ele fornece muitas falhas de segurança no sistema operacional, tornando-o mais vulnerável do que antes, quando estava fora da caixa

Se você executou o linux sem o desktop e todos os outros privilégios sofisticados, seria se eu não me engano ser mais seguro do que com todos os nossos aplicativos favoritos e tais Não sei se minha resposta ajudou, mas espero que isso tenha acontecido

    
por Goat 30.09.2015 / 02:19
4
% bl0ck_qu0te%

incorreto. O binário docker é de propriedade de root:root :

$ stat 'which docker'
  File: ‘/usr/bin/docker’
  Size: 16296881    Blocks: 31832      IO Block: 4096   regular file
Device: fc00h/64512d    Inode: 143202      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
% bl0ck_qu0te%

Os binários são legíveis e executáveis por todos.

% bl0ck_qu0te%

O serviço Docker usa um soquete para escutar comandos. O socket é tipicamente:

  • localizado em /var/run/docker.sock
  • de propriedade de root:docker
  • e gravável em grupo, mas não legível ou gravável por outros:

Por exemplo:

$ stat /var/run/docker.sock
  File: ‘/var/run/docker.sock’
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 10h/16d Inode: 13619       Links: 1
Access: (0660/srw-rw----)  Uid: (    0/    root)   Gid: (  997/  docker)

Essa é por que ser membro do grupo docker permite executar comandos docker .

Observe que você pode especificar qual grupo deve ser usado como um parâmetro para o docker service. De man docker :

   -G, --group=""
 Group  to assign the unix socket specified by -H when running in dae‐
   mon mode.
 use '' (the empty string) to disable setting of a group.  Default  is
   docker.

Portanto, não tem docker , mas é docker por padrão.

    
por muru 30.09.2015 / 08:36