LINUX.ORG.RU

Не могу запустить mpd

 ,


0

1

/etc/mpd.conf (копия /home/ekzotech/.config/mpd/mpd.conf):

music_directory "/home/ekzotech/Музыка"
playlist_directory "/home/ekzotech/.config/mpd/playlists"
db_file "/home/ekzotech/.config/mpd/mpd.db"
log_file "/home/ekzotech/.config/mpd/mpd.log"
pid_file "/home/ekzotech/.config/mpd/mpd.pid"
state_file "/home/ekzotech/.config/mpd/mpdstate"
user "ekzotech"
audio_output {
       type	"pulse"
       name	"Local Music Player Daemon"
       server	"127.0.0.1"
}

Пользователь mpd добавлен в группу ekzotech, в той же группе пользователь ekzotech. На каталог /home/ekzotech/.config/mpd сделан chmod -R g+rwx.

При запуске mpd через systemctl следующая ошибка:

● mpd.service - Music Player Daemon
   Loaded: loaded (/usr/lib/systemd/system/mpd.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Сб 2015-12-26 22:28:56 YEKT; 1s ago
  Process: 23100 ExecStart=/usr/bin/mpd --no-daemon (code=exited, status=1/FAILURE)
 Main PID: 23100 (code=exited, status=1/FAILURE)

дек 26 22:28:55 arch systemd[1]: Started Music Player Daemon.
дек 26 22:28:56 arch mpd[23100]: errno: failed to open log file "/home/ekzotech/.config/mpd/mpd.log" (config line 4): Permission denied
дек 26 22:28:56 arch systemd[1]: mpd.service: Main process exited, code=exited, status=1/FAILURE
дек 26 22:28:56 arch systemd[1]: mpd.service: Unit entered failed state.
дек 26 22:28:56 arch systemd[1]: mpd.service: Failed with result 'exit-code'.

Пробовал без секции user, - никакого эффекта. Пробовал создавать и удалять вышеуказанный файл - без разницы. Даже если сделать ошибку в пути - ошибка остаётся та же самое.

Уже 1,5 часа шарюсь по гуглу - идей нет никаких. Оно тупо не работает.

Да, при копировании секции про pulseaudio, потерялись пробелы между name и кавычками - он стал ругаться на неожиданный символ. Поправил - снова старая песня.

★★★★

Последнее исправление: ekzotech (всего исправлений: 1)

ну перемести log в заведомо разрешённый для записи каталог(например /tmp)

Запускается ли он просто через mpd из терминала?

Твой демон systemd от какого пользователя запускается?

Нужно как-то так:

....
[Service]
ExecStart=/usr/bin/mpd [options]
Restart=on-abort
User=%i
Group=group_name
....

Пробовал создавать и удалять вышеуказанный файл - без разницы.

мпд почему-то читает /etc/mpd.conf

hope13 ★★★
()
Последнее исправление: hope13 (всего исправлений: 3)
Ответ на: комментарий от intelfx

systemctl cat mpd

# /usr/lib/systemd/system/mpd.service
[Unit]
Description=Music Player Daemon
After=network.target sound.target

[Service]
User=mpd
ExecStart=/usr/bin/mpd --no-daemon

# allow MPD to use real-time priority 50
LimitRTPRIO=50
LimitRTTIME=infinity

[Install]
WantedBy=default.target

ls -laR ~ekzotech/.config/mpd

/home/ekzotech/.config/mpd:
итого 86128
drwxrwxr-x 1 ekzotech users       90 дек 26 22:47 .
drwxr-xr-x 1 ekzotech users     3156 дек 26 21:31 ..
-rwxrwxr-x 1 ekzotech users      436 дек 26 22:47 mpd.conf
-rw-rwxr-- 1 ekzotech users        0 дек 26 22:42 mpd.db
-rwxrwxr-x 1 ekzotech users 88185383 дек 26 22:41 mpd.log
-rwxrwxr-x 1 ekzotech users        6 дек 26 22:41 mpd.pid
-rwxrwxr-x 1 ekzotech users        0 дек 26 22:28 mpdstate
drwxrwxr-x 1 ekzotech users        0 дек 26 21:59 playlists

/home/ekzotech/.config/mpd/playlists:
итого 0
drwxrwxr-x 1 ekzotech users  0 дек 26 21:59 .
drwxrwxr-x 1 ekzotech users 90 дек 26 22:47 ..

ekzotech ★★★★
() автор топика
Ответ на: комментарий от hope13

Запускается ли он просто через mpd из терминала?

От юзера нет:

Dec 26 22:52 : socket: Failed to bind to '127.0.0.1:6600': Address already in use

ну перемести log в заведомо разрешённый для записи каталог(например /tmp)

Давал chmod 777 на каталог - та же ошибка остаётся. Уж наверняка при 777 он должен был бы получить права на запись.

Твой демон systemd от какого пользователя запускается?

Не знаю. Дефолт арча, не трогал ничего.

мпд почему-то читает /etc/mpd.conf

Файл в /etc является копией ~/.config/mpd/mpd.conf поэтому не критично. От юзера юзает конф из хомяка.

ekzotech ★★★★
() автор топика
Ответ на: комментарий от hope13

Так, нашёл ранее запущенную копию mpd и прибил её.

Теперь от юзера ругается на битую БД. Пока это весь прогресс.

ekzotech ★★★★
() автор топика
Ответ на: комментарий от kiotoze

если есть файл $HOME/.mpdconf, то убей его, может мешать

ekzotech@arch ~/.config/mpd $ cat ~/.mpdconf
cat: /home/ekzotech/.mpdconf: Нет такого файла или каталога
ekzotech ★★★★
() автор топика
Ответ на: комментарий от intelfx

Добавил. Теперь systemctl выдаёт это:

дек 26 23:08:32 arch mpd[24149]: Dec 26 23:08 : fatal_error: Failed to set group 100: Operation not permitted

Да, локально теперь работает. mpc я ниасилил, запустил cantata - музыка играет, БД создал через mpc update.

Но всё же интересно, почему через systemctl не хочет стартовать?

ekzotech ★★★★
() автор топика
Последнее исправление: ekzotech (всего исправлений: 2)
Ответ на: комментарий от intelfx

Спасибо! Ты кудесник =)

