Trasmissione: autorizzazione negata sul disco USB


22

Ho Raspberry Pi con RaspBMC con un WD MyBook collegato tramite USB. L'unità viene automaticamente montata su /media/My Book. Ho creato una cartella /media/My Book/downloadse ho impostato la directory di download di Trasmission su /media/My Book/downloads.

Quando provo a scaricare un file, dice Transmission

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

Mi dà -la

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

Quindi immagino che il problema sia che la trasmissione viene eseguita con un utente diverso rispetto a pie non può scrivere nella cartella. Tuttavia quando eseguo

chmod 777 downloads -R

le operazioni riescono senza errori ma le autorizzazioni non cambiano, rimangono 700 solo per il proprietario.

Che cosa sto facendo di sbagliato e come posso consentire a Transmission di scrivere in quella directory?

Risposte:


19

Dopo molta lettura e frustrazione. Prima di tutto, assicurati che l'utente normale abbia letto e scritto l'accesso all'unità USB. La correzione 'non root' corretta per avere accesso in scrittura all'unità USB è:

Passaggio 1: interrompere il daemon di trasmissione

sudo service transmission-daemon stop

Passaggio 2: aggiungere pial gruppo di trasmissione debian

sudo usermod -a -G debian-transmission pi 

Passaggio 3: modifica dell'utente daemon

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

Cambia USERin pi.

Passaggio 4 Modificare i diritti della cartella dei file di configurazione

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

Passaggio 5: impostare le autorizzazioni corrette per le cartelle download / incomplete

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

Passaggio 5: avviare il daemon di trasmissione

sudo service transmission-daemon start

Compilato da:


2
Questa è l'unica risposta corretta. Correre come rootè sbagliato. Fare un chmod 777è sbagliato. L'impostazione del gruppo e dell'utente corretti è l'unico modo corretto.
Cugina Cocaina,

Questa dovrebbe essere la risposta accettata.
Paulo Rodrigues Pinto,

1
Forse è la risposta corretta ma non funziona per me.
rebolek,

Ho rinominato il mio nome utente da pia qualcos'altro. Tuttavia, quando lo faccio ls -alsembra che i miei file siano ancora in un pigruppo. Con le istruzioni precedenti, dovrei cambiare ogni istanza del pimio nuovo nome utente o fare riferimento al gruppo che è ancora pi? Queste istruzioni non funzionano quando ho cambiato tutte picon il mio nome utente.
Keavon,

@Keavon "dovrei cambiare ogni istanza di pi con il mio nuovo nome utente" Sì, anche il nuovo utente fa parte del gruppo debian-tranmission?
Biketire

11

Il problema era il modo in cui il disco USB veniva automontato. L'ho montato manualmente con mount -t ntfs-3g e ha iniziato a funzionare.


4
Lo stesso è successo a me. Con l'HDD montato automaticamente tutte le autorizzazioni sono state impostate su 0700, ma montandole con sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/esse sono 0777 e la trasmissione funziona perfettamente, davvero strana.
Puigcerber,

Il mio ExFAT si montava automaticamente exfat defaults,auto,umask=000,users,rw 0 0, l'ho modificato per il montaggio con piID utente exfat defaults,uid=1000,gid=1000 0 0e ha funzionato. Controlla questa domanda AskUbuntu: problema di proprietà / autorizzazione con unità exfat automounting
brasofilo

10

Non sono un esperto di Linux, ma potresti provare questo, potrebbe funzionare. La maggior parte di queste sono informazioni provenienti da http://www.superfecta.ca/?p=44

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

modificare

USER=debian-transmission

a

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

So che correre come root è un grande Linux no no (non sono sicuro che ciò funzioni come root) ma ha funzionato per me, quindi sto bene. Potresti USER=piinvece provare ma non ho avuto amore lì, quindi mi sono bloccato con il root


3
Ovviamente l'esecuzione come root funziona, è solo un rischio per la sicurezza.
Blaisorblade

Solo qualcosa da aggiungere: Linux usa il file / etc / fstab per impostare i mount point e le autorizzazioni / proprietà dell'unità. Quindi, hai tre opzioni, esegui la trasmissione come root, esegui la trasmissione come proprietario della cartella in cui risiede l'unità ( ls -lti dirà chi la possiede), o modifica il file / etc / fstab per mostrare un altro proprietario (es. Debian- trasmissione).
Terry,

Stavo affrontando un problema simile con il salvataggio di torrent su un'unità NAS montata come ospite. Ho provato tutte le soluzioni menzionate ovunque, ma nulla ha funzionato per me, quindi ho rinunciato e fatto funzionare il demone di trasmissione come root. Non mi piace, ma è l'unica cosa che funziona.
aalaap,

Questo è sbagliato e demoni come questo non dovrebbero mai funzionare con i privilegi di root. È necessario rimuovere questa risposta perché ciò danneggerebbe l'installazione di altre persone.
Cugina Cocaina,

5

Credo che il tuo problema sia che la tua chiavetta USB sia formattata come NFTS o FAT, filesystem che non supportano le autorizzazioni per utente / gruppo. La soluzione è riformattare come ext4. Se lo fai, avrai anche molto meno ritardo se stai usando il tuo Pi come media center. I driver per il Pi sono molto più veloci quando usi ext4.


Molto più veloce di ntfs-3g? Potresti mostrare alcuni dati per eseguire il backup di tale affermazione?
Joseph,

@Joseph È stato principalmente un problema con il raspberry pi 1 poiché NTFS è piuttosto pesante per la CPU. Ecco un benchmark delle velocità di trasferimento: htpcguides.com/wp-content/uploads/2015/03/…
hifkanotiks

4

Nessuna delle risposte qui ha funzionato per me, quindi ne sto scrivendo una nuova facendo riferimento a https://pimylifeup.com/raspberry-pi-torrentbox/ che ha funzionato perfettamente per me e mi ha permesso di eseguire la trasmissione come piutente per accedere alla mia unità USB. Non si tratta di rispondere direttamente al PO, ma questa domanda è molto popolare (primo risultato di Google) per questo tipo di problema, quindi l'ho inserito qui.

Accedere:

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

e trova USERnella parte superiore del file e cambia in:

USER=pi

Quindi abbiamo bisogno di chownalcuni file nel nostro ambito di autorizzazioni:

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 poi esegui (questo è davvero importante altrimenti il ​​demone del servizio verrà eseguito come debian-transmission)

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

e trova userlì e cambia in:

user=pi

e ricaricare l'unità di servizio

sudo systemctl daemon-reload

E infine dobbiamo collegare simbolicamente il nostro file delle impostazioni alla directory pi home e dargli le autorizzazioni:

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 quindi ricominciare la trasmissione:

sudo service transmission-daemon start

e hai finito. Ora dovrebbe funzionare.


2

Penso che una delle cose principali che la gente sta trascurando è che dovresti montare la tua chiavetta USB / esterna nella cartella / mnt / myUsbDrive e NON in / 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

Ho provato ogni singola risposta data in questa discussione (incluso root) in centinaia di modi diversi con opzioni diverse e non sono riuscito a ottenere la trasmissione per salvare sul mio disco SSD USB. Quindi durante la lettura di qualcosa di diverso, è stato menzionato di non montare in / media / pi poiché i demoni o altri gruppi potrebbero non avere accesso. Quindi monto l'unità USB su / mnt / usb_disk, imposto i percorsi in /etc/transmission-daemon/settings.json su / mnt / usb_disk / download e la trasmissione inizia a salvare sul disco.

Cordiali saluti, ho user = pi in /etc/init.d/transmission-daemon.

Cordiali saluti, ho cambiato proprietario di / mnt / usb_disk / download in pi e raggruppa in debian-transmission con 777 permessi.


1
sudo chown debian-transmission /downloads

dove / download è la directory in cui si desidera posizionare i download (o la posizione di montaggio).

questo è più sicuro dell'uso di root.

questo dà all'utente la cosiddetta "trasmissione debian" sulla cartella


1

Ho trovato la stessa soluzione di Igor e Puigcerber. La mia unità è stata impostata per il montaggio automatico, quindi ho modificato il mio fstab per rimuovere l'automount, quindi ho usatosudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/


1

