Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Permisos para crear fichero PID

37 views
Skip to first unread message

Josu Lazkano

unread,
Nov 9, 2015, 11:30:06 AM11/9/15
to
Hola a todos,

Estoy configurando el servico de transmission-daemon para poder
compartir contenido en internet. Estoy viendo en los logs que el
servicio no puede crear el fichero PID en /var/run/

Nov 9 14:47:28 servidor transmission-daemon[3663]: [2015-11-09
14:47:28.087 CET] Unable to save pidfile
"/var/run/transmission-daemon.pid": Permission denied (daemon.c:573)

El usuario con que se ejecuta el servicio es "debian-transmission":

# id debian-transmission
uid=108(debian-transmission) gid=114(debian-transmission)
groups=114(debian-transmission)

Originalmente el PID se gaurdaba en
"/var/run/transmission/transmission-daemon.pid", he cambiado la ruta,
no se si importa.

¿Como puedo hacer para que se pueda crear ese fichero?

Un saludo.

--
Josu Lazkano

fernando sainz

unread,
Nov 9, 2015, 11:50:02 AM11/9/15
to
El día 9 de noviembre de 2015, 17:26, Josu Lazkano
<josu.l...@gmail.com> escribió:
Ese directorio es de root y tiene los permisos:

drwxr-xr-x 29 root root 1240 nov 9 16:12 /run

Por lo que otro usuario no puede "CREAR" ficheros pero si podría
escribir si el fichero existiera y su propietario fuera ese usuario.
(man chown)

Si te fijas en los que tienes verás que hay ficheros y directorios con
propietario distinto de root
Si el directorio te pertenece podrás crear ficheros en él.

S2.

Josu Lazkano

unread,
Nov 9, 2015, 4:40:02 PM11/9/15
to
El día 9 de noviembre de 2015, 17:47, fernando sainz
<fernandoj...@gmail.com> escribió:
Gracias por contestar Fernando,

Me he fijado que existen archivos y directorios con usuarios y grupos
diferentes a root,

Pero por lo que veo el direcotrio /run esta montado sobre un fs volatil:

# df -h | grep run
tmpfs 396M 5.5M 391M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock

Puede que sea por eso que cada vez que arranque pierda toda la
informacion y despues no pueda crear dicho fichero.

Pero por esa razon, los demos directorios tampoco existirian:

# ls -lh /run/ | grep -v root
total 60K
drwxr-x--- 2 Debian-exim Debian-exim 60 Nov 9 22:28 exim4
-rw-r--r-- 1 statd nogroup 4 Nov 9 22:28 rpc.statd.pid

¿Se os ocurre algo?

Gracias por todo y un saludo.

--
Josu Lazkano

fernando sainz

unread,
Nov 9, 2015, 5:20:02 PM11/9/15
to
El día 9 de noviembre de 2015, 22:34, Josu Lazkano
<josu.l...@gmail.com> escribió:
Vale, no tengo el demonio ese instalado, pero imagino que se arrancará
como los demás desde un script en /etc/init.d
He visto otros demonios y aquí crean el directorio que usan y le
cambian de propietario.
(No se si en Jessie esto va igual, pero ahora no estoy en ella.)

Ahí probablemente vendrá donde quiere escribir el .pid

Ten en cuenta que la mayor parte de los demonios se inician por root,
pero luego cambian su id a otro usuario para evitar problemas de
seguridad.

S2.

Josu Lazkano

unread,
Nov 10, 2015, 2:00:03 AM11/10/15
to
El día 9 de noviembre de 2015, 23:14, fernando sainz
Gracias de nuevo,

Tienes razon, aqui esta el script de init: http://paste.debian.net/330503/

Tambien esta el fichero /etc/default/transmission-daemon:
http://paste.debian.net/330504/

De momento he configurado el /etc/rc.local asi:

mkdir /var/run/transmission
chown debian-transmission:debian-transmission /var/run/transmission/

Ya se que no es la mejor forma pero para pasar del paso me funciona.

