Transmissão: permissão negada no disco USB

22

Tenho o Raspberry Pi executando o RaspBMC com um WD MyBook conectado usando USB. A unidade é montada automaticamente em /media/My Book. Criei uma pasta /media/My Book/downloadse configurei o diretório de download do Trasmission como sendo /media/My Book/downloads.

Quando tento baixar um arquivo, a Transmission diz

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

ls -la me dá

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

Então, acho que o problema é que a transmissão é executada sob um usuário diferente pie não pode gravar na pasta. No entanto, quando executo

chmod 777 downloads -R

as operações são bem-sucedidas sem nenhum erro, mas as permissões não são alteradas, elas permanecem 700 apenas para o proprietário.

O que estou fazendo de errado e como posso ativar o Transmission para gravar nesse diretório?

Igor Kulman
fonte

Respostas:

19

Depois de muita leitura e frustração. Antes de tudo, verifique se o usuário normal leu e gravou acesso à unidade USB. A correção 'não raiz' correta para ter acesso à gravação na unidade USB é:

Etapa 1: parar o daemon de transmissão

sudo service transmission-daemon stop

Etapa 2: Adicionar piao grupo de transmissão debian

sudo usermod -a -G debian-transmission pi 

Etapa 3: alterando o daemon-user

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

Mude USERpara pi.

Etapa 4 Altere os direitos da pasta dos arquivos de configuração

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

Etapa 5: defina as permissões corretas para as pastas de download / incompletas

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

Etapa 5: iniciar o daemon de transmissão

sudo service transmission-daemon start

Compilado a partir de:

Biketire
fonte
2
Esta é a única resposta correta. Correndo como rootestá errado. Fazer um chmod 777está errado. Definir o grupo e o usuário corretos é a única maneira correta.
CousinCocaine
Essa deve ser a resposta aceita.
Paulo Rodrigues Pinto
1
Talvez seja a resposta correta, mas não funciona para mim.
rebolek
Renomeei meu nome de usuário de pipara outra coisa. No entanto, quando o faço ls -al, meus arquivos ainda estão em um pigrupo. Com as instruções acima, devo alterar todas as instâncias pipara o meu novo nome de usuário ou alguma referência ao grupo que ainda está pi? Essas instruções não funcionam quando eu mudei todas pipara o meu nome de usuário.
26418 Keavon
@Keavon "devo mudar todas as instâncias de pi para meu novo nome de usuário" Sim, também é o novo usuário no grupo debian-tranmission?
Biketire
11

O problema era a maneira como o disco USB era automontado. Montei-o manualmente com o mount -t ntfs-3g e ele começou a funcionar.

Igor Kulman
fonte
4
O mesmo aconteceu comigo. Com o HDD montado automaticamente, todas as permissões foram definidas para 0700, mas a montagem sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/é 0777 e a transmissão funciona perfeitamente, muito estranha.
Puigcerber
Meu ExFAT foi montado automaticamente exfat defaults,auto,umask=000,users,rw 0 0, eu mudei para montar com piIDs de usuário exfat defaults,uid=1000,gid=1000 0 0e funcionou. Verifique esta resposta do AskUbuntu: Problema de propriedade / permissão com automounting exfat drive
brasofilo
10

Eu não sou especialista em Linux, mas você pode tentar isso, pode funcionar. A maior parte dessas informações veio de http://www.superfecta.ca/?p=44

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

mudança

USER=debian-transmission

para

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

Eu sei que rodar como root é um grande linux, não, não (não tenho certeza se isso conta como rodar em root), mas funcionou para mim, então estou bem com isso. Você poderia tentar, USER=pimas eu não tenho amor lá, então eu fiquei com raiz

