Transmisión: permiso denegado en disco USB

22

Tengo Raspberry Pi ejecutando RaspBMC con un WD MyBook conectado mediante USB. La unidad se monta automáticamente en /media/My Book. He creado una carpeta /media/My Book/downloadsy he configurado el directorio de descarga de Trasmission /media/My Book/downloads.

Cuando intento descargar un archivo, Transmission dice

Error: Permission denied (/media/My Book/downloads/The.Simpsons.S24E09.720p.HDTV.X264-DIMENSION [PublicHD]/The.Simpsons.S24E09.720p.HD

ls -la me da

drwx------ 1 pi       0 Dec 15 16:24 downloads 

Así que supongo que el problema es que la transmisión se ejecuta con un usuario diferente piy no puede escribir en la carpeta. Sin embargo cuando ejecuto

chmod 777 downloads -R

las operaciones tienen éxito sin ningún error pero los permisos no cambian, permanecen 700 solo para el propietario.

¿Qué estoy haciendo mal y cómo puedo habilitar la transmisión para escribir en ese directorio?

Igor Kulman
fuente

Respuestas:

19

Después de mucha lectura y frustración. En primer lugar, asegúrese de que el usuario normal tenga acceso de lectura y escritura a la unidad USB. La solución correcta 'no root' para tener acceso de escritura a la unidad USB es:

Paso 1: detener el demonio de transmisión

sudo service transmission-daemon stop

Paso 2: Agregar pial grupo de transmisión de Debian

sudo usermod -a -G debian-transmission pi 

Paso 3: cambiar el usuario daemon

sudo nano /etc/init.d/transmission-daemon

Cambiar USERa pi.

Paso 4 Cambie los derechos de la carpeta de archivos de configuración

sudo chown -R pi /var/lib/transmission-daemon/info/
sudo chmod 755 /var/lib/transmission-daemon/info/settings.json 

Paso 5: establezca los permisos correctos para la descarga / carpetas incompletas

sudo chown -R pi /somewhere/downloads
sudo chown -R pi /somewhere/incomplete

Paso 5: Inicia el demonio de transmisión

sudo service transmission-daemon start

Compilado de:

Biketire
fuente
2
Esta es la única respuesta correcta. Correr como rootestá mal. Hacer a chmod 777está mal. Establecer el grupo y el usuario correctos es la única forma correcta.
CousinCocaine
Esta debería ser la respuesta aceptada.
Paulo Rodrigues Pinto
1
Tal vez es la respuesta correcta, pero no me funciona.
rebolek
He cambiado el nombre de mi nombre de usuario pia algo más. Sin embargo, cuando lo hago ls -al, parece que mis archivos todavía están en un pigrupo. Con las instrucciones anteriores, ¿debería cambiar cada instancia de pimi nuevo nombre de usuario, o hacer alguna referencia al grupo que todavía está pi? Estas instrucciones no funcionan cuando cambié pimi nombre de usuario.
Keavon
@Keavon "¿debería cambiar cada instancia de pi a mi nuevo nombre de usuario" Sí, ¿también está el nuevo usuario en el grupo debian-tranmission?
Biketire
11

El problema era la forma en que se automatizó el disco USB. Lo monté manualmente con mount -t ntfs-3g y comenzó a funcionar.

Igor Kulman
fuente
44
Lo mismo me pasó a mí. Con el HDD montado automáticamente, todos los permisos se establecieron en 0700, pero montarlo con sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/ellos son 0777 y la transmisión funciona perfectamente, realmente extraño.
Puigcerber
Mi ExFAT se montó automáticamente exfat defaults,auto,umask=000,users,rw 0 0, cambié eso para montar con piID de usuario exfat defaults,uid=1000,gid=1000 0 0y funcionó. Compruebe esta respuesta de AskUbuntu: problema de propiedad / permiso con el montaje automático de la unidad
exfat
10

No soy un experto en Linux, pero podrías probar esto, podría funcionar. La mayor parte de esta información proviene de http://www.superfecta.ca/?p=44

sudo service transmission-daemon stop
sudo nano /etc/init.d/transmission-daemon

cambio

USER=debian-transmission

a

USER=root
ctrl-x
Y
# hit enter to overwrite
sudo service transmission-daemon start

Sé que correr como root es un gran linux no no (no estoy seguro si eso cuenta como correr en root) pero funcionó para mí, así que estoy bien con eso. Podrías intentarlo, USER=pipero no tengo amor allí, así que me quedé con la raíz

Spasmodean
fuente
3
Por supuesto, ejecutarse como root funciona, es solo un riesgo de seguridad.
Blaisorblade
Solo algo para agregar: Linux usa el archivo / etc / fstab para configurar puntos de montaje y permisos / propiedad de la unidad. Por lo tanto, tiene tres opciones: ejecutar la transmisión como root, ejecutar la transmisión como el propietario de la carpeta donde reside la unidad ( ls -lle dirá quién es el propietario) o modificar el archivo / etc / fstab para mostrar un propietario diferente (es decir, debian- transmisión).
Terry
Estaba enfrentando un problema similar al guardar torrents en un disco NAS montado como invitado. Intenté todas las soluciones mencionadas en todas partes, pero nada funcionó para mí, así que me di por vencido e hice que el demonio de transmisión se ejecutara como root. No me gusta, pero es lo único que funciona.
aalaap
Esto está mal y los demonios como este nunca deberían ejecutarse con privilegios de root. Debe eliminar esta respuesta porque dañará la configuración de otras personas.
CousinCocaine
5

Creo que su problema es que su memoria USB está formateada como NFTS o FAT, sistemas de archivos que no admiten los permisos por usuario / grupo. La solución es formatear como ext4. Si hace eso, también tendrá mucho menos retraso si está utilizando su Pi como centro de medios. Los controladores para el Pi son mucho más rápidos cuando usa ext4.

hifkanotiks
fuente
¿Considerablemente más rápido que ntfs-3g? ¿Podría mostrar algunos datos para respaldar esa declaración?
Joseph
@Joseph Fue principalmente un problema con la frambuesa pi 1 ya que NTFS es bastante pesado para la CPU. Aquí hay un punto de referencia de velocidades de transferencia: htpcguides.com/wp-content/uploads/2015/03/…
hifkanotiks
4

Ninguna de las respuestas aquí funcionó para mí, así que estoy escribiendo una nueva que hace referencia a https://pimylifeup.com/raspberry-pi-torrentbox/ que funcionó muy bien para mí y me permitió ejecutar la transmisión como piusuario para acceder a mi unidad USB. Esto no responde directamente al OP, pero esta pregunta es muy popular (primer resultado de Google) para este tipo de problema, así que lo puse aquí.

Entrar:

sudo vi /etc/init.d/transmission-daemon

y encontrar USERen la parte superior del archivo y cambiar a:

USER=pi

Luego necesitamos chownalgunos archivos en nuestro alcance de permisos:

sudo chown -R pi:pi /etc/transmission-daemon
sudo chown -R pi:pi /etc/init.d/transmission-daemon
sudo chown -R pi:pi /var/lib/transmission-daemon

Y luego ejecutar (esto es realmente importante, de lo contrario el demonio del servicio simplemente se ejecutará como debian-transmission)

sudo vi /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

y encontrar userallí y cambiar a:

user=pi

y la recarga de la unidad de servicio

sudo systemctl daemon-reload

Y finalmente necesitamos vincular nuestro archivo de configuración al directorio de inicio de pi y otorgarle permisos:

sudo mkdir -p /home/pi/.config/transmission-daemon/
sudo ln -s /etc/transmission-daemon/settings.json /home/pi/.config/transmission-daemon/
sudo chown -R pi:pi /home/pi/.config/transmission-daemon/

Y luego comience la transmisión nuevamente:

sudo service transmission-daemon start

y tu estas listo. Ahora debería funcionar.

Sammaye
fuente
2

Creo que una de las principales cosas que la gente pasa por alto es que debe montar su unidad usb / externa en la carpeta / mnt / myUsbDrive, y NO en / media / pi / myUsbDrive.

sudo umount /media/pi/usb_disk
sudo mkdir /mnt/usb_disk
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /mnt/usb_disk

Intenté cada respuesta dada en esta discusión (incluida la raíz) de cien maneras diferentes con diferentes opciones y no pude obtener la transmisión para guardar en mi unidad SSD USB. Luego, mientras leía algo diferente, se mencionó que no debía montarse en / media / pi ya que los demonios u otros grupos pueden no tener acceso. Así que monte la unidad USB en / mnt / usb_disk, configuro las rutas en /etc/transmission-daemon/settings.json en / mnt / usb_disk / downloads y la transmisión comienza a guardarse en el disco.

FYI, tengo user = pi en /etc/init.d/transmission-daemon.

FYI, cambié el propietario de / mnt / usb_disk / downloads a pi y group a debian-transmission con 777 permisos.

SolutionHelper
fuente
1
sudo chown debian-transmission /downloads

donde / downloads es el directorio en el que desea que estén sus descargas (o ubicación de montaje).

Esto es más seguro que usar root.

esto le da al 'usuario' los derechos de 'transmisión debian' sobre la carpeta

soltar
fuente
1

Encontré la misma solución que Igor y Puigcerber. Mi unidad estaba configurada para montaje automático, así que edité mi fstab para eliminar el montaje automático, luego usésudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/

dollerbill
fuente
1

Si bien la respuesta de biketire es correcta, Debian cambió a systemd recientemente y debe cambiar el usuario ahora aquí

sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

y asegúrate de que en la sección

[Service]

tienes la linea

User=pi
cstich
fuente
1

Solución:

Después de mucha lectura y frustración.

En primer lugar, asegúrese de que el usuario normal tenga acceso de lectura y escritura a la unidad USB. La solución correcta 'no root' para tener acceso de escritura a la unidad USB es:

Paso 1: detener el demonio de transmisión

sudo service transmission-daemon stop

Paso 2: agregue pi al grupo de transmisión de Debian

sudo usermod -a -G debian-transmission pi

Paso 3: cambiar el usuario daemon

sudo nano /etc/init.d/transmission-daemon

Cambiar USUARIO a pi.

sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

Cambiar USUARIO a pi.

Paso 4: cambie los derechos de la carpeta de archivos de configuración sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Paso 5: establezca los permisos correctos para la descarga / carpetas incompletas sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Paso 6: iniciar el demonio de transmisión

sudo service transmission-daemon start

Sabi
fuente
1

Descubrí que el sistema de archivos era el problema para mí. Afortunadamente, era un nuevo disco duro USB, así que no fue un problema formatearlo.

Primero formateé el disco duro para ext4

sudo mkfs.ext4 /dev/<usb disk> -L <diskname>

Luego monté el disco duro usb

sudo mount /dev/<usb disk> /mnt/<my mount folder>

Una vez montado, cambié el grupo del disco duro a debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

Finalmente agregué el usuario pi al grupo de transmisión de Debian y funcionó muy bien para mi caso de uso.

Mella
fuente
0

Una vez que cambia el usuario de transmisión-daemon a root, el problema de permisos desaparece con un recurso compartido usb o smb.

sudo nano /etc/init.d/transmission-daemon

luego cambie la línea de usuario a:

USUARIO = root

usuario6220
fuente
77
Eso es un riesgo de seguridad.
Blaisorblade
Esto está mal y los demonios como este nunca deberían ejecutarse con privilegios de root. Debe eliminar esta respuesta porque dañará la configuración de otras personas.
CousinCocaine
0

El problema se relaciona con que FAT no reconoce a múltiples usuarios.

Si usa una línea en su archivo fstab como / dev / [your dev] / mnt / usb1 vfat por defecto, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

debería montar su sistema de archivos con carpetas 777 y archivos como 666 propiedad de "nobody" perteneciente a "nogroup"

deberá volver a montar (o reiniciar) para que se vean los cambios.

JonH
fuente
0

Finalmente encontré una solución de trabajo.

Dejé de compartir dispositivos extraíbles en la configuración XBIAN y agregué el disco a shares.conf a mano

[mybook]
    path = /media/mybook
    guest ok = yes
    read only = no
    browseable = yes
    writeable = yes
    force user = xbian

Solo agregarlo a shares.conf no es suficiente, el uso compartido automático debe estar desactivado.

Igor Kulman
fuente
0

Tuve un problema de permisos similar.

Intenté seguir la solución de sabi a ciegas y descubrí que no funcionaba. No solo eso, sino que creo que es un poco exagerado.

En mi situación, simplemente pasé por alto el hecho de que el demonio de transmisión se estaba ejecutando como usuario: debian-transmission .

Por lo tanto, para otorgar permiso para la transmisión-demonio para escribir en una carpeta ( nombre_carpeta ), solo necesita hacer los siguientes comandos:

chgrp -R folder_name
chmod -R 765 folder_name

Esto es suponiendo por supuesto que ha configurado correctamente settings.json ya

Liang
fuente
-1

chmod 777 debería otorgar a todos los usuarios todos los permisos para un archivo o directorio. Si eso no funciona, es probable que el usuario que ejecuta ese comando chmod no sea el propietario del directorio o archivo. Por ejemplo, si el usuario root posee / media / My Book / y el usuario pi no podrá cambiar los permisos de ese archivo. Los tres números que pasa al comando chmod afectan al propietario, al grupo y a todos los demás, en ese orden. Por lo tanto, la configuración más común para un directorio es "chmod 755 somedirectory". Eso significa que el propietario puede leer, escribir y cambiar en el directorio, pero el grupo y todos los demás solo pueden leer archivos y cambiar en el directorio.

shapr
fuente
1
Esta respuesta realmente no responde la pregunta. El autor de la pregunta ya ha intentado modificar el archivo y no funcionó.
hifkanotiks