Risposte:
Per essere pedanti, non sarà ctrl + c, ma SIGHUP
(più vicino a ctrl + d) che uccide l'app.
Puoi inserire essenzialmente quello che vuoi nella shell dell'utente /etc/passwd
. Sostituisci semplicemente il valore predefinito sulla linea passwd dell'utente (probabilmente /bin/bash
) con un altro programma. Tale programma può essere uno script, ad esempio /usr/bin/tail_log_file
, con questi contenuti, di proprietà di root: root, con umode 0755:
#!/bin/rbash
tail -f /path/to/logfile
È possibile utilizzare un interprete diverso da rbash, ma in questi casi è consigliabile utilizzare una shell con restrizioni.
Per essere estremamente pedante al riguardo, dovresti aggiungere il percorso dello script /etc/shells
, ma di solito trovo che funzioni comunque.
Tieni presente inoltre che l'utente potrebbe potenzialmente mettere lo script in background o utilizzare alcune opzioni ( ssh username@host bash
) e acquisire comunque una shell. Se vuoi limitare l'utente in questo modo, le buone autorizzazioni del filesystem sono l'unica vera soluzione.
/etc/shells
è consentire agli utenti che hanno qualcos'altro come shell di impostare la propria shell su questo; il superutente ( root
) può sempre cambiare la shell di chiunque con ciò che desidera.
/etc/shells
quanto consentirebbe all'utente di cambiare la sua shell (perché /usr/bin/tail_log_file
sarebbe quindi considerata una "shell senza restrizioni")!
Puoi configurare ssh per eseguire un comando a tua scelta quando accedi usando l'autenticazione con chiave pubblica. Per fare ciò, genera una coppia di chiavi:
djs@sardinia:~$ ssh-keygen -f restricted-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in restricted-key.
Your public key has been saved in restricted-key.pub.
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia
[...]
restricted-key.pub
contiene una riga adatta per inserire il ~/.ssh/authorized_keys
file degli utenti :
ssh-rsa AAAA...UDz47Nl djs@sardinia
ma puoi aggiungere un comando a questo, e ssh eseguirà quel comando quando accedi con la chiave:
command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia
Quindi l'utente può inviare ssh alla macchina usando ssh -i restricted-key
.