Estaba leyendo el siguiente código:
$ sudo bash
# cd /home/
# ./gitpull.sh
¿Por qué necesito la primera línea? ¿Qué hace exactamente? ¿Qué pasaría si simplemente lo hiciera $ sudo
en lugar de $ sudo bash
?
Respuesta1
Inicia un shell bash como root
usuario de nivel. Lo necesita porque normalmente los usuarios normales no pueden acceder/home/
El peligro de lo que está haciendo es que se encuentra en un shell raíz: puede estropear su máquina con bastante facilidad.
Respuesta2
Sería mucho mejor que hicieras:
$ sudo sh -c 'cd /home; ./gitpull.sh'
Porque los comandos invocados como root se registrarán. Invocar un shell directamente a través de sudo evita todos los beneficios de seguridad de sudo y debe evitarse.
Respuesta3
sudo <shell>
, si funciona, delata una mala instalación de sudo y una posible debilidad de seguridad.
sudo
no debe configurarse para permitir comandos arbitrarios como shell; El propósito de sudo
es permitir a los usuarios no root autenticados ejecutar ciertos comandos como root, sin conocer la contraseña de root.
Si sudo bash
se le permite a cualquier usuario, ese usuario es root simplemente por conocer su propia contraseña.
Si un atacante obtiene la contraseña de cualquiera de las cuentas que pueden hacerlo sudo bash
, el atacante tiene root.
La forma correcta de hacer el equivalente a sudo bash
(obtener un shell raíz) es su
y luego proporcionar la contraseña de raíz, no la suya.
Respuesta4
sudo
permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el superusuario o root).
bash
inicia un nuevo shell bash.
Entonces, sudo bash
inicia un nuevo shell bash con el privilegio de seguridad del usuario root.