Чтобы быть педантичным, это не будет 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 принудительно приходят на ум, если вы счастливы использовать аутентификацию на основе пар ключей.
источник
Вы можете настроить ssh для запуска выбранной вами команды при входе в систему с использованием аутентификации с открытым ключом. Для этого сгенерируйте пару ключей:
restricted-key.pub
содержит строку, подходящую для помещения в~/.ssh/authorized_keys
файл пользователя :но вы можете добавить команду к этому, и ssh запустит эту команду при входе в систему с ключом:
Затем пользователь может ssh к машине, используя
ssh -i restricted-key
.источник