O usuário não-root tornou-se root assim que executou com sucesso sudo
(dado o suposto usuário root
de destino); eles começaram a executar vi
como root. Quando você pergunta vi
para um shell, ele executa obedientemente um shell, como o usuário atual - root! Eu devo esclarecer que você não deve "sair" do vi com o comando :sh
, como se estivesse pedindo por um shell. Saia com :q
.
O Linux permite tal funcionalidade porque é especificamente o que sudo
pretende fazer! Talvez você tenha visto a palestra que o sudo dá:
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
O sudo oferece um "aumento de velocidade" limitado quando se trata de conceder acesso "ALL", na forma do operador de negação !
, geralmente demonstrado como:
jill SERVERS = /usr/bin/, !SU, !SHELLS
onde jill tem permissão para executar programas de / usr / bin, mas não qualquer coisa listada nos aliases SU ou SHELLS.
A página man sudoers tem uma seção inteira "Notas de segurança" quando se trata para conceder acesso em larga escala via sudo e, em seguida, tentar restringi-lo.
Limitations of the ‘!’ operator
It is generally not effective to “subtract” commands from ALL using the ‘!’ operator. A user can trivially circumvent this by copying the desired command to a different name and then executing that.
e
In general, if a user has sudo ALL there is nothing to prevent them from creating their own program that gives them a root shell (or making their own copy of a shell) regardless of any ‘!’ elements in the user specification.
e mais pertinente:
Preventing shell escapes
Once sudo executes a program, that program is free to do whatever it pleases, including run other programs. This can be a security issue since it is not uncommon for a program to allow shell escapes, which lets a user bypass sudo's access control and logging. Common programs that permit shell escapes include shells (obviously), editors, paginators, mail and terminal programs