Muchas gracias por vuestra ayuda.

Saludos.

--
Josu Lazkano

Camaleón

unread,
Nov 10, 2015, 10:10:04 AM11/10/15
to
Hum... ¿dices que lo has cambiado de motu propio? ¿Por qué motivo?

Vuelve a dejarlo como estaba y si funciona seguramente sea porque el
directorio donde se guardaba el PID del servicio tenía los permisos
adecuados para que el usuario "debian-transmission" tuviera acceso de
escritura en él.

Por otra parte no dices si usas sysvinit o systemd y eso puede marcar una
diferencia.

Saludos,

--
Camaleón

Josu Lazkano

unread,
Nov 24, 2015, 4:30:04 PM11/24/15
to
Hola de nuevo y gracias por responder,

Creo que utilizo el systemd, tengo el que viene por defecto con Debian Jessie.

Me acabo de dar cuenta que tambien me pasa con otro servicio. Y es a
raiz de alguna actualizacion, no se exactamente cual. Antes no tenia
este problema.

El servicio mythbackend tampoco puedo ejecutarlo:

root@server:~# ls -al /var/run/mythtv/
total 0
drw-r-xr-x 2 mythtv root 40 Nov 24 17:54 .
drwxr-xr-x 25 root root 880 Nov 24 17:54 ..
root@server:~# /etc/init.d/mythtv-backend start
[....] Starting mythtv-backend (via systemctl):
mythtv-backend.serviceJob for mythtv-backend.service failed. See
'systemctl status mythtv-backend.service' and 'journalctl -xn' for
details.
failed!
root@server:~# chmod 755 /var/run/mythtv/
root@server:~# /etc/init.d/mythtv-backend start
[ ok ] Starting mythtv-backend (via systemctl): mythtv-backend.service.

Lo malo es que si reinicio el servidor se vuelve a poner los valores
de por defecto y tengo que hacer el chmod.

En la lista de deb-multimedia (de donde es el servicio mythbackend) me
dicen que a ellos por defecto les viene asi los permisos:

[stse@osgiliath]: ls -al /var/run/mythtv/
insgesamt 4
drwxr-xr-x 2 mythtv root 60 Nov 24 07:39 .
drwxr-xr-x 44 root root 1580 Nov 24 14:30 ..
-rw-r–r– 1 mythtv mythtv 5 Nov 24 07:39 mythbackend.pid

Cuando a mi me falta la "x" del directorio:

root@server:~# ls -al /var/run/mythtv/
total 0
drw-r-xr-x 2 mythtv root 40 Nov 24 17:54 .
drwxr-xr-x 25 root root 880 Nov 24 17:54 ..

No se como resolver el problema. Lo unico raro que tengo es que
utilizo el kernel del repositorio jessie-backports, he probado a poner
el de jessie y me pasa lo mismo.

¿Como puedo hacer que los cambios que haga en el /run se mantengan
despues de los reinicios?

Gracias por todo y saludos.

--
Josu Lazkano

Camaleón

unread,
Nov 25, 2015, 10:00:04 AM11/25/15
to
El Tue, 24 Nov 2015 22:25:07 +0100, Josu Lazkano escribió:

> El día 10 de noviembre de 2015, 16:03, Camaleón <noel...@gmail.com>
> escribió:

(...)

>>> Originalmente el PID se gaurdaba en
>>> "/var/run/transmission/transmission-daemon.pid", he cambiado la ruta,
>>> no se si importa.
>>>
>>> ¿Como puedo hacer para que se pueda crear ese fichero?
>>
>> Hum... ¿dices que lo has cambiado de motu propio? ¿Por qué motivo?
>>
>> Vuelve a dejarlo como estaba y si funciona seguramente sea porque el
>> directorio donde se guardaba el PID del servicio tenía los permisos
>> adecuados para que el usuario "debian-transmission" tuviera acceso de
>> escritura en él.
>>
>> Por otra parte no dices si usas sysvinit o systemd y eso puede marcar
>> una diferencia.
>>
>>
> Hola de nuevo y gracias por responder,
>
> Creo que utilizo el systemd, tengo el que viene por defecto con Debian
> Jessie.

