Saltar al contenido

su vs sudo -s vs sudo -i vs sudo bash

Solución:

Con su, usted volverse otro usuario: root de forma predeterminada, pero potencialmente otro usuario. Si usted dice su -, su entorno también se reemplaza con el entorno de inicio de sesión de ese usuario, por lo que lo que ve es indistinguible de iniciar sesión como ese usuario. No hay forma de que el sistema pueda saber lo que hace mientras su‘d a otro usuario de las acciones de ese usuario cuando inician sesión.

Las cosas son muy diferentes con sudo:

  • Los comandos que ejecutas sudo ejecutar como usuario de destino: root de forma predeterminada, pero modificable con -u – pero registra los comandos que ejecuta a través de él, etiquetándolos con su nombre de usuario para que se pueda asignar la culpa después. 🙂

  • sudo es muy flexible. Puede limitar los comandos que un determinado usuario o grupo de usuarios puede ejecutar, por ejemplo. Con su, es todo o nada.

    Esta función se utiliza normalmente para definir roles. Por ejemplo, puede definir un grupo de “copias de seguridad” que se permita ejecutar dump y tar, cada uno de los cuales necesita acceso de root para realizar una copia de seguridad adecuada del disco del sistema.

    Menciono esto aquí porque significa que puedes darle a alguien sudo privilegios sin darles sudo -s o sudo bash habilidades. Solo tienen los permisos que necesitan para hacer su trabajo, mientras que con su han corrido todo el sistema. Sin embargo, debes tener cuidado con esto: si le das a alguien la capacidad de decir sudo vi, por ejemplo, pueden desembolsar vi y tener efectivamente el mismo poder que con sudo -s.

  • Debido a que toma la contraseña del sudoer en lugar de la contraseña de root, sudo aísla el permiso entre varios sudoers.

    Esto resuelve un problema administrativo con su, que es que cuando cambia la contraseña de root, todos los que tenían que conocerla para usar su tenía que ser dicho. sudo permite que las contraseñas de los sudoers cambien de forma independiente. De hecho, es común bloquear con contraseña la cuenta del usuario raíz en un sistema con sudo para forzar que todas las tareas de administrador de sistemas se realicen a través de sudo. En una organización grande con muchos sudoers confiables, esto significa que cuando uno de los administradores de sistemas se va, no tiene que cambiar la contraseña de root y distribuirla a los administradores que permanecen.

La principal diferencia entre sudo bash y sudo -s es eso -s es más corto y le permite pasar comandos para ejecutar en el shell predeterminado de su usuario de un par de formas:

  1. Puedes decir sudo -s some-command la cual recorre some-command bajo tu caparazón. Es básicamente una abreviatura de sudo $SHELL -c some-command.

  2. En su lugar, puede pasar los comandos a la entrada estándar del shell, como sudo -s < my-shell-script. Puede usar esto con un heredoc para enviar varios comandos a un solo sudo llamar, evitando la necesidad de escribir sudo repetidamente.

Ambos comportamientos son opcionales. Con mucha más frecuencia, das -s solo, por lo que solo ejecuta el shell de su usuario de forma interactiva. En ese modo, se diferencia de sudo bash en que podría ejecutar un shell diferente a bash, ya que se ve primero en el SHELL variable de entorno, y luego, si no está configurada, en la configuración de shell de inicio de sesión de su usuario, generalmente en /etc/passwd.

El caparazón pasa por sudo -s hereda su entorno de usuario actual. Si lo que realmente desea es un entorno limpio, como el que obtiene justo después de iniciar sesión, lo que desea es sudo -i, una adición relativamente reciente a sudo. Mas o menos, sudo -i Es para sudo -s como su - Es para su: restablece todas las variables de entorno clave excepto algunas y lo envía de regreso al directorio de inicio de su usuario. Si no le da también comandos para que se ejecute en ese shell a través de la entrada estándar o sudo -i some-command, ejecutará ese shell como un shell de inicio de sesión interactivo, por lo que los scripts de inicio del shell de su usuario (p. ej. .bash_profile) vuelve a correr.