Spasmodean
fonte
3
É claro que a execução como raiz funciona, é apenas um risco de segurança.
Blaisorblade
Apenas algo a acrescentar: o Linux usa o arquivo / etc / fstab para configurar pontos de montagem e permissões / propriedade da unidade. Portanto, você tem três opções: executar a transmissão como root, executar a transmissão como o proprietário da pasta em que a unidade reside ( ls -ldirá quem é o proprietário) ou modificar o arquivo / etc / fstab para mostrar um proprietário diferente (por exemplo, debian- transmissão).
Terry
Eu estava enfrentando um problema semelhante ao salvar torrents em uma unidade NAS montada como convidado. Tentei todas as soluções mencionadas em todos os lugares, mas nada funcionou para mim, então desisti e fiz com que o daemon de transmissão fosse executado como root. Não gosto, mas é a única coisa que funciona.
aalaap
Isso está errado e daemons como esse nunca devem ser executados com privilégios de root. Você deve remover esta resposta, pois isso danificará a configuração de outras pessoas.
CousinCocaine
5

Acredito que seu problema é que o seu pendrive USB está formatado como NFTS ou FAT, sistemas de arquivos que não suportam as permissões por usuário / grupo. A solução é reformatar como ext4. Se você fizer isso, também terá muito menos atraso se estiver usando o Pi como um media center. Os drivers para o Pi são muito mais rápidos quando você usa o ext4.

hifkanotiks
fonte
Consideravelmente mais rápido que ntfs-3g? Você poderia mostrar alguns dados para fazer backup dessa declaração?
Joseph
@ Joseph Foi principalmente um problema com o raspberry pi 1, pois o NTFS é bastante pesado para a CPU. Aqui é uma referência de velocidades de transferência: htpcguides.com/wp-content/uploads/2015/03/...
hifkanotiks
4

Nenhuma das respostas aqui funcionou para mim, por isso estou escrevendo uma nova referenciando https://pimylifeup.com/raspberry-pi-torrentbox/, que funcionou muito bem para mim e me permitiu executar a transmissão como piusuário para acessar minha unidade USB. Isso não está respondendo diretamente ao OP, mas essa pergunta é muito popular (primeiro resultado do Google) para esse tipo de problema, então coloquei aqui.

Entrar:

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

e encontre USERna parte superior do arquivo e mude para:

USER=pi

Então, precisamos de chownalguns arquivos em nosso escopo de permissões:

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

E então execute (isso é realmente importante, caso contrário, o daemon do serviço será executado apenas como debian-transmission)

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

e encontre userlá e mude para:

user=pi

e recarregar a unidade de serviço

sudo systemctl daemon-reload

E, finalmente, precisamos vincular nosso arquivo de configurações ao diretório inicial pi e conceder permissões:

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/

E, em seguida, inicie a transmissão novamente:

sudo service transmission-daemon start

e pronto. Agora deve funcionar.

Sammaye
fonte
2

Eu acho que uma das principais coisas que as pessoas estão ignorando é que você deve montar sua unidade USB / externa na pasta / mnt / myUsbDrive, e NÃO em / 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

Eu tentei todas as respostas dadas nesta discussão (incluindo raiz) de centenas de maneiras diferentes, com opções diferentes e não consegui obter transmissão para salvar na minha unidade SSD USB. Então, ao ler algo diferente, foi mencionado que não seria montado em / media / pi, pois os daemons ou outros grupos podem não ter acesso. Portanto, montei a unidade USB em / mnt / usb_disk, defina os caminhos em /etc/transmission-daemon/settings.json como / mnt / usb_disk / downloads e a transmissão começa a ser salva no disco.

Para sua informação, eu tenho user = pi em /etc/init.d/transmission-daemon.

Para sua informação, mudei o proprietário de / mnt / usb_disk / downloads para pi e o grupo para transmissão-debian com 777 permissões.

SolutionHelper
fonte
1
sudo chown debian-transmission /downloads

onde / downloads é o diretório em que você deseja que seus downloads estejam (ou local de montagem).

isso é mais seguro do que usar root.

isso concede ao usuário 'direitos de transmissão debian' a pasta

solta
fonte
1

Encontrei a mesma solução que Igor e puigcerber. Minha unidade foi configurada para montagem automática, então editei meu fstab para remover a montagem automática e useisudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/

dollerbill
fonte
1

