Назад | Перейти на главную страницу

Пользовательская оболочка Openssh

Среда - Ubuntu Server 12.04.

Я хотел бы создать пользователя на сервере, который может использовать только ssh в оболочке, которая запускает tail -f в файле журнала и закрывает сеанс после завершения программы (ctrl + c).

Есть ли способ добиться этого?

На ум приходят принудительные команды ssh, если вы счастливы использовать аутентификацию на основе пары ключей.

man authorized_keys
/command=

Чтобы быть педантичным, это будет не 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) и все равно обзавестись оболочкой. Если вы хотите таким образом ограничить пользователя, единственное реальное решение - хорошие разрешения файловой системы.

Вы можете настроить 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.