Cuando se aplica sudo
a un comando que realmente no necesita sudo
,
a veces no me pide mi contraseña. Por ejemplo debajo de mi
$HOME
,sudo ls
.Pero recuerdo que lo hace para algún otro comando, aunque olvido cuál.
Entonces, me preguntaba cómo sudo
decide si solicitar una contraseña, cuando se le da un comando que realmente no necesita sudo
. ¿Hay alguna regla para /etc/sudoers
especificar eso?
Mi verdadero problema es que cuando lo uso du
, a veces muestra "permiso denegado" para algunos directorios, y a veces no, ¿probablemente porque no tengo permiso en algunos directorios? Solicito sudo
de todos du
modos, y pensé que me pedirían una contraseña de todos modos, pero en realidad no en mis propios directorios.
Respuestas:
En una configuración típica, el comando es irrelevante. Debe ingresar su contraseña la primera vez que usa sudo, y no necesita su contraseña en ese shell en particular durante los próximos 15 minutos.
Desde la perspectiva de la computadora, no existe tal cosa como un "comando que necesita sudo". Cualquier usuario puede intentar ejecutar cualquier comando. El resultado puede ser un mensaje de error como "Permiso denegado" o "No existe dicho archivo o directorio", pero siempre es posible ejecutar el comando.
Por ejemplo, si se ejecuta
du
en un árbol de directorios que tiene contenido para el que no tiene permiso de acceso, obtendrá errores de permiso. Eso es lo que significa "permiso denegado". Si ejecutasudo du
, sudo se ejecutadu
como root, por lo que no obtiene errores de permiso (ese es el punto de la cuenta raíz: root¹ siempre tiene permiso). Cuando ejecutasudo du
, sedu
ejecuta como root ysudo
no está involucrado en absoluto después dedu
haber comenzado. Si du encuentra errores de permiso es completamente irrelevante para la forma en que opera sudo.Hay comandos que necesitan sudo para hacer algo útil . La utilidad es un concepto humano. Debe usar sudo (u otros métodos para ejecutar el comando como root) si el comando hace algo útil cuando se ejecuta como root pero no cuando se ejecuta en su cuenta.
Si sudo le pide su contraseña depende de dos cosas.
authenticate
opción en falso y tener una regla aplicable con laNOPASSWD
etiqueta.timeout
opción). Debe haber ingresado la contraseña en la misma terminal (de modo que si permanece conectado en una terminal, deje esa terminal desatendida y luego use otra terminal, alguien puede "tty_tickets
¹ casi, pero eso está más allá del alcance de este hilo.
fuente
sudo
no sabe si el comando que debe ejecutar debe ejecutarse como otro usuario (generalmente root), todo lo que sabe es su configuración. Eso determina qué usuarios pueden ejecutarsudo
, con qué usuarios como "objetivos" y para qué comandos; También determina si se necesita una contraseña, cuál, y si se debe mantener un token de autenticación.Si está utilizando la configuración predeterminada de Debian, lo más probable es que lo último esté involucrado aquí:
sudo
le pedirá su contraseña la primera vez que la use en cualquier terminal, luego mantendrá un token de autenticación durante un cierto período de tiempo. Si reutilizasudo
en el mismo terminal dentro de ese plazo, no le pedirá una contraseña.fuente
sudo du /path/to/some/dir
que siempre debería necesitar mi contraseña o nunca, independientemente de/path/to/some/dir
?/etc/sudoers
puede especificar comandos y sus argumentos. Sin embargo si no se ha añadido nada parecido asudoers
(y si tiene, eso espero que sería consciente de ello), los argumentos no importará (tampoco lo hará el comando si tiene acceso general a la raíz a travéssudo
).sudo
no almacena su contraseña en el caché, solo la información de que su identidad ya ha sido verificada una vez con una verificación de contraseña. Dado quesudo
es un programa setuid-root, ya tiene todos los permisos que necesita para ejecutar cualquier cosa como cualquiera, pero se confía en que solo permitirá a los usuarios usarlo exactamente como se especifica en elsudoers
archivo y rechazar todos los demás intentos de usarlo . Por eso es importante quesudo
sea un programa tan pequeño y muy bien estudiado.No es que un comando necesite o no necesite sudo. Cuando corres
el sistema se ejecuta
command
como eluser
.Si la invocación es exitosa o no, y si se solicita una contraseña o no, depende de la política de seguridad
sudoers
(generalmente configurada en/etc/sudoers
).fuente