Piotr dio una muy buena explicación de cómo sudo
funciona. Sin embargo, él realmente no motivó por qué funciona de esta manera, así que intentaré agregar eso aquí.
Antes de sudo
crear el comando, teníamos el su
comando. Este comando permite que un usuario ejecute comandos como otro usuario, por lo general root
(como con sudo
, este es el usuario objetivo predeterminado). Fue totalmente indiscriminado, puede ejecutar cualquier comando. Como podía ser utilizado por cualquier usuario, era efectivamente equivalente a iniciar sesión como ese usuario, requería que conociera la contraseña del usuario objetivo.
En algún momento, se agregó un poco más de control de acceso: para usar su
, tenía que ser miembro del wheel
grupo. Pero como todavía podía ejecutar cualquier comando, tenía sentido exigirle que conociera su contraseña.
Sin embargo, exigir a los usuarios que conocieran la contraseña del otro o del superusuario no era muy seguro. A menudo solo desea dar a ciertos usuarios acceso limitado a alguna otra cuenta (esto es parte de un concepto de seguridad llamado principio de mínimo privilegio ). También dificulta la rendición de cuentas: si varias personas conocen la contraseña de una cuenta, y esa cuenta está involucrada en un error o abuso, no se puede saber cuál de ellas realmente lo hizo.
Así sudo
fue creado. En lugar de permitir a los usuarios ejecutar cualquier comando, tiene un archivo de configuración elaborado, brevemente mencionado en la respuesta de Piotr, que especifica con precisión quién puede usarlo, a qué usuarios pueden cambiar y qué comandos pueden ejecutar. Con este control detallado sobre quién puede hacer qué a quién, ya no necesitamos darles a los usuarios la contraseña de la cuenta de destino; si lo hiciéramos, podrían omitir fácilmente todos los controles en el archivo de configuración iniciando sesión como ese usuario. En cambio, normalmente solo les pedimos que demuestren que son las personas con las que iniciaron sesión, ingresando su propia contraseña; esto tiene la intención de evitar que alguien aproveche una cuenta si el terminal se deja desatendido.
Este requisito no se aplica al superusuario: esta cuenta puede hacer casi cualquier cosa al sistema sin usar sudo
, por lo que se consideró superfluo. También es posible especificar en el archivo de configuración que los usuarios no tienen que ingresar una contraseña; algunas organizaciones usan esto cuando creen que la seguridad física del entorno de su estación de trabajo es suficiente para evitar abusos.
sudo
tiene el bit "setuid" establecido. Por lo tanto, se ejecuta como el usuario que lo posee (que es root en todos los sistemas estándar si no me equivoco), no como el usuario que lo inicia.sudo
luego carga el/etc/sudoers
archivo y comprueba lo que está permitido en función de quién lo lanzó.sudo
privilegios, tal vez trabajando en ubicaciones distribuidas geográficamente y en turnos 24 × 7, desea poder revocar el acceso privilegiado de una persona de inmediato (por ejemplo, si sospechas de su integridad). Si todo el mundo usa la contraseña raíz única y la cambia sin coordinación previa, puede producirse un caos. ...