LinuxForum.Fans
Тема

rc.local помощь

Автор: BMW_M6 12 сообщений 4601 просмотров
#257901

Здравствуйте уважаемы пользователи! :)
Помогите пожалуйста разобраться с файлом rc.local У меня имеется скрипт запуска игровых серверов, который должен будет стартовать при запуске сервера. Файл лежит грубо говоря в /home/vlad/s1/ && ./sstart.sh
Соответственно в rc.local пишу "cd /home/vlad/s1/ && ./ssart.sh"
Вопрос:
Как сделать запуск от пользователя vlad?
На системе два пользователя root and vlad

#257903
"BMW M6" написал:
Соответственно в rc.local пишу "cd /home/vlad/s1/ && ./ssart.sh"

А просто

text
/home/vlad/s1/ssart.sh

чем не устраивает?

"BMW M6" написал:
Как сделать запуск от пользователя vlad?

С помощью sudo.

#257904

То есть. sudo nano /etc/rc.local и там до exit0 добавить /home/vlad/s1/ssart.sh так? И старт скрипта будет от пользователя vlad.

#257906
BMW M6 написал:
который должен будет стартовать при запуске сервера. Файл лежит грубо говоря в /home/vlad/s1/ && ./sstart.sh
Соответственно в rc.local пишу ...

Не надо писать в rc.local, есть специально для этого опции в /etc/network/interfaces
Вот пример с iptables-save/restore
/etc/network/interfaces

text
auto eth0
  iface eth0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    up iptables-restore
    down iptables-save
    # Также можно:
    pre-up <command>
    post-up <command>

каталоги из которых подхватываются стартовые файлы:

text
/etc/network/
/if-up.d/      if-down.d/       if-post-down.d/  if-pre-up.d/     if-up.d/         run/ 
#257908

Скажу честно, ничего не понял. Причём тут /etc/network/interfaces ?

#257909
"BMW M6" написал:
То есть. sudo nano /etc/rc.local и там до exit0 добавить /home/vlad/s1/ssart.sh так? И старт скрипта будет от пользователя vlad.

Нет, не так.

В /etc/rc.local примерно так:

text

sudo -u vlad /home/vlad/s1/ssart.sh &

Предварительно нужно с помощью visudo настроить sudo добавив строку

text

ALL ALL=(vlad) NOPASSWD: /home/vlad/s1/ssart.sh

Хотя, наверное, правильнее исправить скрипт /home/vlad/s1/ssart.sh, чтобы игровой сервер запускался с указанием нужного пользователя. Разумеется, если этот сервер поддерживает такие опции.

#257911
"Lupo Alberto" написал:
Предварительно нужно с помощью visudo настроить sudo добавив строку
text
ALL ALL=(vlad) NOPASSWD: /home/vlad/s1/ssart.sh

Может, и без этого получится обойтись.

#257912
BMW M6 написал:
Скажу честно, ничего не понял. Причём тут /etc/network/interfaces ?

У тебя сервер стартует как? Без сетевых интерфейсов он же не работает.
Соответственно для пользовательских скриптов сделаны конструкции pre-up/up и соответствующие каталоги.

#257913

Зачем sudo, не пойму, чем не устраивает

text
su - username -c "program &"

ы. не у всех юзеров в системе может быть определенна среда выполнения. Для этого ещё надо указать параметр: например, -s /bin/bash

#257920

Вот как стартует сервер

text
screen -A -m -d -S awp ./srcds_run -console -game cstrike -port 27027 +maxplayers 20 +map awp_lego_2010 +sv_lan 0 +ip 0.0.0.0 -nohltv

Таковых 20, везде разные скрины, и порты. Тачка стоит в ДЦ.

#257921
"newzenon" написал:
Зачем sudo, не пойму,

Только из-за принципа «каждая программа должна хорошо выполнять свою фунцию».

text

man sudo

NAME sudo, sudoedit - execute a command as another user

text

man su

НАЗВАНИЕ su - изменяет ID пользователя или делает его суперпользователем

#257923

Так поясню,

text
screen -A -m -d -S awp ./srcds_run -console -game cstrike -port 27027 +maxplayers 20 +map awp_lego_2010 +sv_lan 0 +ip 0.0.0.0 -nohltv

это скрипт запуска сервера, который лежит в start.sh
файл start.sh запускается другим файлом который запускает ещё 20 серверов начиная от css заканчивая csgo

Войдите или зарегистрируйтесь, чтобы ответить.