Si può usare un file di chiavi come password per sudo?


11

Contesto

Mi piace lavorare in pubblico sul mio laptop, ma mi piace anche usare sudo senza password. Sulla base di ciò che so ora, userei l' NOPASSWDopzione nel mio sudoersfile, ma ovviamente chiunque potrebbe usare sudo come desidera.

Un pensiero importante che mi viene in mente è che esistono programmi di blocco. Tuttavia, preferirei usare un'unità flash (e usarla solo per sudo) perché (1) è più veloce, (2) più facile rispetto all'inserimento della mia password e (3) non mi preoccupo che le persone accedano ai miei contenuti o facciano del male cose: il laptop sarebbe in pubblico con altre persone e l'unica proprietà intellettuale sul mio laptop è un progetto angolare molto semplice.

Inoltre, io e altri potremmo voler impedire l'uso improprio di sudo su un computer che non esegue un ambiente X o Wayland. Il mio lavoro attuale richiede un browser Web moderno, ma se mai avessi la possibilità di non usare X e di usare solo un multiplexer, lo faccio: il mio laptop è un po 'vecchio e lento.

Domanda

Quello che vorrei fare è mettere un file di chiavi su un'unità flash, e semplicemente collegare l'unità flash quando sono al computer portatile, ed estrarlo quando mi allontano da esso.

Quindi, ecco le mie tre domande derivate da questo problema:

  1. È possibile con sudo così com'è?
  2. In caso contrario, sarei in grado di scrivere un programma che mi permetta di farlo?
  3. In tal caso, quale lingua potrebbe essere la migliore per scrivere questo programma?

(4. [Forse una domanda estranea] Questo pacchetto potrebbe essere separato o dovrebbe essere un fork di sudo?)

Nota

Se è rilevante, la mia installazione è Arch Linux con bspwm, nessun ambiente desktop. Gran parte del mio lavoro è lo sviluppo web in urxvt / vim e il controllo con Chrome.


1
Fa pam_usb soddisfare le vostre esigenze?
StrongBad

@StrongBad Oh ... yep. Sembra che non faccia immediatamente solo sudo, e acceda e sudo insieme, ma per me non importa. Grazie!
Gage Sorrell,

2
Va bene, per chiarire, vuoi rimanere costantemente connesso e impedire alle persone di usare sudo sotto il tuo account.
StrongBad

@StrongBad Correct.
Gage Sorrell,

Potresti essere in grado di configurare qualcosa utilizzando il rootpwflag nei /etc/sudoersfile e l'impostazione pam_usbper l'accesso root.
RubberStamp,

Risposte:


3

Non sono sicuro di capire perché l' NOPASSWDopzione non soddisfi le tue esigenze da sola, ma se vuoi richiedere la presenza dell'unità flash posso pensare a qualcosa che potrebbe quasi fare quello che stai cercando.

Si tratta di una soluzione alternativa, ma è possibile creare un utente amministrativo locale, ad esempio superuser, e assegnare all'utente sudodiritti senza password , ovvero aggiungere la seguente riga al /etc/sudoersfile:

superuser ALL=(ALL) NOPASSWD:ALL

È quindi possibile disabilitare l'accesso con password e configurare l'autenticazione SSH solo chiave per quell'utente, ovvero eseguire passwd -l superusere aggiungere la seguente stanza alla propria /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Quindi creare una coppia di chiavi SSH per questo utente. Aggiungi la chiave pubblica a /home/superuser/.ssh/authorized_keyse inserisci la chiave privata sul tuo flash drive. Quindi, quando si desidera utilizzare l' superuseraccount, collegare l'unità flash e SSH superusernell'account utilizzando la chiave privata. E voilà! Ora hai passwordless sudoper il tuo utente. Ovviamente dovrai comunque uscire dalle sessioni della shell quando hai finito: scollegare l'unità flash non sarà sufficiente. Anche se suppongo che potresti anche impostare un hook di precomando per verificare la chiave privata ed uscire automaticamente se non è presente (o se non è valido).


una risposta semplice per chiarire il motivo per cui potresti voler fare questo. per questo server sto provando a tornare indietro, ho solo la chiave di root, nessun accesso root ssh, sono bloccato nell'utente ec2, che sudo sta chiedendo a un pw che non ho. ho scpato la mia chiave di root sul server, quindi idealmente ora vorrei usare questa chiave per ottenere l'accesso sudo, quindi posso sistemare le cose.
Brian Thomas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.