He visto muchos comentarios aquí en Ask Ubuntu con respecto a la preferencia en el uso en sudo -s
lugar de sudo su
.
Para mí, esos dos comandos hacen exactamente lo mismo. Pero, ¿por qué se sudo -s
supone que es mejor?
command-line
sudo
su
fitojb
fuente
fuente
sudo -i
osudo su
es mejor quesudo -s
por las razones mencionadas aquí: ubuntuforums.org/showpost.php?p=6188826&postcount=4 También: este es un posible duplicado de superuser.com/questions/29/…Respuestas:
Creo que
sudo -s
no es "mejor", es simplemente diferente.sudo -s
mantiene su directorio $ HOME, por lo que cuando inicia programas, usarán sus archivos de configuración (y no la raíz), etc. Desventaja: también pueden cambiar la propiedad de sus archivos en el directorio $ HOME, un ejemplo típico es el
.Xauthority
archivo, pero yo Nunca he tenido un problema con eso.sudo su
osudo -i
los programas usarán el directorio de inicio de la raíz y sus archivos de configuración. Esto puede ser más intuitivo, pero también significa que no usará ninguna configuración que haya establecido para usted (alias, historial de bash, ...).
fuente
Porque
sudo -s
no cambiará las variables de su entorno, especialmente$HOME
, lo que se mantendráHOME=/home/USER
. Si usasudo su
esto, cambiará a loHOME=/root
que puede tener efectos secundarios negativos cuando los programas que comience intenten acceder al directorio de inicio de su usuario.Entonces, básicamente es como
sudo
vsgksudo
cuando se ejecutan programas gráficos.fuente
Además de las diferencias ya mencionadas con las variables de entorno, me parece una
sudo su
tontería y un desperdicio porque le estás pidiendosudo
que se ejecutesu
como root y le pidas que ejecute un shell como root. ¿Por qué pedirle a un programa que le pida a un programa que le proporcione un shell raíz, cuando puede hacer que el primer programa le dé ese shell? ¿Importa eso en algún sentido práctico? No, solo soy pedante.fuente
sudo su
a ser root, sí, solo vesudo -i
, por ejemplo. Pero ayuda cuando se quiere llegar a ser un usuario diferente:sudo su - myuser
.sudo -i
cambiará al/root
directorio ysudo su
permanecerá en el directorio en el que se encuentra.sudo -u myuser
.No estaría de acuerdo con otras respuestas al considerar los casos en que desea iniciar sesión como un usuario que no tiene un shell. Ese es un caso muy común con usuarios asignados a servicios.
El uso de "sudo su" iniciará el shell especificado por el usuario. Sin embargo, en el caso de un usuario asignado al proceso del servidor, el shell es / usr / bin / false y el registro fallará. En su lugar, debe ingresar como:
eso lo conectará y cd a su ruta de inicio, incluso si el usuario no tiene un shell asignado
fuente