Вопрос или проблема
Я ищу способ создать пользователя консоли VNC, который выполняет команду screen
или bash
сразу после входа, чтобы у них была своя ограниченная оболочка для выполнения команд и т.д. Screen/bash будет предварительно настроен для обработки всех вопросов безопасности. Консоль VNC также должна завершаться, как только пользователь вводит команду выхода/выхода, так как я не хочу, чтобы они имели доступ к остальной системе.
Я уже изучил документацию TigerVNC и TightVNC, но не нашел ничего полезного.
Если это невозможно с VNC, консоль SSH также может подойти.
ОС сервера – CentOS.
VNC – это инструмент для предоставления графической среды пользователям.
Использование SSH – это правильный путь для ваших требований. Если среда BASH пользователей уже настроена с необходимыми ограничениями безопасности, то дальнейшая конфигурация SSH не потребуется.
Если вы используете SSH, оболочка пользователя, указанная в /etc/passwd
, будет выполняться при входе. Установите ее на /bin/bash
, и на этом все. Вы можете настроить это с помощью этой команды (от имени root):
usermod -s /bin/bash <имя_пользователя>
Ответ или решение
Для выполнения команды сразу после входа в систему по VNC или SSH в CentOS можно воспользоваться некоторыми методами конфигурации среды пользователя. Поскольку вы хотите ограничить доступ и предоставить пользователям среду, из которой они могут запускать только предварительно настроенные команды, рекомендуется использовать SSH.
Использование SSH для автоматического выполнения команды
-
Настройка оболочки пользователя:
Вам необходимо установить оболочку пользователя на/bin/bash
или другую оболочку, если это необходимо. Это можно сделать с помощью следующей команды, выполняемой от имени суперпользователя:usermod -s /bin/bash <username>
Это определит, что при входе в систему пользователь будет автоматически попадать в оболочку
bash
. -
Автоматический запуск команды:
Чтобы автоматически запускать команду (например,screen
) сразу после входа в систему, вам нужно редактировать файл.bash_profile
в домашнем каталоге пользователя. Для этого выполните следующую команду:nano /home/<username>/.bash_profile
Вставьте в конец файла следующую строку:
exec screen
Это приведёт к автоматическому запуску
screen
при каждом входе пользователя в систему. Если вы хотите использовать другую команду, просто заменитеscreen
на нужную вам команду. -
Автоматическое завершение работы сессии:
Чтобы VNC-сессия завершалась автоматически после выхода, можно добавить выход изscreen
в конце предыдущей команды. Это можно сделать следующим образом:exec screen -dmS session_name bash -c 'while true; do echo "Type exit to close"; sleep 2; done'
Заменив
session_name
, вы получите возможность запускать разные экземплярыscreen
, а пользователю будет предложено ввести командуexit
для завершения сессии.
Использование VNC для автоматического выполнения команды
Если вы всё же хотите использовать VNC, вам нужно будет настроить vncserver
для запуска оболочки при старте.
-
Создание файла xstartup:
Файл~/.vnc/xstartup
управляет средой VNC. Вы можете настроить его так, чтобы он запускалscreen
по умолчанию. Измените или создайте файлxstartup
в директории~/.vnc
:nano ~/.vnc/xstartup
Вставьте следующие строки:
#!/bin/sh xrdb $HOME/.Xresources startxfce4 & # Или используйте ваше распределение рабочего стола exec screen
-
Установка привилегий на выполнение:
Убедитесь, что файлxstartup
исполним:chmod +x ~/.vnc/xstartup
Резюме
Как видно, использование SSH для автоматического запуска команд, таких как screen
, предоставляет более гибкое и безопасное решение для ограниченного доступа пользователей. Если вы всё же выберете использовать VNC, настройка xstartup также может помочь добиться аналогичного результата. Во всех случаях важно правильно настроить параметры доступа, чтобы соблюсти все аспекты безопасности.