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

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 que funciona con sudo. Lo que quiero es no tener que entrar sudocada vez.

Respuestas (7)

En MacOS X, el usuario raíz está deshabilitado de forma predeterminada, por sulo que no funcionará. Como otros han dicho, es mejor usar sudo.

Si debe habilitar el usuario raíz, consulte la nota técnica de Apple: Habilitación y uso del usuario "raíz" en Mac OS X.

sudo sutodavía funciona, por lo que no está realmente deshabilitado. Simplemente no tiene contraseña.
@FakeName ¡Esta es la puerta trasera más divertida! Si puedes correr sudo su, ¿cuál es el punto de deshabilitar suentonces?
@KolobCanyon: el punto 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 que puede sudohacerlo sues un poco tonto. Básicamente, susolo cambia la identificación 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 tiene nada que hacer, por lo que solo ejecuta el shell. Puede obtener un efecto similar haciendo sudo bash.
@FakeName Todavía confundido. ¿Cuál es la diferencia entre iniciar sesión como root y ejecutar 'sudo su'? ¿No es efectivamente el mismo nivel?
@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 pirata informático no puede usarla para obtener la raíz directamente. Básicamente, mueve el compromiso de raíz requerido de "compromiso de inicio de sesión" a "compromiso de inicio de sesión para cuenta de usuario + privesc". Básicamente se hace como una defensa en profundidad.

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

Apple Way(tm) se usa sudopara ejecutar comandos que requieren privilegios elevados, no para cambiar a un shell raíz y trabajar desde allí.
@Ian C. - No, esa es en realidad la forma de Unix. Apple solo lo usa porque también está basado en *nix.
@Nombre falso: Apple se esfuerza mucho 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: la semántica. No use shells raíz en OS X.
@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 que con cosas como linux, te dicen cómo usarlo fácilmente. Si eso hace que se use más ampliamente , no indica una diferencia de arquitectura subyacente.

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 su usuario administrador de Mac quien está invocando sudo, no el someuserusuario, por lo que no ingresa la someusercontraseña.

  • sudosignifica ejecutar algo usando privilegios de superusuario.
  • -usignifica "ejecutar un comando específico como este usuario específico".
  • someuserdebe ser reemplazado 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 ejecutándose como ese usuario.

sudo -u someuser -i

Vieja escuela:sudo su someuser

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

sudo su someuser

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

sudo su - someuser

rootusuario

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

Apple ha optado por deshabilitar la rootcuenta en macOS, para evitar la explotación de vulnerabilidades de seguridad y para protegerlo de un tiro 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 un poder absoluto como el que roottiene. Consulte esta nota de soporte de Apple para obtener más informació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 de esto dentro del contexto del postgresusuario que ejecuta el sistema de base de datos de Postgres en macOS, consulte esta pregunta en el sitio hermano, DBA Stack Exchange .

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
Esto se debe a una línea en /etc/pam.d/su. account required pam_group.so ...le está diciendo al sistema que solo permita a su rootear si está cambiando de una cuenta en el grupo admino wheel. Puede comentar esta línea si realmente lo desea, pero yo no lo haría, ya que no es realmente necesario para esas ocasiones (con suerte, raras) en las que necesita convertirse en root.

Por ejemplo, si necesita mover archivos o usar git usando la CLI, 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.

Tuve el mismo problema y, como sugirió @Nohillside, no hay forma de acceder a la raíz a través del comando su como un usuario normal que solo usa su . Como se indicó, se reconoce agregar la cuenta de administrador al comando su . Pude conectarme como root de esa manera. No es algo que haré a menudo. Solo quería probarlo y el resultado fue una conexión inmediata.

> admin-server:~ admin$ su
> Password:
> su: Sorry
> admin-server:~ admin$ su - admin
> Password:
> admin-server:~ admin$
¡interesante! prefiero sudo suya que también funciona en linux.

Prueba la contraseña alpine?! ¡ La leyenda dice que esa alpinefue la contraseña de root en macOS durante muchos años! Puede acceder a la raíz desde un shell de cuenta de administrador con:

sudo su 

Recomiendo entonces cambiar la contraseña de root con:

passwd

Después de esto, puedo ejecutar suy escribir la contraseña de root real. Útil para volverse root desde una cuenta de usuario regular.