GNU/Linux >> Linux Esercitazione >  >> Linux

Ssh:aggiungere un utente che può eseguire solo script in remoto?

Vorrei creare un utente che può fare solo una cosa:tramite ssh specificare uno script ( e argomenti da riga di comando per lo script ) che risiede in una cartella particolare
( ai fini di questa domanda chiamiamola /local/remote_only_scripts/foo ) e fare in modo che lo script esegua e restituisca il suo output.

Per essere chiari alcuni esempi di cose che non voglio che l'utente sia in grado di fare:

  • Accedi localmente all'account.
    L'applicazione di accesso è /bin/login . Non è uno script nel /local/remote_only_scripts/foo cartella, quindi non dovrebbe essere chiamato dall'utente.
  • Accedi in remoto all'account. Anche in questo caso login (è quello che viene chiamato da ssh? ) non è uno script nella cartella pertinente.
  • Elenca il contenuto della directory. ls è in /bin/ls . Non è uno script nella directory appropriata.
  • Modifica un file in quella directory. emacs, vi, gedit la maggior parte degli altri editor non sono script in quella directory.
  • Visualizza il contenuto di un file in quella directory.
  • Esegui un file in quella directory che non ha il permesso di eseguire.

Tieni presente che questi sono esempi ci sono molte altre azioni che non voglio che l'utente possa fare. Nel considerare un'azione, chiedi "questo viene fatto da uno script in /local/remote_only_scripts/foo ?" se la risposta è no, l'utente non dovrebbe essere in grado di farlo. Se la risposta è sì, l'utente dovrebbe essere in grado di farlo.

PS:Vorrei chiarire cosa intendo per "aggiungere un utente". Non intendo aggiungere un utente a qualche sottosistema ssh. Piuttosto intendo aggiungere un utente al sistema informatico. Quindi, per esempio, ho un sistema che esegue debian stable, lo chiamo con il suo indirizzo, www.hg.bar.com. Voglio aggiungere un utente (tramite kuser, users-admin o useradd o in qualche modo simile) chiamalo hg_guest. hg_guest non può accedere localmente o fare nessuna delle cose nell'elenco sopra. Tutto ciò che hg_guest può fare è eseguire gli script "in remoto". Ho detto che dovrebbe essere in grado di farlo tramite ssh, ma a pensarci ora, forse permettergli di usare ssh potrebbe consentirgli di accedere localmente, quindi potrebbe essere necessario qualche altro meccanismo.

Risposta accettata:

C'è un comando opzione nel file authorized_keys. Questa opzione sembra fare esattamente quello che vuoi.

Correlati:Linux – Recupero dati da un formato accidentale su partizione ext4?

Nota che non è un chroot o una shell con restrizioni. Consente di eseguire solo quei comandi tramite ssh. Con il tuo esempio, sarebbe :

ssh somehost /local/remote_only_scripts/foo

Per questo file authorized_keys :

command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key... 

C'è un sacco di modi se non vuoi che il tuo utente sia in grado di accedere localmente. Puoi:

  • imposta semplicemente la sua shell su /bin/false (forse avrai bisogno di /bin/true poiché ssh necessita di un accesso valido)
  • blocca la sua password, vedi passwd -l

MODIFICA :aggiunte più opzioni di restrizione e chiarimenti su come rimuovere l'accesso locale.


Linux
  1. Connettiti a un database MySQL da remoto

  2. Come configurare le chiavi SSH su Debian

  3. CentOS / RHEL:come disabilitare ssh per utenti non root (consentendo ssh solo per utente root)

  4. Come posso eseguire una serie di comandi in una subshell bash come un altro utente usando sudo?

  5. Impossibile su all'utente jenkins dopo aver installato Jenkins

linux esegue il comando da remoto

Come posso creare un utente senza accesso?

Posso disabilitare l'ultimo accesso SSH e MOTD in base all'utente?

Come limitare un utente SSH a consentire solo il tunneling SSH?

Come posso creare un utente solo per sftp?

Cosa si può imparare su un utente da un tentativo SSH fallito?