GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna vez una buena razón para ejecutar Sudo Su?

Para iniciar un shell raíz en máquinas donde la cuenta raíz está deshabilitada, puede ejecutar uno de los siguientes:

  • sudo -i :ejecute un shell de inicio de sesión interactivo (lee /root/.bashrc y /root/.profile )
  • sudo -s :ejecute un shell interactivo sin inicio de sesión (lee /root/.bashrc )

En el mundo de Ubuntu, muy a menudo veo sudo su sugerido como una forma de obtener un shell raíz. ¿Por qué ejecutar dos comandos separados cuando uno es suficiente? Por lo que puedo decir, sudo -i es equivalente a sudo su - y sudo -s es lo mismo que sudo su .

Las únicas diferencias parecen ser (comparando sudo -i a la izquierda y sudo su - a la derecha):

Y comparando sudo -s (izquierda) y sudo su (derecha):

Las principales diferencias (ignorando el SUDO_foo variables y LS_COLORS ) parece ser el XDG_foo variables del sistema en el sudo su versiones.

¿Hay algún caso en el que esa diferencia justifique el uso del poco elegante sudo su? ? ¿Puedo decirle a la gente con seguridad (como lo hago a menudo) que nunca tiene sentido ejecutar sudo su o me estoy perdiendo algo?

Respuesta aceptada:

Como dijiste en tu pregunta, la principal diferencia es el entorno.

sudo su - contra sudo -i

En caso de sudo su - es un shell de inicio de sesión, por lo que /etc/profile , .profile y .bashrc se ejecutan y se encontrará en el directorio de inicio de root con el entorno de root.

sudo -i es casi lo mismo que sudo su - El -i (simular inicio de sesión inicial) ejecuta el shell especificado por la entrada de la base de datos de contraseñas del usuario de destino como un shell de inicio de sesión. Esto significa que los archivos de recursos específicos de inicio de sesión como .profile , .bashrc o .login será leído y ejecutado por el shell.

sudo su contra sudo -s

sudo su llama a sudo con el comando su . Bash se llama shell interactivo sin inicio de sesión. Así que bash solo ejecuta .bashrc . Puede ver que después de cambiar a root todavía está en el mismo directorio:

[email protected]:~$ sudo su
[email protected]:/home/user#

sudo -s lee el $SHELL variable y ejecuta el contenido. Si $SHELL contiene /bin/bash invoca sudo /bin/bash , lo que significa que /bin/bash se inicia como shell sin inicio de sesión, por lo que todos los archivos de puntos no se ejecutan, pero bash en sí mismo lee .bashrc del usuario llamante. Su entorno sigue siendo el mismo. Su casa no será la casa de root. Así que eres root, pero en el entorno del usuario que llama.

Conclusión

El -i se agregó la bandera a sudo en 2004, para proporcionar una función similar a sudo su - , entonces sudo su - fue la plantilla para sudo -i y la intención de trabajar como él. Creo que realmente no importa cuál uses, a menos que el entorno no sea importante.

Relacionado:Linux – netfilter/iptables:¿por qué no usar la tabla sin formato?

Adición

Un punto básico que debe mencionarse aquí es que sudo fue diseñado para ejecutar solo un único comando con mayores privilegios y luego dejar esos privilegios a los originales. Nunca tuvo la intención de realmente cambiar el usuario y dejar abierto un shell raíz. Con el tiempo, sudo se amplió con tales mecanismos, porque la gente estaba molesta sobre por qué usar sudo delante de cada comando.

Entonces el significado de sudo fue abusado sudo estaba destinado a alentar al usuario a minimizar el uso de privilegios de root.

Lo que tenemos ahora es sudo se vuelve cada vez más popular. Está integrado en casi todas las distribuciones de Linux conocidas. La herramienta original para cambiar a otra cuenta de usuario es su . Para un veterano *nix de la vieja escuela, cosas como sudo puede parecer innecesario. Agrega complejidad y se comporta más probablemente con los mecanismos que conocemos de la familia de sistemas operativos de Microsoft y, por lo tanto, es contrario a la filosofía de simplicidad de los sistemas *nix.

Realmente no soy un veterano, pero también en mi opinión sudo siempre fue una espina en mi costado, desde el momento en que se presentó y siempre trabajé en torno al uso de sudo , si fuera posible. Soy muy reacio a usar sudo . En todos mis sistemas, la cuenta raíz está habilitada. Pero las cosas cambian, tal vez llegue el momento, cuando su quedará en desuso y sudo reemplaza su completamente.

Por lo tanto, creo que será mejor usar sudo Los mecanismos internos (-s , -i ) en lugar de confiar en una herramienta antigua como su .


Linux
  1. ¿Cómo hacer retroactivamente que un script se ejecute como raíz?

  2. ¿Cómo ejecutar Terminal como raíz?

  3. Ubuntu:ejecute el comando al iniciar con sudo

  4. ¿Cómo comprobar si tengo acceso a Sudo?

  5. Una vez que sudo su'd to root, ¿hay un comando para ver mi nombre de usuario?

Cómo ejecutar el comando Sudo sin contraseña

Cómo ejecutar comandos Sudo sin contraseña

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña

Debian 11.3 es tan bueno que simplemente no hay razón para no usarlo

Ejecute el comando cd como superusuario en Linux