Que mecanismo impede que qualquer usuário acesse os arquivos de qualquer outro usuário via root?

5

Em um sistema multiusuário, o que protege contra qualquer usuário que acesse qualquer outro arquivo de usuário via root? Como contexto, a questão é baseada em minha compreensão da seguinte forma:

Existem dois comandos relacionados aos privilégios de root, sudo e su . Com sudo , você não se torna outro usuário (incluindo root). sudo tem uma lista pré-definida de comandos aprovados que são executados em seu nome. Como você não está se tornando root ou outro usuário, basta se autenticar com sua própria senha.

Com su , você realmente se torna root ou outro usuário. Se você quer se tornar usuário Bob, precisa da senha de Bob. Para se tornar root, você precisa da senha de root (que seria definida em um sistema multiusuário).

ref's: howtogeek.com :

su switches you to the root user account and requires the root account’s password. sudo runs a single command with root privileges – it doesn’t switch to the root user.

e

If you execute the su bob command, you’ll be prompted to enter Bob’s password and the shell will switch to Bob’s user account; Similar description at computerhope.com

tecmint.com :

‘sudo‘ is a root binary setuid, which executes root commands on behalf of authorized users

Se você se tornar root, terá acesso a tudo. Qualquer pessoa não autorizada a acessar a conta de outro usuário não receberia a senha de root e não teria as definições sudo permitindo isso.

Isso tudo faz sentido até que você olhe para algo como este link , que é um tutorial para usar sudo -V e, em seguida, sudo su - para se tornar root usando apenas sua própria senha.

Se algum usuário pode se tornar root sem a senha do root, qual mecanismo protege os arquivos do usuário contra acesso não autorizado?

    
por fixer1234 06.10.2014 / 16:16

3 respostas

12

A diferença principal entre sudo e su é o mecanismo usado para autenticar. Com su o usuário deve saber a senha root (que deve ser um segredo bem guardado), enquanto com sudo o usuário usa sua própria senha. Para impedir que todos os usuários causem o caos, os privilégios descarregados pelo comando sudo podem, felizmente, ser configurados usando o arquivo /etc/sudoers .

Ambos os comandos executam um comando como outro usuário, geralmente root .

sudo su - funciona no exemplo fornecido porque o usuário (ou um grupo no qual o usuário é membro) está configurado no arquivo /etc/sudoers . Ou seja, eles são permitidos para usar sudo . Armado com isso, eles usam o sudo para ganhar temporariamente root privileges (que é o padrão quando nenhum nome de usuário é fornecido) e como root iniciam outro shell ( su - ). Eles agora têm root de acesso sem saber a senha de root .

Por outro lado, se você não permitir que o usuário use sudo , eles não poderão sudo su - .

As distribuições geralmente têm um grupo (geralmente chamado de wheel ) cujos membros podem usar sudo para executar todos os comandos. Removê-los deste grupo significa que eles não podem usar sudo por padrão.

A linha em /etc/sudoers que faz isso é:

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

Embora a remoção de usuários desse grupo torne seu sistema mais seguro, também é necessário que você (ou outros administradores do sistema) execute mais tarefas administrativas no sistema em nome de seus usuários.

Um compromisso mais sensato configuraria sudo para dar a você um controle mais refinado de quem pode usar sudo e quem não é, junto com quais comandos eles podem usar (em vez do padrão < em> todos comandos). Por exemplo,

## Allows members of the users group to mount and unmount the
## cdrom as root
%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

(útil somente com a linha de rolagem anterior comentada ou sem usuários no grupo wheel ).

Presumivelmente, as distribuições não vêm com essa configuração mais refinada como padrão, pois é impossível prever quais são os requisitos do administrador para seus usuários e sistema.

A linha final é - aprenda os detalhes de sudo e você pode parar sudo su - enquanto permite outros comandos que não dão ao usuário root shell acesso ou acesso a comandos que podem alterar os arquivos de outros usuários. Você deve considerar seriamente quem você permite usar sudo e em que nível.

AVISO: Sempre use o comando visudo para editar o arquivo sudoers enquanto ele verifica suas edições e tenta salvá-lo da situação embaraçosa em que um arquivo mal configurado (devido a erro de sintaxe) impede que você use sudo para editar erros. Isto é especialmente verdade no Debian / Ubuntu e nas variantes em que a conta root está desativada por padrão.

    
por 06.10.2014 / 16:27
7

There are two commands related to root privileges, SUDO and SU. With SUDO, you don't become another user (including root). SUDO has a pre-defined list of approved commands that it executes on your behalf (this addresses what I asked in the comment about how you give selected users selective privileges). Since you are not becoming root or another user, you just authenticate yourself with your own password.

Isso está incorreto. A maior diferença entre su e sudo é que você insere sua própria senha em vez da senha do usuário de destino e que sudo é mais flexível. O ponto principal de ambos é permitir que você se torne outro usuário. su pode executar um comando específico e sudo pode iniciar um shell interativo, eles têm modos padrão diferentes.

Normalmente, você tem um grupo, chamado convencionalmente de wheel , que pode execute qualquer comando como qualquer usuário. Às vezes, você quer restringir um usuário a executar apenas um comando específico como um usuário específico, e isso é o que é mais flexível sobre sudo em comparação com su .

With SU, you actually become root or another user. If you want to become user Bob, you need Bob's password. To become root, you need the root password (which would be defined on a multi-user system).

Você pode se tornar qualquer usuário com sudo também, com sua própria senha, desde que as regras em /etc/sudoers estejam configuradas para permitir. sudo permite restringir o comando que um usuário pode executar tho, sim, e impede que você tenha que divulgar as senhas de usuários específicos, ou mesmo não ter uma senha em usuários específicos que não permitam logins regulares.

If you become root, you have access to everything. Anyone not authorized to access another user's account would not be given the root password and would not have SUDO definitions allowing it.

This all makes sense until you look at something like this link, which is a tutorial for using SUDO -V and then SUDO SU - to become root using only your own password.

If any user can become root without the root password, what mechanism protects user files from unauthorized access? First of all, sudo -V prints the version of your sudo binary, and sudo -v validates the cached credentials and are irrelevant to the later part.

Em segundo lugar, sudo su é uma coisa bastante tola, porque já existe uma opção sudo para iniciar um shell interativo como o usuário especificado ( sudo -i ) e executando uma ferramenta de autorização de privilégio ( sudo ) para executar outra ferramenta de autorização de privilégios ( su ) é realmente bobo.

Em terceiro lugar, "qualquer usuário" deve definitivamente NÃO ser capaz de se tornar root. Se eles podem todo o seu sistema é completamente inseguro. o usuário root é todo poderoso e pode fazer qualquer coisa, e executar um comando como root é apenas um dos usos de sudo , é uma ferramenta de autorização geral que permite que um usuário específico execute um comando específico como um usuário específico.

    
por 06.10.2014 / 20:31
2

Resposta curta é que você não pode.

Se você autorizar alguém (por exemplo, simth) no grupo de sudoers, ele poderá emitir um usuário sudo su - e, em seguida, tornar-se root e, em seguida, anoter (por exemplo, wesson). Esta é uma maneira alternativa de fornecer a senha do root para simth. No entanto, ele (smith) pode mudar a senha raiz.

Observa também que

1) você deve especificar em /etc/sudoers uma linha como

%sudo   ALL=(ALL:ALL) ALL

2) smith (no exemplo acima) deve estar no grupo sudo.

esta não é uma configuração padrão.

Você deve confiar completamente em alguém (smith) para fornecer sudo su - access.

    
por 06.10.2014 / 16:28