¿Por qué no puedo ejecutar `su`? (¿y cómo debo hacerlo?)

33

Cada vez que intento emitir sume sale esto:

$ su  
Password:  
su: Sorry

No hace falta decir que estoy ingresando la contraseña de administrador correcta con la que funciona sudo. Lo que quiero es no tener que ingresar sudocada vez.

Petruza
fuente

Respuestas:

34

En MacOS X, el usuario root está deshabilitado de manera predeterminada, por sulo tanto , no funcionará. Como otros han dicho, es mejor usarlo sudo.

Si se debe permitir que el usuario root, consulte la nota técnica de Apple: Activación y utilizando el usuario "root" en Mac OS X .

ghoppe
fuente
13
sudo sutodavía funciona, por lo que no está realmente deshabilitado. Simplemente no tiene contraseña.
Nombre falso
@FakeName ¡Esta es la puerta trasera más divertida! Si puedes correr sudo su, ¿cuál es el punto de inhabilitación suentonces?
Kolob Canyon
3
@KolobCanyon: el objetivo no es realmente "deshabilitar su", es evitar el inicio de sesión de root . Al no permitir el inicio de sesión como root, evita un montón de posibles problemas de seguridad. No permitir que alguien pueda sudohacerlo sues un poco tonto. Básicamente, susolo cambia el ID de usuario actual y ejecuta un comando (un shell, si no se especifica). Si el ID de usuario ya es 0 (raíz), como cuando se ejecuta con sudo, no hay nada que pueda hacer, por lo que solo ejecuta el shell. Puede obtener un efecto similar haciendo sudo bash.
Nombre falso el
1
@FakeName Sigue confundido. ¿Cuál es la diferencia entre iniciar sesión como root y ejecutar 'sudo su'? ¿No es efectivamente el mismo nivel?
Kolob Canyon
2
@KolobCanyon - No Básicamente, si deshabilita el inicio de sesión , significa que si hay una vulnerabilidad en el proceso de inicio de sesión, un hacker no puede usarlo para obtener root directamente. Básicamente, mueve el compromiso raíz requerido de "compromiso de inicio de sesión" a "inicio de sesión comprimido para cuenta de usuario + privesc". Básicamente se hace como una defensa en profundidad.
Nombre falso
14

Tienes dos opciones. Lo primero es usar sudo -s: esto le dará acceso de superusuario, pero seguirá siendo 'usted mismo' (por así decirlo), por lo que cosas como este ~seguirán siendo su directorio de inicio. Alternativamente, puede usar sudo su, lo que le proporciona un shell como el usuario raíz real de su Mac.

Kyle Cronin
fuente
55
Apple Way (tm) se usa sudopara ejecutar comandos que requieren privilegios elevados, no para cambiar a un shell raíz y trabajar desde eso.
Ian C.
3
@ Ian C. - No, esa es realmente la forma de Unix. Apple solo lo usa porque también está basado en * nix.
Nombre falso
@Nombre falso: Apple pasa por grandes dificultades para nunca hablar o exponer el shell raíz a los usuarios. Se podría decir que llevan el sudoethos al extremo. Pero lo que sea: semántica. No use shells de raíz en OS X.
Ian C.
1
@ Ian C - Apple no hace mucho más que los diseñadores * nix, Apple simplemente no habla mucho de eso. En ambos casos, está ahí, solo con cosas como Linux, te dicen cómo usarlo fácilmente. Si eso lo hace más utilizado , no indica una diferencia de arquitectura subyacente.
Nombre falso
1

Por ejemplo, si necesita mover archivos o usar git usando la CLI, entonces, en ese caso, la mejor solución será usar el sudo -scomando. Después de ese comando, no tiene que seguir ingresando la contraseña una y otra vez.

Kahef Mirza
fuente
1

Creo que no puedes hacer esto como un usuario "normal" ...

Si hay otra cuenta de usuario con derechos de administrador, debe usar esta.

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now
usuario302849
fuente
1

Solución moderna: sudo -u

Para ejecutar como otro uso, use sudo -u.

Por ejemplo, para ejecutar un editor de texto como nano :

sudo -u someuser nano

... e ingrese su contraseña de usuario administrador de Mac cuando se le solicite. En este momento, es el usuario administrador de Mac quien está invocando sudo, no el someuserusuario, por lo que no debe ingresar la someusercontraseña.

  • sudo significa ejecutar algo usando privilegios de superusuario.
  • -u significa "ejecutar un comando especificado como este usuario especificado".
  • someuser debe reemplazarse con su nombre de usuario deseado.

Para simular un inicio de sesión inicial como un usuario en particular, incluida la ejecución de sus scripts de inicio, use -I.

sudo -u someuser -i nano

Esto ejecuta la nanoaplicación como usuario, someuserpero solo después de haber ejecutado los scripts de inicio para ese usuario.

Si optamos por no especificar un comando o aplicación para ejecutar, obtenemos un shell interactivo que se ejecuta como ese usuario.

sudo -u someuser -i

Vieja escuela: sudo su someuser

Otro enfoque utiliza el sucomando en combinación con el sudo. El sucomando significa "cambiar de usuario".

sudo su someuser

O, para incluir la ejecución de los scripts de inicio del usuario, agregue el guión.

sudo su - someuser

root usuario

El rootusuario en los sistemas operativos relacionados con Unix tiene un poder absoluto para hacer cualquier cosa.

Apple ha optado por desactivar la rootcuenta en macOS, para evitar vulnerabilidades de seguridad y para evitar que te dispares en el pie. Apple creó la idea de las cuentas de usuario Administrador que tienen muchos poderes, más poderes que una cuenta de usuario Estándar , pero no poder absoluto como el que roottiene. Vea esta nota de soporte de Apple para discusión.

Si es necesario, puede habilitar al rootusuario en macOS y luego cambiar a ese usuario. Esto está fuertemente desaconsejado. Seguiría este camino solo como un último recurso desesperado.


Para una discusión sobre esto dentro del contexto del postgresusuario que ejecuta el sistema de base de datos Postgres en macOS, vea esta Pregunta en el sitio hermano, DBA Stack Exchange .

Albahaca Bourque
fuente