Pregunta

Los usuarios tendrán acceso de forma remota máquinas basadas *** nix a través de SSH y me tienen que determinar los rápido manera de comprobar si el nombre de usuario que están utilizando actualmente tiene acceso NOPASSWD en el directorio / etc / sudoers archivo.

Las posibles opciones:

  • grep para el nombre de usuario en / etc / sudoers, analizar comando de salida rápida para determinar si tiene NOPASSWD, si no, a continuación, quitar la línea añadir los nuevos permisos
  • Sólo añadir una cadena permiso para el archivo independientemente (mala idea).
  • Intento de sudo en un archivo protegido y ver si me pide una contraseña.

Estoy esperando por algo más fácil, pero mi google-fu no ha llegado con ninguna respuesta.

¿Fue útil?

Solución

Si sudo -v tiene éxito, el usuario ha sido autorizado a usar sudo; si falla, entonces el usuario no ha sido autorizado a utilizar sudo.

# su user -c 'setsid sudo -v </dev/null'; echo $?
[sudo] password for user:
1
# su root -c 'setsid sudo -v </dev/null'; echo $?
0

setsid , sudo tratará de pedir la contraseña de forma interactiva, incluso si la entrada estándar / stdout / stderr todos han sido redirigida. Si usted no tiene un terminal de control, esto no es necesario, pero probablemente necesitará algo más que su para cambiar los permisos de usuario, como tenedor + setreuid .

Otros consejos

Si usted necesita de hecho "la rápido camino", supongo que se está construyendo un servidor web que manejar muchas peticiones concurrentes.

Esto plantea otro problema - el problema de concurrencia. En general, muchos de lectura y escritura en el proceso mismo archivo importante es una receta para una catástrofe.

Construir un pequeño proceso independiente para manejar la tarea. Debe tener una interfaz mínima que recibirá las solicitudes de los clientes, y actualizaciones para el archivo de la /etc/sudoer. Algo así como has_NOPASSWD_access() y set_NOPASSWD_access(). Debe leer el archivo sólo cuando se necesita ser escrita, por lo que va a reducir considerablemente el tiempo de E / S necesaria para servir a una solicitud.

Pros -

  • Rápido: No E / S necesaria para sólo leer el archivo, ya que se almacena en la memoria intermedia ya que la lectura inicial
  • seguro de rosca: Sólo un servidor escribe y lee el archivo sudoer
  • elección de unión Principio - solamente este proceso maneja el archivo sudoer
  • elegante (espero): -)

Contras -  -. Lista de ellos en los comentarios y voy a añadir

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top