3

Я хотел бы создать группу пользователей UNIX, которая имеет доступ только к одному конкретному файлу Python через SSH. То есть они не должны иметь возможности запускать какие-либо другие команды / программы или просматривать какую-либо часть структуры файла.

Я уже сделал это, запустив сценарий при входе в систему и отключив прерывания клавиатуры, но это не идеально, поскольку пользователи могут подключаться через WinSCP и просматривать файловую структуру. Я рассмотрел настройку тюрьмы, которая ограничивает пользователей определенным каталогом, но это кажется излишним для моих целей и все равно предоставит им доступ к оболочке. Какое наиболее эффективное / безопасное решение?

Редактируйте с более подробной информацией в соответствии с запросом: Сценарий должен выполняться на сервере, поскольку он часто подключается и обновляет / считывает базу данных, также находящуюся на сервере. Пользователи будут взаимодействовать друг с другом на сервере через скрипт. Я не хочу требовать от пользователей загрузки / установки чего-либо, кроме клиента SSH, но я хочу ограничить доступ ко всем частям сервера, кроме сценария.

1 ответ1

2

Моим решением было последовать комментарию Кеннета и настроить lshell - это было довольно легко и быстро сделать.

  1. Запустите sudo apt install lshell чтобы получить lshell
  2. Создать группу UNIX (например, sudo groupadd testgroup)
  3. Добавьте необходимых пользователей в вашу группу (например, sudo usermod -a -G testgroup username)
  4. Также добавьте пользователей в группу lshell (например, sudo usermod -a -G lshell username)
  5. Отредактируйте /etc/lshell.conf с желаемой конфигурацией (см. Ниже)
  6. Установите lshell в качестве оболочки по умолчанию для пользователей (например, chsh -s /usr/bin/lshell username)

В приведенной ниже конфигурации testuser может запускать script.py только после входа в систему через SSH. Они не могут соединиться с SCP/SFTP или просматривать файловую структуру через оболочку.

[grp:testgroup]
login_script    : "python /some/path/script.py"
path            : "/some/path/"
forbidden       : ["ls", "echo", "cd"]
scp             : 0
sftp            : 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .