VNC/SSH: Как выполнить команду после входа в систему?

Вопрос или проблема

Я ищу способ создать пользователя консоли 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 для автоматического выполнения команды

  1. Настройка оболочки пользователя:
    Вам необходимо установить оболочку пользователя на /bin/bash или другую оболочку, если это необходимо. Это можно сделать с помощью следующей команды, выполняемой от имени суперпользователя:

    usermod -s /bin/bash <username>

    Это определит, что при входе в систему пользователь будет автоматически попадать в оболочку bash.

  2. Автоматический запуск команды:
    Чтобы автоматически запускать команду (например, screen) сразу после входа в систему, вам нужно редактировать файл .bash_profile в домашнем каталоге пользователя. Для этого выполните следующую команду:

    nano /home/<username>/.bash_profile

    Вставьте в конец файла следующую строку:

    exec screen

    Это приведёт к автоматическому запуску screen при каждом входе пользователя в систему. Если вы хотите использовать другую команду, просто замените screen на нужную вам команду.

  3. Автоматическое завершение работы сессии:
    Чтобы 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 для запуска оболочки при старте.

  1. Создание файла xstartup:
    Файл ~/.vnc/xstartup управляет средой VNC. Вы можете настроить его так, чтобы он запускал screen по умолчанию. Измените или создайте файл xstartup в директории ~/.vnc:

    nano ~/.vnc/xstartup

    Вставьте следующие строки:

    #!/bin/sh
    xrdb $HOME/.Xresources
    startxfce4 & # Или используйте ваше распределение рабочего стола
    exec screen
  2. Установка привилегий на выполнение:
    Убедитесь, что файл xstartup исполним:

    chmod +x ~/.vnc/xstartup

Резюме

Как видно, использование SSH для автоматического запуска команд, таких как screen, предоставляет более гибкое и безопасное решение для ограниченного доступа пользователей. Если вы всё же выберете использовать VNC, настройка xstartup также может помочь добиться аналогичного результата. Во всех случаях важно правильно настроить параметры доступа, чтобы соблюсти все аспекты безопасности.

Оцените материал
Добавить комментарий

Капча загружается...