Enquanto a resposta da biketire está correta, o debian mudou para systemd recentemente e você deve alterar o usuário agora aqui

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

e verifique se na seção

[Service]

você tem a linha

User=pi
cstich
fonte
1

Solução:

Depois de muita leitura e frustração.

Antes de tudo, verifique se o usuário normal tem acesso de leitura e gravação à unidade USB. A correção 'não raiz' correta para ter acesso de gravação à unidade USB é:

Etapa 1: parar o daemon de transmissão

sudo service transmission-daemon stop

Etapa 2: adicionar pi ao grupo de transmissão debian

sudo usermod -a -G debian-transmission pi

Etapa 3: alterando o daemon-user

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

Altere USER para pi.

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

Altere USER para pi.

Etapa 4: alterar os direitos da pasta dos arquivos de configuração sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Etapa 5: defina as permissões corretas para as pastas de download / incompletas sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Etapa 6: iniciar o daemon de transmissão

sudo service transmission-daemon start

Sabi
fonte
1

Eu descobri que o sistema de arquivos era o problema para mim. Felizmente, era um novo disco rígido USB, por isso não foi um problema para formatá-lo.

Formatei o disco rígido pela primeira vez para ext4

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

Então eu montei o disco rígido USB

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

Depois de montado, mudei o grupo do disco rígido para debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

Finalmente, adicionei o usuário pi ao grupo de transmissão debian e funcionou muito bem para o meu caso de uso.

usuario
fonte
0

Depois de alterar o usuário do servidor de transmissão para root, o problema de permissões acaba com um compartilhamento usb ou smb.

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

altere a linha do usuário para:

USER = raiz

user6220
fonte
7
Isso é um risco de segurança.
Blaisorblade
Isso está errado e daemons como esse nunca devem ser executados com privilégios de root. Você deve remover esta resposta, pois isso danificará a configuração de outras pessoas.
CousinCocaine
0

O problema está relacionado ao FAT não reconhecer vários usuários.

Se você usar uma linha no seu arquivo fstab como / dev / [your dev] / mnt / usb1 padrões vfat, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

ele deve montar seu sistema de arquivos com pastas 777 e arquivos como 666 pertencentes a "nobody" pertencentes a "nogroup"

você precisará remontar (ou reiniciar) para que as alterações sejam vistas.

JonH
fonte
0

Finalmente encontrei uma solução funcional.

Desliguei os dispositivos removíveis de compartilhamento automático nas configurações XBIAN e adicionei o disco ao shares.conf manualmente

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

Apenas adicioná-lo ao shares.conf não é suficiente, o compartilhamento automático deve ser desativado.

Igor Kulman
fonte
0

Eu tive um problema de permissões semelhante.

Tentei seguir cegamente a solução da sabi e descobri que ela não funcionava. Não apenas isso, mas acredito que é um pouco exagerado.

Na minha situação, simplesmente ignorei o fato de que o daemon de transmissão estava sendo executado como usuário: debian-transmission .

Portanto, para conceder permissão para o daemon de transmissão gravar em uma pasta ( nome_da_pasta ), basta executar os seguintes comandos:

chgrp -R folder_name
chmod -R 765 folder_name

Isso pressupõe, é claro, que você tenha configurado o settings.json

Liang
fonte
-1

O chmod 777 deve conceder a todos os usuários todas as permissões para um arquivo ou diretório. Se isso não funcionar, é provável que o usuário que executa esse comando chmod não possua o diretório ou arquivo. Por exemplo, se o root possui / media / My Book / e o usuário pi não poderá alterar as permissões desse arquivo. Os três números que você passa para o comando chmod afetam o proprietário, o grupo e todos os outros nessa ordem. Portanto, as configurações mais comuns para um diretório são "chmod 755 somedirectory". Isso significa que o proprietário pode ler, gravar e mudar para o diretório, mas o grupo e todos os outros só podem ler arquivos e mudar para o diretório.

shapr
fonte
1
Esta resposta realmente não responde à pergunta. O autor da pergunta já tentou chmodding o arquivo e não funcionou.
Hifkanotiks