Todo esto hace sudo -i considerablemente más seguro que sudo -s. ¿Por qué? Porque si alguien puede modificar tu entorno antes sudo -s, podrían provocar la ejecución de comandos no deseados. El caso más obvio es modificar SHELL, pero también puede suceder de forma menos directa, como a través de PAGER si usted dice man foo mientras que bajo sudo -s.

Podría decir: “Si pueden modificar PAGER, pueden modificar PATH, y luego pueden simplemente sustituir un mal sudo programa “, pero alguien suficientemente paranoico puede decir /usr/bin/sudo /bin/bash para evitar esa trampa. Probablemente no seas tan paranoico como para evitar las trampas en todos los otro variables de entorno susceptibles, sin embargo. ¿También se acordó de comprobar EDITOR, por ejemplo, antes de ejecutar cualquier comando VCS? Por lo tanto sudo -i.

Porque sudo -i también cambia su directorio de trabajo al directorio de inicio de su usuario, es posible que aún desee usar sudo -s para aquellas situaciones en las que sabe que desea permanecer en el mismo directorio en el que estaba cdte metiste cuando corriste sudo. Todavía es más seguro sudo -i y cd Sin embargo, de vuelta a donde estabas.

De una publicación de ubuntuforums que hice hace un tiempo:

Considere el siguiente experimento:

[email protected]:~% sudo su
[sudo] password for applic:
[email protected]:/home/applic# env > /tmp/sudo_su_env
[email protected]:/home/applic# exit
exit
[email protected]:~% sudo -s
applic .bashrc read...
[email protected]:~% env >/tmp/sudo_s

Aquí están las diferencias que encontré:

Con sudo -s:

HOME=/home/applic
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
reads $USER's ~/.bashrc

Con sudo su:

HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
reads /etc/environment
reads /root/.bashrc

Note la diferencia en $HOME. Ser root y tener $HOME establecido en la casa del usuario normal puede causar problemas. Por ejemplo, si ejecuta una aplicación gráfica, el usuario normal ~/.Xauthority puede ser sobrescrito por root. Esto causa los problemas normales del usuario más adelante, como no poder ejecutar ciertas aplicaciones gráficas a través de cron.

Para resumir:

                                     corrupted by user's 
        HOME=/root  uses root's PATH     env vars
sudo -i     Y       Y[2]                 N
sudo -s     N       Y[2]                 Y
sudo bash   N       Y[2]                 Y
sudo su     Y       N[1]                 Y
  1. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

    probablemente establecido por /etc/environment

  2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

La conclusión es sudo -i es el comando adecuado para ejecutar cuando desea un shell raíz que no esté contaminado por el entorno del usuario.

su (sbruja tuser o ssustituir tuser) le permite cambiar de usuario. su básicamente inicia otra instancia de shell con los privilegios del usuario previsto. De forma predeterminada, le cambia al root usuario, si queremos cambiar de usuario específico, debemos pasar al usuario de la siguiente manera:

$ su bob  # switches to bob (requires bob's password)

su - significa que las variables de entorno se restablecerán a la raíz y su significa variables de entorno como usuario antiguo.

por ejemplo: directorio de inicio de root si usa su - o directorio de inicio de usuario antiguo si usa su.

sudossuperior tuser hacer) es una utilidad de línea de comandos que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario, por defecto es superusuario, es decir. root. Utiliza un archivo de configuración /etc/sudoers que enumera qué usuarios tienen derechos para acciones específicas

sudo debe leerse como / ˈSuːduː /. sintaxis sudo command es decir sbruja tuser y hacer este comando.

  • su es equivalente a sudo -i y simula un inicio de sesión en la cuenta raíz. Tu directorio de trabajo será /root, y leerá la raíz .profile etc. El indicador cambiará de $ a #, lo que indica que tiene acceso de root.

  • sudo -s lanza un shell como root, pero no cambia su directorio de trabajo.

  • sudo bash dónde bash es un comando para correr con sudo. Este comando se ejecuta
    bash como superusuario.

  • Utilizando sudo se puede registrar todo lo que alguien hace.
  • Utilizando sudo evita que un usuario tenga que conocer la contraseña de root.
  • Utilizando sudo podemos limitar la ejecución de los comandos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *