Vorrei creare un utente che può fare solo una cosa: tramite ssh specificare uno script (e argomenti della riga di comando per lo script) che risiede in una cartella particolare (ai fini di questa domanda chiamiamolo /local/remote_only_scripts/foo
) e fare eseguire quello script e restituisce il suo output.
Per essere chiari alcuni esempi di cose non voglio che l'utente sia in grado di fare:
- Accedere localmente all'account. L'applicazione di accesso è
/bin/login
. Non è uno script nella/local/remote_only_scripts/foo
cartella, quindi non deve essere chiamato dall'utente. - Accedi in remoto all'account. Anche in questo caso il login (è quello che viene chiamato da ssh?) Non è uno script nella relativa cartella.
- Elencare il contenuto della directory. È dentro
/bin/ls
. Non è uno script nella directory appropriata. - Modifica un file in quella directory. emacs, vi, gedit molti altri editor non sono script in quella directory.
- Visualizza il contenuto di un file in quella directory.
- Eseguire un file in quella directory che non ha il permesso di eseguire.
Si noti che questi sono esempi che ci sono molte altre azioni che non voglio che l'utente sia in grado di 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 ad alcuni sottosistemi ssh. Piuttosto intendo aggiungere un utente al sistema informatico. Quindi, per esempio, ho un sistema che esegue debian stable, chiamalo con il suo indirizzo, www.hg.bar.com. Voglio aggiungere un utente (tramite kuser, users-admin o useradd o in qualche modo simile) chiamarlo 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 "da remoto". Ho detto che dovrebbe essere in grado di farlo tramite ssh, ma pensandoci ora, forse consentirgli di usare ssh potrebbe consentirgli di accedere localmente, quindi potrebbe essere necessario qualche altro meccanismo.