Parece que sudo -n
en Mac OS X (10.10.3) siempre devuelve 0 como código de retorno.
Entonces, algo como esto siempre mostrará 0, independientemente de si el usuario se ha autenticado primero con su contraseña:
sudo -n true &> /dev/null ; echo $?
En el caso de que el usuario no tenga una sesión sudo válida, esperaría ver 1 como código de salida, pero en OS X, siempre devuelve 0.
Lo pregunto porque vi este patrón sugerido para verificar el acceso a sudo, por ejemplo, aquí:https://superuser.com/a/587876/119764
cual es eloficial(???) comportamiento de sudo -n
? ¿Difiere según la versión o el sistema operativo, o me falta algo?
Respuesta1
Tengo el mismo problema. Refiriéndose a la página de manual,
De lo contrario, sudo se cierra con un valor de salida de 1 si hay un problema de configuración/permiso o si sudo no puede ejecutar el comando dado. En el último caso, la cadena de error se imprime en stderr. Si sudo no puede establecer (2) una o más entradas en la RUTA del usuario, se imprime un error en stderr. (Si el directorio no existe o si no es realmente un directorio, la entrada se ignora y no se imprime ningún error). Esto no debería suceder en circunstancias normales. La razón más común para que stat(2) devuelva "permiso denegado" es si está ejecutando un montador automático y uno de los directorios en su RUTA está en una máquina a la que actualmente no se puede acceder.
Entonces parece ser un error en OS X.
Respuesta2
Después de leer la página de manual de Sudo una y otra vez, revisé Bugzilla.aquí. Este comportamiento de sudo es un error que apareció en 1.7.10 después de fusionarse desde una rama 1.8.
Si desea utilizar sudo -n command &>/dev/null ; echo $?
para verificar sus 'privilegios', asegúrese de tener la versión 1.7.9b1 y anterior de Sudo.