Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Запуск демона от пользователя  (Прочитано 4652 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bacbka87

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Запуск демона от пользователя
« : 21 Февраль 2017, 02:46:16 »
Здравствуйте!
Вопрос: есть ли возможность запускать службы из под пользователя, не используя команду sudo? Возможно в настройках systemd что то подправить можно...
Суть такова - хочу сделать скрипт на рабочем столе, чтобы vsftpd стартовал при его запуске. Точно также имеется желание создать скрипт который будет менять конфиг minidlna и перезапускать её. Всё это делается для удобство жены. Не хочется ей объяснять про всякие "sudo" и т.д. Да и в общем, интересуте проблема запуска служб от пользователя.
 

Оффлайн Morisson

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #1 : 21 Февраль 2017, 08:37:22 »
systemctl --user enable твой.serviceГде --user -не имя пользователя, а прям --user
Доступные опции: start stop enable disable status
Или:
sudo EDITOR=nano visudoИ добавляем в конце
имя_пользователя ALL=(ALL) NOPASSWD: /путь/до/твоей/командыТак не требуется ввод пароля при выполнении команды/скрипта. Например:
jeronimo ALL=(ALL) NOPASSWD: /sbin/shutdown - выключение командой без пароля от обычного пользователя
В последнем случае нужно быть предельно аккуратным, очень важна пуктуация, синтаксис, пробелы..., можно сломать sudo
« Последнее редактирование: 21 Февраль 2017, 08:39:11 от Morisson »

Оффлайн bacbka87

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #2 : 21 Февраль 2017, 18:42:00 »
Меня интересует первый способ. При первом вводе:
systemctl --user start vsftpd.serviceПоступил ответ, что данная служба не существует.
Посмотрев информацию:
https://wiki.archlinux.org/index.php/Systemd/User#Example
Я понял, что требуется сначала создать файл ~/.config/systemd/user/vsftpd.serviceТакже в папке ~/.config/ создал файлы конфига и лога vsftpd, дал им права пользователя.
Содержание файла vsftpd.service: [Unit]
Description=vsftpd FTP server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/vsftpd /home/.config/vsftpd/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty

[Install]
WantedBy=multi-user.target

В итоге:
bacbka@bacbka-desktop:~/.config/vsftpd$ systemctl --user start vsftpd.service
bacbka@bacbka-desktop:~/.config/vsftpd$ systemctl --user status vsftpd.service
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/home/bacbka/.config/systemd/user/vsftpd.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Вт 2017-02-21 18:39:50 MSK; 9s ago
  Process: 7085 ExecStart=/usr/sbin/vsftpd /home/.config/vsftpd/vsftpd.conf (code=exited, status=2)
  Process: 7083 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
 Main PID: 7085 (code=exited, status=2)

фев 21 18:39:50 bacbka-desktop systemd[2515]: Starting vsftpd FTP server...
фев 21 18:39:50 bacbka-desktop systemd[2515]: Started vsftpd FTP server.
фев 21 18:39:50 bacbka-desktop systemd[2515]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
фев 21 18:39:50 bacbka-desktop systemd[2515]: vsftpd.service: Unit entered failed state.
фев 21 18:39:50 bacbka-desktop systemd[2515]: vsftpd.service: Failed with result 'exit-code'.
Куда смотреть дальше?
Интересует вариант с Systemd -,всё таки, новый стандарт. Следует разобраться.


 

Оффлайн Morisson

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #3 : 21 Февраль 2017, 18:48:06 »
bacbka87, ну ты значит что-то в юните накосячил.
Посмотри, как это хозяйство в profile-sync-daemon обустроено. Возьми его за пример.

Пользователь добавил сообщение 21 Февраль 2017, 18:50:02:
[Unit]
Description=Profile-sync-daemon
Documentation=man:psd(1) man:profile-sync-daemon(1)
Documentation=https://wiki.archlinux.org/index.php/Profile-sync-daemon
Wants=psd-resync.service
RequiresMountsFor=/home/
After=winbindd.service

[Service]
Type=oneshot
RemainAfterExit=yes
# just call /bin/true and let psd-resync.service do it
ExecStart=/bin/true
ExecStop=/usr/bin/profile-sync-daemon unsync

[Install]
WantedBy=default.target

Пользователь добавил сообщение 21 Февраль 2017, 18:52:27:
https://wiki.archlinux.org/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
« Последнее редактирование: 21 Февраль 2017, 18:52:27 от Morisson »

Оффлайн bacbka87

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #4 : 21 Февраль 2017, 19:54:58 »
Сколько не пытался что то править. Всё равно не получается.

vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMEN
В приведенном сообщении переменную status кто задаёт? Это сам процесс vsftpd или служба Systemd делает?

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #5 : 21 Февраль 2017, 20:03:59 »
/home/.config/vsftpd/vsftpd.conf
че за путь такой? Здесь нет ошибки? .config лежит прямо в /home, или все-таки в /home/bacbka ?

Оффлайн Morisson

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #6 : 21 Февраль 2017, 20:14:42 »
Heider, +100500 к наблюдательности))) Точно.