Mentre la risposta di biketire è corretta debian è passato a systemd di recente e ora devi cambiare l'utente qui

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

e assicurati che nella sezione

[Service]

hai la linea

User=pi

1

Soluzione:

Dopo molte letture e frustrazioni.

Prima di tutto, assicurati che l'utente normale abbia accesso in lettura e scrittura all'unità USB. La correzione 'non root' corretta per avere accesso in scrittura all'unità USB è:

Passaggio 1: interrompere il daemon di trasmissione

sudo service transmission-daemon stop

Passaggio 2: aggiungere pi al gruppo di trasmissione debian

sudo usermod -a -G debian-transmission pi

Passaggio 3: modifica dell'utente daemon

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

Cambia UTENTE in pi.

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

Cambia UTENTE in pi.

Passaggio 4: modificare i diritti della cartella dei file di configurazione sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Passaggio 5: impostare le autorizzazioni corrette per le cartelle download / incomplete sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Passaggio 6: avviare il daemon di trasmissione

sudo service transmission-daemon start


1

Ho scoperto che il file system era il problema per me. Fortunatamente si trattava di un nuovo disco rigido USB, quindi non è stato un problema formattarlo.

Ho prima formattato il disco rigido su ext4

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

Quindi ho montato il disco rigido USB

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

Una volta montato ho cambiato il gruppo per il disco rigido in debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

Alla fine ho aggiunto l'utente pi al gruppo di trasmissione debian e ha funzionato benissimo per il mio caso d'uso.


0

Dopo aver modificato l'utente del daemon di trasmissione in root, il problema con le autorizzazioni scompare con una condivisione USB o SMB.

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

quindi cambia la linea utente in:

USER = radice


7
Questo è un rischio per la sicurezza.
Blaisorblade

Questo è sbagliato e demoni come questo non dovrebbero mai funzionare con i privilegi di root. È necessario rimuovere questa risposta perché ciò danneggerebbe l'installazione di altre persone.
Cugina Cocaina,

0

Il problema riguarda FAT che non riconosce più utenti.

Se usi una linea nel tuo file fstab come / dev / [your dev] / mnt / usb1 vfat default, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

dovrebbe montare il tuo filesystem con le cartelle 777 e i file come 666 di proprietà di "none" appartenenti a "nogroup"

dovrai rimontare (o riavviare) per vedere le modifiche.


0

Finalmente ho trovato una soluzione funzionante.

Ho disattivato la condivisione automatica dei dispositivi rimovibili nelle impostazioni XBIAN e ho aggiunto il disco a share.conf manualmente

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

Basta aggiungerlo a share.conf non è sufficiente, la condivisione automatica deve essere disattivata.


0

Ho avuto un problema di autorizzazioni simile.

Ho provato a seguire ciecamente la soluzione di Sabi e ho scoperto che non funzionava. Non solo, ma credo che sia un po 'eccessivo.

Nella mia situazione ho semplicemente trascurato il fatto che il daemon di trasmissione era in esecuzione come utente: debian-transmission .

Quindi, al fine di concedere l'autorizzazione al daemon di trasmissione a scrivere in una cartella ( nome_cartella ), è sufficiente eseguire i seguenti comandi:

chgrp -R folder_name
chmod -R 765 folder_name

Ciò presuppone ovviamente che tu abbia configurato correttamente settings.json già


-1

chmod 777 dovrebbe fornire a tutti gli utenti tutte le autorizzazioni per un file o una directory. Se non funziona, è probabile che l'utente che esegue quel comando chmod non sia proprietario della directory o del file. Ad esempio, se root possiede / media / My Book / e l'utente pi non sarà in grado di modificare le autorizzazioni di quel file. I tre numeri che passi al comando chmod influenzano il proprietario, il gruppo e tutti gli altri, in quell'ordine. Pertanto le impostazioni più comuni per una directory sono "chmod 755 somedirectory". Ciò significa che il proprietario può leggere, scrivere e modificare nella directory, ma il gruppo e tutti gli altri possono solo leggere i file e modificarli nella directory.


1
Questa risposta non risponde davvero alla domanda. Il richiedente ha già provato a scrivere il file e non ha funzionato.
hifkanotiks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.