Ответы:
Чтобы быть педантичным, это не будет Ctrl + C, но SIGHUP
(ближе к Ctrl + D), который убивает приложение.
Вы можете поместить практически все, что хотите, в оболочку пользователя /etc/passwd
. Просто замените значение по умолчанию в строке passwd пользователя (возможно /bin/bash
) другой программой. Эта программа может быть скриптом, например /usr/bin/tail_log_file
, с этим содержимым, принадлежащим root: root, с umode 0755:
#!/bin/rbash
tail -f /path/to/logfile
Вы можете использовать некоторый интерпретатор, отличный от rbash, но в таких случаях рекомендуется использовать ограниченную оболочку.
Чтобы быть крайне педантичным, вы должны добавить путь к скрипту /etc/shells
, но я обычно нахожу, что он работает в любом случае.
Имейте также в виду, что пользователь может поместить сценарий в фоновый режим или использовать некоторые параметры ( ssh username@host bash
) и при этом получить оболочку. Если вы хотите таким образом ограничить пользователя, хорошие разрешения для файловой системы - единственное реальное решение.
/etc/shells
- это позволить пользователям, у которых есть что-то еще в качестве оболочки, установить свою оболочку на это; superuser ( root
) всегда может изменить чью-либо оболочку на что угодно.
/etc/shells
позволило бы пользователю изменить свою оболочку (потому /usr/bin/tail_log_file
что тогда она будет считаться «неограниченной оболочкой»)!
Вы можете настроить ssh для запуска выбранной вами команды при входе в систему с использованием аутентификации с открытым ключом. Для этого сгенерируйте пару ключей:
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
содержит строку, подходящую для помещения в ~/.ssh/authorized_keys
файл пользователя :
ssh-rsa AAAA...UDz47Nl djs@sardinia
но вы можете добавить команду к этому, и ssh запустит эту команду при входе в систему с ключом:
command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia
Затем пользователь может ssh к машине, используя ssh -i restricted-key
.