Ok.

> Me acabo de dar cuenta que tambien me pasa con otro servicio. Y es a
> raiz de alguna actualizacion, no se exactamente cual. Antes no tenia
> este problema.
>
> El servicio mythbackend tampoco puedo ejecutarlo:
>
> root@server:~# ls -al /var/run/mythtv/
> total 0 drw-r-xr-x 2 mythtv root 40 Nov 24 17:54 .
> drwxr-xr-x 25 root root 880 Nov 24 17:54 ..
> root@server:~# /etc/init.d/mythtv-backend start [....] Starting
> mythtv-backend (via systemctl):
> mythtv-backend.serviceJob for mythtv-backend.service failed. See
> 'systemctl status mythtv-backend.service' and 'journalctl -xn' for
> details.
> failed!

(...)

Ejecuta los comandos que indican "systemctl status mythtv-backend.service"
y "journalctl -xn" para ver más detalles.

Aunque parecen dos problemas distintos porque en este caso no has
cambiado manualmente ninguna configuración y usas la que viene de serie,
en el caso de MythTV sí dicen expresamente que hay que tener en cuenta
cuando se usa con systemd:

https://www.mythtv.org/wiki/Systemd_mythbackend_Configuration

Y revisa también la configuración inicial por si te faltara algo:

https://www.mythtv.org/wiki/User_Manual:Initial_Installation

Saludos,

--
Camaleón

Josu Lazkano

unread,
Nov 26, 2015, 4:10:03 PM11/26/15
to
El día 26 de noviembre de 2015, 22:04, Josu Lazkano
<josu.l...@gmail.com> escribió:
> Gracias por contestar Camaleon,
>
> Esto es lo que tengo:
>
>
> --
> Josu Lazkano

Perdona, que he enviado sin querer.

Esto es lo que tengo:

# /etc/init.d/mythtv-backend start
[....] Starting mythtv-backend (via systemctl):
mythtv-backend.serviceJob for mythtv-backend.service failed. See
'systemctl status mythtv-backend.service' and 'journalctl -xn' for
details.
failed!

# systemctl status mythtv-backend.service
● mythtv-backend.service - LSB: Start/Stop the MythTV server.
Loaded: loaded (/etc/init.d/mythtv-backend)
Active: failed (Result: exit-code) since Thu 2015-11-26 22:02:40 CET; 9s ago
Process: 2924 ExecStart=/etc/init.d/mythtv-backend start
(code=exited, status=136)

Nov 26 22:02:40 mitxetv mythtv-backend[2924]: Starting MythTV server: mythba...:
Nov 26 22:02:40 mitxetv mythtv-backend[2924]: eno: Permission denied (13)
Nov 26 22:02:40 mitxetv systemd[1]: mythtv-backend.service: control process...36
Nov 26 22:02:40 mitxetv systemd[1]: Failed to start LSB: Start/Stop the Myt.....
Nov 26 22:02:40 mitxetv systemd[1]: Unit mythtv-backend.service entered fai...e.
Hint: Some lines were ellipsized, use -l to show in full.

# chmod 755 /var/run/mythtv/

# /etc/init.d/mythtv-backend start
[ ok ] Starting mythtv-backend (via systemctl): mythtv-backend.service.

Segun leo en la wiki, necesitaria añadir esto en /etc/init.d/mythtv-backend?

# Sanity check on required folders
if [ ! -x /var/log/mythtv ]; then
# make logging folder
mkdir -p -m 755 /var/log/mythtv
chown -hR mythtv:mythtv /var/log/mythtv
fi
# make pid folder
mkdir -p -m 755 /run/mythtv
chown -hR mythtv:mythtv /run/mythtv

No entiendo muy bien porque dejo de fallar de un momento a otro.

Gracias y saludos.


--
Josu Lazkano

