Réponses:
Pour être pédant, ce ne sera pas ctrl + c, mais SIGHUP
(plus proche de ctrl + d) qui tue l'application.
Vous pouvez mettre essentiellement ce que vous voulez dans le shell de l'utilisateur /etc/passwd
. Remplacez simplement la valeur par défaut sur la ligne de mot de passe de l'utilisateur (probablement /bin/bash
) par un autre programme. Ce programme peut être un script, tel que /usr/bin/tail_log_file
, avec ces contenus, détenu par root: root, avec umode 0755:
#!/bin/rbash
tail -f /path/to/logfile
Vous pouvez utiliser un interpréteur autre que rbash, mais il est conseillé d'utiliser un shell restreint dans de tels cas.
Pour être extrêmement pédant à ce sujet, vous devez ajouter le chemin du script à /etc/shells
, mais je trouve généralement que cela fonctionne de toute façon.
Gardez également à l'esprit que l'utilisateur pourrait potentiellement mettre le script en arrière-plan, ou utiliser certaines options ( ssh username@host bash
) tout en acquérant un shell. Si vous souhaitez restreindre l'utilisateur de cette manière, de bonnes autorisations de système de fichiers sont la seule vraie solution.
/etc/shells
est de permettre aux utilisateurs qui ont autre chose comme shell de définir leur shell sur ceci; le superutilisateur ( root
) peut toujours changer le shell de n'importe qui en ce qu'il veut.
/etc/shells
car cela permettrait à l'utilisateur de changer son shell (car /usr/bin/tail_log_file
serait alors considéré comme un "shell sans restriction")!
Vous pouvez configurer ssh pour exécuter une commande de votre choix lorsque vous vous connectez à l'aide de l'authentification par clé publique. Pour ce faire, générez une paire de clés:
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
contient une ligne appropriée pour mettre dans le ~/.ssh/authorized_keys
fichier des utilisateurs :
ssh-rsa AAAA...UDz47Nl djs@sardinia
mais vous pouvez ajouter une commande à cela, et ssh exécutera cette commande lors de la connexion avec la clé:
command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia
Ensuite, l'utilisateur peut ssh vers la machine en utilisant ssh -i restricted-key
.