А думал, что mpd удовлетвориться группой ekzotech.

Сейчас запустил через systemctl - всё ок, ошибок нет. Запустил от юзера cantata - сразу играет, всё ок.

ekzotech ★★★★
() автор топика
Ответ на: комментарий от intelfx

Не без того.

Почему его не устроила группа ekzotech? mpd был в группе, группе были даны права g+rwx. В чём магия users?

ekzotech ★★★★
() автор топика
Ответ на: комментарий от ekzotech

Потому что директория mpd (/home/ekzotech/.config/mpd) со всеми вложенными файлами принадлежит группе users, а не группе ekzotech.

В Unix права доступа к любому файлу или директории выглядят как три секции по три бита. Также указывается пользователь, «владеющий» файлом, и группа, «владеющая» файлом. Биты соответствуют правам на чтение, запись и выполнение. Первая секция — это права пользователя, «владеющего» файлом. Вторая секция — это права всех пользователей, которые состоят в группе, «владеющей» файлом. Третья секция — это права остальных.

На примере файла mpd.log:

-rwxrwxr-x 1 ekzotech users 88185383 дек 26 22:41 mpd.log

Эта строка говорит, что 1) владелец (пользователь ekzotech) имеет право читать файл, писать в него и выполнять его (кстати, последнее лишнее); 2) любой пользователь, состоящий в группе users, имеет те же права; 3) остальные права записи не имеют.

Ну вот и смотри. При запуске mpd «из консоли» он запускался от имени пользователя ekzotech, ну и всё было хорошо. При запуске mpd через systemd, согласно директиве User=mpd, процесс стартовал от имени пользователя mpd. (Директива user в конфиге самого mpd роли не играла, поскольку смена пользователя текущего процесса — привилегированная операция.) А поскольку пользователь mpd исходно не состоял в группе users, к нему применялись права «others», т. е. запрет записи.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Потому что директория mpd (/home/ekzotech/.config/mpd) со всеми вложенными файлами принадлежит группе users, а не группе ekzotech.

А, блин, я же не делал chown -R ekzotech:ekzotech. Или это всё равно не помогло бы?

По остальному - я немного знаком, но ты хорошо объяснил, теперь я понял, спасибо.

ekzotech ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.