Josu Lazkano

unread,
Nov 26, 2015, 4:10:03 PM11/26/15
to
El día 25 de noviembre de 2015, 15:56, Camaleón <noel...@gmail.com> escribió:

Josu Lazkano

unread,
Nov 27, 2015, 8:20:03 AM11/27/15
to
Gracias a todos por vuestra ayuda.

Lo he soluciona añadiendo "mkdir -p -m 755 $RUNDIR" en el
/etc/init.d./mythtv-backend

Camaleón

unread,
Nov 27, 2015, 9:40:02 AM11/27/15
to
El Thu, 26 Nov 2015 22:07:41 +0100, Josu Lazkano escribió:

> El día 26 de noviembre de 2015, 22:04, Josu Lazkano
> <josu.l...@gmail.com> escribió:
>> El día 25 de noviembre de 2015, 15:56, Camaleón <noel...@gmail.com>
>> escribió:

(...)

>>> Ejecuta los comandos que indican "systemctl status
>>> mythtv-backend.service"
>>> y "journalctl -xn" para ver más detalles.
>>>
>>> Aunque parecen dos problemas distintos porque en este caso no has
>>> cambiado manualmente ninguna configuración y usas la que viene de
>>> serie, en el caso de MythTV sí dicen expresamente que hay que tener en
>>> cuenta cuando se usa con systemd:
>>>
>>> https://www.mythtv.org/wiki/Systemd_mythbackend_Configuration
>>>
>>> Y revisa también la configuración inicial por si te faltara algo:
>>>
>>> https://www.mythtv.org/wiki/User_Manual:Initial_Installation
>>>
>
> Perdona, que he enviado sin querer.
>
> Esto es lo que tengo:
>
> # /etc/init.d/mythtv-backend start [....] Starting mythtv-backend (via
> systemctl):
> mythtv-backend.serviceJob for mythtv-backend.service failed. See
> 'systemctl status mythtv-backend.service' and 'journalctl -xn' for
> details.
> failed!
>
> # systemctl status mythtv-backend.service ● mythtv-backend.service -
> LSB: Start/Stop the MythTV server.
> Loaded: loaded (/etc/init.d/mythtv-backend)
> Active: failed (Result: exit-code) since Thu 2015-11-26 22:02:40 CET;
> 9s ago
> Process: 2924 ExecStart=/etc/init.d/mythtv-backend start
> (code=exited, status=136)

No entiendo por qué usa "/etc/init.d/" si el sistema tiene systemd.
¿Acaso MythTV no usa de manera nativa systemd? :-?

(...)

> Nov 26 22:02:40 mitxetv mythtv-backend[2924]: eno: Permission denied
> (13)

(...)

> # chmod 755 /var/run/mythtv/
>
> # /etc/init.d/mythtv-backend start [ ok ] Starting mythtv-backend (via
> systemctl): mythtv-backend.service.

Sí, esta claro que parece un problema con los permisos del directorio
pero eso debe de hacerlo el script automáticamente, tú no deberías de
editar nada. No sé, podría ser un bug, considera informar de esto el D-M,
al fin y al cabo el paquete lo crean ellos.

> Segun leo en la wiki, necesitaria añadir esto en
> /etc/init.d/mythtv-backend?
>
> # Sanity check on required folders if [ ! -x /var/log/mythtv ]; then #
> make logging folder mkdir -p -m 755 /var/log/mythtv chown -hR
> mythtv:mythtv /var/log/mythtv fi # make pid folder mkdir -p -m 755
> /run/mythtv chown -hR mythtv:mythtv /run/mythtv
>
> No entiendo muy bien porque dejo de fallar de un momento a otro.

Porque los permisos del directorio "/run" los gestiona systemd (euid 0)
cuando está habilitado. Ahora bien, no me termina de convencer que tengas
que definir manualmente los permisos de ese directorio para que funcione
la aplicación, eso no es normal, algo falla ahí.

Saludos,

--
Camaleón
0 new messages