Пользователь добавил сообщение 21 Февраль 2017, 20:19:26:
bacbka87, status- ответ systemd. Текущее состояние. Ты сам проверяешь вручную:
systemctl --user status vsftpd.servicestatus=2/INVALIDARGUMEN см. сообщение heider

Пользователь добавил сообщение 21 Февраль 2017, 20:21:31:
ExecStart=/usr/sbin/vsftpd /home/ИМЯ-ПОЛЬЗОВАТЕЛЯ/.config/vsftpd/vsftpd.conf
« Последнее редактирование: 21 Февраль 2017, 20:21:31 от Morisson »

Оффлайн bacbka87

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #7 : 21 Февраль 2017, 21:11:33 »
Дело не в этом. Уже попробовал менять. И копировал vsftpd.service из lib/ в /.config,задавал при этом права юзера на стандартные файлы vsfpd, но ничего не помогло. У меня большие сомнения в самом подходе.

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4309
  • Capture the truth
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #8 : 21 Февраль 2017, 22:09:43 »
Наверное, всё-таки для начала стоит ограничиться visudo и NOPASSWD. Менять права на стандартные файлы - в любом случае не надо.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн Morisson

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #9 : 22 Февраль 2017, 06:38:32 »
bacbka87, если эта служба не самописная, зачем ее запускать с правами пользователя?
sudo systemctl enable твой.сервис && sudo systemctl start твой.сервисВсе, служба запущена и работает, включается при загрузке системы. Ты вопрос ставь конкретнее. Если какая-то пользовательская прога не запукается от обычного пользователя- это один разговор. Тебе нужен автозапуск программы/команды- другой. Проще всего включать команду, требующую судо как выше написал с помощью visudo и такой-то матери и повесить ее на сочетание клавиш. И все
« Последнее редактирование: 22 Февраль 2017, 06:40:30 от Morisson »

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #10 : 22 Февраль 2017, 11:56:11 »
Проще всего включать команду, требующую судо как выше написал с помощью visudo и такой-то матери и повесить ее на сочетание клавиш.
Кстати, вполне неплохой вариант. Не давать полный NOPASSWD пользователю на все, а разрешить одну эту команду, и не нужны лишние пляски.

Оффлайн Morisson

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 4588
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #11 : 22 Февраль 2017, 13:39:18 »
sudo EDITOR=nano visudo
И добавляем в конце
Код: [Выделить]
имя_пользователя ALL=(ALL) NOPASSWD: /путь/до/твоей/команды
Так не требуется ввод пароля при выполнении команды/скрипта. Например:
Код: [Выделить]
jeronimo ALL=(ALL) NOPASSWD: /sbin/shutdown
- выключение командой без пароля от обычного пользователя
В последнем случае нужно быть предельно аккуратным, очень важна пуктуация, синтаксис, пробелы..., можно сломать sudo

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #12 : 22 Февраль 2017, 13:42:39 »
В последнем случае нужно быть предельно аккуратным, очень важна пуктуация, синтаксис, пробелы..., можно сломать sudo
Если править через visudo, а не напрямую, то там должно вывалиться сообщение об ошибке, если накосячишь с синтаксисом. В любом случае перед правкой лучше сделать:
sudo cp /etc/sudoers /etc/sudoers.bak
« Последнее редактирование: 22 Февраль 2017, 13:44:24 от Heider »

Оффлайн bacbka87

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Запуск демона от пользователя
« Ответ #13 : 22 Февраль 2017, 18:02:15 »
Спасибо всем за советы.

 

Страница сгенерирована за 0.102 секунд. Запросов: 22.