Я написал простое приложение, которое работает в режиме консоли. Я хочу разрешить пользователям из Интернета подключаться к SSH и использовать данное приложение.
Каждый раз, когда кто-то SSH подключается к серверу, я хочу, чтобы экземпляр приложения мог запускаться в их сеансе SSH. Они будут работать с программой, а затем после ее завершения (т. Е. Выхода) сеанс SSH должен быть закрыт.
Предостережения:
- Я не хочу использовать скрипт оболочки, такой как .bash_profile. Слишком много возможностей для взлома!
- Предпочтительно я даже не хочу, чтобы учетной записи пользователя была назначена действительная "оболочка". Другими словами, я хочу, чтобы пользовательская оболочка была чем-то вроде /bin /false, чтобы все остальные FTP не были разрешены. Единственная вещь, которую я хочу разрешить от учетной записи, - это доступ к этому конкретному консольному приложению, работающему в непривилегированном режиме от имени этого пользователя.
- Я могу предложить более одного из этих приложений под разными именами пользователей. Так, например, "поиск" представит одно консольное приложение, а "просмотр" - другое, в зависимости от того, как пользователь вошел в систему.
- Требование пароля для сеанса SSH не требуется. Было бы хорошо, если бы он просто полностью игнорировал аутентификацию, но необходимость давать конечному пользователю пароль SSH не нарушает договоренности. Единственная вещь здесь - это, конечно, безопасность - я НЕ хочу, чтобы учетной записи разрешалось делать что-либо еще.
- Пользователь не должен делать ничего особенного с его стороны. Они должны иметь возможность просто "ssh search@ip.of.host" и получить услугу.
Программа, которая выполняется, может нуждаться в аргументах командной строки. Я в порядке с написанием оболочки для этого, но создает ли это небезопасность? Например, если команда «/usr /local /bin /myapp --mode = search», и я пишу скрипт, например:
!/ Бен / Баш
/usr /local /bin /myapp --mode = search
... это создает небезопасную ситуацию? Предположим, что все права доступа к файлам установлены правильно - пользователь не может изменить файл.
Возможно ли это сделать? Если так, как это можно сделать, и, что важно, как это можно сделать безопасно?
Сервер уже предлагает SSH для удаленного входа, что нормально. Я все еще хочу, чтобы это работало, очевидно. Так, например, если я войду в систему как мой собственный пользователь, мне нужно будет ввести пароль, как обычно, а затем представить оболочку.
Спасибо!
F