¿Cuál es la diferencia entre el comando sudo y su?

12

¿Cuál es la diferencia entre el comando sudoy su? ¿Por qué OS X maneja estos diferentes que Linux?

whitefleaCH
fuente
1
En todo caso, Linux los manejaría de manera diferente a OS X. OS X está certificado Unix, lo que significa que cumple con un cierto estándar de comportamiento. Linux es similar a Unix, pero no está certificado como Unix y no necesariamente cumple con el estándar Unix. Entonces, si hay diferencias (además del problema de la contraseña de root que se menciona en la respuesta de Aaron Lake), no se cumplen los implementadores de la distribución de Linux en cuestión.
alesplin

Respuestas:

21

OS X maneja sudoe suidénticamente a Linux.

sudoes un comando que, sin opciones adicionales, ejecutará un comando como root. Por ejemplo:

% touch /newfile
touch: /newfile: Permission denied
% ls -l /newfile
ls: /newfile: No such file or directory
% sudo touch /newfile
% ls -l /newfile 
-rw-r--r--  1 root  wheel  0 Apr 27 11:45 /newfile

supor otro lado, cambiará al usuario actual a root (nuevamente sin ningún comando adicional). En el siguiente ejemplo, tengo que ejecutar sudo su, ya que no sé la contraseña de root para mi sistema:

% whoami
alake
% sudo su
$ whoami
root

La diferencia clave entre sudoy sues sudoejecuta un comando como root, mientras suque lo hace root. Al igual que otras utilidades de línea de comandos, hay varias formas alternativas de usar ambas sudoy su, si está interesado, siempre puede ejecutar, man <command>por ejemplo. man sudopara obtener más información

Aaron Lake
fuente
55
En términos simples del lenguaje sudopuede ser de como super user and do. Como punto adicional, en OS X, una vez que se haya autenticado con éxito, puede usar sudo sin contraseña por un corto tiempo (5 minutos por defecto, a menos que se anule sudoers) después de lo cual deberá volver a escribir la contraseña.
binarybob
1
el 'sin opciones adicionales' es un calificador bastante significativo ... ambos le permitirán convertirse en usuarios que no sean root ... por ejemplo, sudo su -lm _wwwle permitirá tener un shell como si fuera el usuario del servidor web (ejecutando el comando como root, como no tiene una contraseña válida)
Joe
2
@ Joe, consideré agregar esa información pero omití por brevedad. Como usted describe, sudoes una utilidad bastante robusta y cubrir incluso la funcionalidad básica aquí finalmente confundiría o abrumaría al público objetivo en busca de una diferenciación entre sudoy su.
Aaron Lake
"La diferencia clave entre sudo y su es que sudo ejecuta un comando como root, mientras que su te hace root" - false, sudo -sejecuta shell ("te hace root") y su -c commandejecuta command como root.
el.pescado
2
Nuevamente, por razones de brevedad, omití los muchos métodos alternativos de uso sudo. Además, no puede hacerlo su -c commandde manera predeterminada en OS X, ya que no conoce la contraseña de root. Sin embargo sudo su, puede cambiar la contraseña su -c command. Siento que la pregunta fue respondida, y no había necesidad de profundizar en los usos alternativos de sudo y su. Sin embargo, actualizaré la publicación para la gente curiosa.
Aaron Lake