Запустите скрипт bash от другого пользователя с Django - PullRequest
0 голосов
/ 13 апреля 2020

это мой первый Django проект, извиняюсь, если скажу какую-то ерунду

Чтобы запустить игровой сервер, я должен войти в систему с s sh как пользователь, запустивший сервер, затем набрать ./server start, чтобы запустить его.

Я хочу иметь возможность запустить эту команду из веб-приложения. На данный момент мне удалось сделать это на Django.

Что я хочу сделать, это то, что когда я нажимаю кнопку «Пуск», эти команды запускаются на сервере side:

su - gameuser -c '/home/gameuser/server start' > /dev/null 2>&1

Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как войти в систему как gameuser, так как я не запускаю веб-приложение как пользователь sudo.

Как я могу подойти к этой проблеме?

Заранее спасибо: D

1 Ответ

0 голосов
/ 14 апреля 2020
  1. Вы можете настроить s sh ключи для пользователя веб-приложения, чтобы войти в систему как gameuser без ввода пароля и выполнить: s sh gameuser@localhost - c '/ home / gameuser / server start' > / dev / null 2> & 1

  2. Вы можете настроить webuser на выполнение указанной команды с помощью sudo (файл sudoers довольно гибкий), добавьте следующее в / etc / sudoers webapp ALL = (gameuser ) ВСЕ, а затем вы можете запустить следующее как пользователь веб-приложения sudo su - gameuser - c '/ home / gameuser / запуск сервера'> / dev / null 2> & 1

  3. You может улучшить второй вариант, позволяя пользователю webapp выполнять только заданную команду c в качестве gameuser, например, написать сценарий запуска (/home/gameuser/server_start.sh) и добавить в / etc / sudoers:

webapp ALL = (gameuser) /home/gameuser/server_start.sh и снова вы сможете выполнить следующие действия более безопасным способом. sudo su -gameuser - c /home/gameuser/server_start.sh

...