Cuando estoy haciendo algo que requiere que la raíz se escriba decenas de veces seguidas, prefiero cambiar mi sesión a una sesión raíz. En los diversos tutoriales e instrucciones que he utilizado en Internet, veo sudo su, sudo su -, sudo -iy sudo /bin/bashse utiliza para abrir una sesión de raíz, pero no estoy claro sobre la diferencia entre estos y cuándo o si lo que importa de diferencia.
¿Alguien puede aclarar esto por mí?
command-line
bash
sudo
su
Pablo
fuente
fuente

sudo -sysudo su.Respuestas:
Para explicar esto, necesita saber qué hacen los programas:
su- El comandosuse usa para cambiar a otro usuario ( s witch u ser), pero también puede cambiar al usuario raíz invocando el comando sin ningún parámetro.sule pide la contraseña del usuario para cambiar, después de escribir la contraseña que cambió al entorno del usuario.sudo-sudoestá destinado a ejecutar un solo comando con privilegios de root. Pero a diferencia desuesto, le solicita la contraseña del usuario actual. Este usuario debe estar en el archivo sudoers (o en un grupo que esté en el archivo sudoers). De forma predeterminada, Ubuntu "recuerda" su contraseña durante 15 minutos, para que no tenga que escribirla cada vez.bash- Una interfaz de texto para interactuar con la computadora. Es importante comprender la diferencia entre inicio de sesión, no inicio de sesión, shells interactivos y no interactivos:Tipos de conchas:
Entonces los casos son:
sudo suLlamadassudocon el comandosu. Bash se llama como shell interactivo sin inicio de sesión. Entonces bash solo se ejecuta.bashrc. Puede ver que después de cambiar a root todavía está en el mismo directorio:sudo su -Esta vez se trata de un shell de entrada, por lo que/etc/profile,.profiley.bashrcse ejecutan y se encontrará en el directorio inicial de la raíz con el medio ambiente de la raíz.sudo -iEs casi lo mismo que lasudo su -opción -i (simular inicio de sesión inicial) ejecuta el shell especificado por la entrada de la base de datos de contraseñas del usuario objetivo como un shell de inicio de sesión. Esto significa que los archivos de recursos específicos de inicio de sesión como.profile,.bashrco.loginserán leídos y ejecutados por el shell.sudo /bin/bashEsto significa que llamassudocon el comando/bin/bash./bin/bashse inicia como un shell sin inicio de sesión, por lo que no se ejecutan todos los archivos de puntos, sino que bash mismo lee.bashrcal usuario que llama. Tu entorno permanece igual. Su hogar no será el hogar de la raíz. Entonces eres root, pero en el entorno del usuario que llama.sudo -slee la$SHELLvariable y ejecuta el contenido. Si lo$SHELLcontiene/bin/bash, invocasudo /bin/bash(ver arriba).Cheque:
Para verificar si está en un shell de inicio de sesión o no (funciona solo en bash porque
shoptes un comando incorporado):fuente
sudopermite a un usuario permitido ejecutar un comando como superusuario u otro usuario . De todos modos, +1 por tu esfuerzo.rootsesión de usuario (en lugar de usarsudo) es cuando estoy haciendo algo que requiere un uso intensivo derootprivilegios, como cuando instalo algo nuevo o realizo una reconfiguración importante . He estado usandosudo /bin/bash, pero aparentemente ese método tiene una mala reputación por alguna razón que no entiendo.sudo -ise sugiere. Lea aquí: ubuntuforums.org/showthread.php?t=1817402 y aquí: unix.stackexchange.com/questions/98531/…Para buscar diferencias, puede controlar el entorno resultante entre las diferentes invocaciones.
Puede encontrar algunas diferencias "pequeñas" en algunas variables críticas:
PATH`LD_LIBRARY_PATH`LD_PRELOADo alguna diferencia en ~ /. manejo de archivos de puntos (
~/.config).Considere también la propiedad de los archivos de registro basados en $ HOME (
~/.xsession.errors, etc.) o las cookies xauth (~/.Xauthority) que generan los comandos.Pruebe estos comandos:
fuente