@Corp_Habra_Clients

Что лучше использовать?

Здравствуйте!
Есть консольная программа для Ubuntu, к которой надо предоставить удалённый доступ по SSH. Но при этом данная программа не может работать как служба (демон) и ей нужен screen либо tmux. Что лучше использовать и как предоставить пользователям SSH доступ ТОЛЬКО к данной программе?!
Подскажите, пожалуйста!
  • Вопрос задан
  • 550 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Andrey335
Коллега явно не знает в *nix. Вариантов на самом деле много:
Вариант 1: прописать в качестве стартового шелла для пользователя эту консольную программу. Смотреть в man adduser. Если хочется, чтобы пользователь совсем не видел фс сервера - в программе сделать chroot

Вариант 2: логика та же, только в .bash_profile делаем вызов
chroot ./
./you_programm
logout
1 и 2 варианты требуют добавления системных пользователей
Вариант 3 - отдельный sshd с авторизацией через ldap - рецепта сразу не подскажу, но то, что это возможно - 100%
Варианты 4 и далее - вариации с докером - закатать в образ минималку с sshd и рецептами из 1-3
Ответ написан
YekitKsv
@YekitKsv
DevOps
Никак. Ещё нет такой ОС, которая может давать доступ только к какой-то определенной программе. Единственный вариант использовать какие-то стороннее ПО для разграничения прав доступа пользователей.
Ответ написан
Vamp
@Vamp
Не очень понятно зачем предоставлять донатерам доступ по SSH. Игрок может и из игры выполнить любую команду, если он оп 4 уровня. Раз уж предоставили SFTP доступ, значит предполагается возможность заливать свои плагины и править конфиги. Однако рестарт сервера можно сделать и из игры. Я пофантазировал пару минут, но так и не смог придумать ситуацию, когда требуется именно серверная консоль.

Вариант 2: логика та же, только в .bash_profile делаем вызов
chroot ./
./you_programm
logout

Пойдёт, но только нужен не запуск самой программы, а Screen'а с ней.

Так поставьте screen -x servername вместо ./you_programm и будет вам запуск screen'а. Только вместе с chroot это не заработает вот так вот запросто.

Часто слышу, но что такое Докер?!

Применительно к вашей задаче - это просто альтернатива screen'у. Более подходящим вариантом вместо докера будет lxc. Но если стоит задача "не хотелось чтоб донатеры лазили в корень линукса и что-то там делали", то просто не давайте SSH доступ.

Если без серверной консоли ну прям вообще никак, попробуйте rcon. Фактически это серверная консоль, доступная удалённо. Для rcon есть готовые веб-интерфейсы и утилиты. Но нужно быть предельно осторожным, чтобы случайно не засветить rcon порт в интернет с неограниченным доступом.
Ответ написан
@Karpion
1) Пусть юзер запускает у себя "screen к_программе", а там его ждёт программа, запущенная под screen.

2) Поставить юзеру в качестве шелла скрипт, который делает "screen к_программе" и потом завершается.

Но надо помнить, что при таком варианте юзер может законнектиться с пробросом портов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект