Cuando se aplica sudoa 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 sudodecide si solicitar una contraseña, cuando se le da un comando que realmente no necesita sudo. ¿Hay alguna regla para /etc/sudoersespecificar 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 sudode todos dumodos, 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
duen 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 ejecutaducomo 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, seduejecuta como root ysudono está involucrado en absoluto después deduhaber 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.
authenticateopción en falso y tener una regla aplicable con laNOPASSWDetiqueta.timeoutopció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
sudono 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í:
sudole 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 reutilizasudoen el mismo terminal dentro de ese plazo, no le pedirá una contraseña.fuente
sudo du /path/to/some/dirque siempre debería necesitar mi contraseña o nunca, independientemente de/path/to/some/dir?/etc/sudoerspuede 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).sudono 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 quesudoes 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 elsudoersarchivo y rechazar todos los demás intentos de usarlo . Por eso es importante quesudosea 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
commandcomo 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