Domanda

Gli utenti accederanno da remoto le macchine basate *** nix via SSH e ho bisogno di determinare le più veloci modo per verificare se il nome utente che stanno attualmente utilizzando ha accesso NOPASSWD in / etc / sudoers file.

Le opzioni possibili:

  • grep per il nome utente in / etc / sudoers, analizzare comando di output pronta per determinare se ha NOPASSWD, in caso contrario, rimuovere la riga quindi aggiungere i nuovi permessi
  • Basta aggiungere una stringa permesso per il file indipendentemente (cattiva idea).
  • Tentativo di sudo in un file protetto e vedere se mi richiede una password.

spero in qualcosa di più facile, ma il mio google-fu non ha messo a punto alcuna risposta.

È stato utile?

Soluzione

Se sudo -v riesce, l'utente è stato autorizzato ad utilizzare sudo; se fallisce, allora l'utente non è stato autorizzato ad utilizzare 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 proverà a chiedere la password in modo interattivo, anche se stdin / output / error sono stati tutti reindirizzato. Se non si dispone di un terminale di controllo, questo non è necessario, ma probabilmente avrete bisogno di qualcosa di diverso da su per modificare le autorizzazioni degli utenti, come fork + setreuid .

Altri suggerimenti

Se avete davvero bisogno " più veloce via", immagino che si sta costruendo un server web che avrebbe gestire molte richieste simultanee.

Ciò solleva un altro problema - il problema della concorrenza. In generale, molti la lettura e la scrittura di processo per lo stesso file importante è una ricetta per una catastrofe.

Costruire un piccolo processo indipendente per gestire l'attività. Esso dovrebbe avere un interfaccia minimale che riceverà richieste da parte dei clienti, e aggiornamenti per il file del /etc/sudoer. Qualcosa di simile has_NOPASSWD_access() e set_NOPASSWD_access(). Dovrebbe leggere il file solo quando ha bisogno di essere scritta, in modo si riduce notevolmente il tempo di I / O necessaria per servire una richiesta.

Pro -

  • veloce: No I / O necessaria solo per la lettura del file, perché è memorizzata nel buffer dal momento che la lettura iniziale
  • Cassaforte Discussione: Solo un server scrive e legge il file sudoer
  • scelta singolo principio - solo questo processo gestisce il file sudoer
  • Elegante (spero): -)

Contro -  -. Elencale nei commenti, e io aggiungo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top