Transmisja: odmowa dostępu na dysku USB

22

Mam Raspberry Pi z RaspBMC z WD MyBook podłączonym przez USB. Napęd jest automatycznie montowany na /media/My Book. Utworzyłem folder /media/My Book/downloadsi ustawiłem katalog pobierania Trasmission na /media/My Book/downloads.

Kiedy próbuję pobrać plik, mówi Transmisja

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

ls -la mi daje

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

Wydaje mi się, że problem polega na tym, że transmisja odbywa się pod innym użytkownikiem pii nie może zapisywać w folderze. Jednak kiedy wykonam

chmod 777 downloads -R

operacje przebiegają bezbłędnie, ale uprawnienia się nie zmieniają, pozostają 700 tylko dla właściciela.

Co robię źle i jak mogę włączyć Transmission, aby zapisywać w tym katalogu?

Igor Kulman
źródło

Odpowiedzi:

19

Po wielu lekturach i frustracji. Przede wszystkim upewnij się, że normalny użytkownik ma dostęp do odczytu i zapisu na dysku USB. Prawidłowa poprawka „non-root” dla dostępu do zapisu na dysku USB to:

Krok 1: Zatrzymaj demona transmisji

sudo service transmission-daemon stop

Krok 2: Dodaj pido grupy transmisji Debian

sudo usermod -a -G debian-transmission pi 

Krok 3: zmiana użytkownika-demona

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

Zmień USERna pi.

Krok 4 Zmień prawa do folderu plików konfiguracyjnych

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

Krok 5: Ustaw odpowiednie uprawnienia do pobierania / niekompletnych folderów

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

Krok 5: Uruchom demona transmisji

sudo service transmission-daemon start

Opracowano z:

Biketire
źródło
2
To jedyna poprawna odpowiedź. Działa jak rootźle. Robienie czegoś chmod 777jest złe. Ustawienie właściwej grupy i użytkownika to jedyny właściwy sposób.
CousinCocaine
To powinna być zaakceptowana odpowiedź.
Paulo Rodrigues Pinto,
1
Może to poprawna odpowiedź, ale dla mnie nie działa.
rebolek
Zmieniłem nazwę mojej nazwy użytkownika z pina inną. Jednak gdy to zrobię ls -al, moje pliki nadal są w pigrupie. Czy zgodnie z powyższymi instrukcjami powinienem zmienić każdą instancję pina moją nową nazwę użytkownika, czy może odnosić się do grupy, która nadal jest pi? Te instrukcje nie działają, gdy zmieniłem każdą pina moją nazwę użytkownika.
Keavon
@Keavon ”czy powinienem zmienić każde wystąpienie pi na nową nazwę użytkownika?” Tak, czy nowy użytkownik jest również w grupie debian-tranmission?
Biketire
11

Problem polegał na tym, że dysk USB został zautomatyzowany. Zainstalowałem go ręcznie za pomocą mount -t ntfs-3g i zaczął działać.

Igor Kulman
źródło
4
To samo mi się przydarzyło. Dzięki automatycznemu montowaniu dysku twardego wszystkie uprawnienia zostały ustawione na 0700, ale montaż z sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/nimi to 0777, a transmisja działa idealnie, naprawdę dziwnie.
Puigcerber
Mój ExFAT był automatycznie montowany exfat defaults,auto,umask=000,users,rw 0 0, zmieniłem go, aby montować z piidentyfikatorami użytkowników exfat defaults,uid=1000,gid=1000 0 0i działało. Sprawdź tę odpowiedź AskUbuntu: Problem własności / uprawnień związanych z automatycznym montowaniem dysku
exfat
10

Nie jestem ekspertem od Linuksa, ale możesz spróbować, może działać. Większość tych informacji pochodzi z http://www.superfecta.ca/?p=44

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

zmiana

USER=debian-transmission

do

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

Wiem, że uruchamianie jako root to duży linux no no (nie jestem pewien, czy to liczy się jako uruchamianie w rootie), ale zadziałało dla mnie, więc nie mam nic przeciwko. Możesz spróbować USER=pizamiast tego, ale nie mam tam miłości, więc utknąłem z korzeniem

Spasmodean
źródło
3
Oczywiście, że działa jako root, to tylko zagrożenie bezpieczeństwa.
Blaisorblade,
Po prostu coś dodać: Linux używa pliku / etc / fstab do konfigurowania punktów montowania i uprawnień / własności dysku. Masz więc trzy możliwości: uruchom transmisję jako root, uruchom transmisję jako właściciel folderu, w którym znajduje się dysk ( ls -lpowie ci, kto jest jego właścicielem) lub zmodyfikuj plik / etc / fstab, aby pokazać innego właściciela (np. Debian- transmisja).
Terry,
Miałem podobny problem z zapisywaniem torrentów na dysku NAS zamontowanym jako gość. Wypróbowałem wszystkie wspomniane wszędzie rozwiązania, ale nic mi nie działało, więc poddałem się i uruchomiłem demona transmisji jako root. Nie podoba mi się to, ale to jedyna rzecz, która działa.
aalaap
Jest to złe i takie demony nigdy nie powinny działać z uprawnieniami roota. Powinieneś usunąć tę odpowiedź, ponieważ spowoduje to uszkodzenie konfiguracji innych osób.
CousinCocaine
5

Uważam, że Twoim problemem jest to, że pamięć USB jest sformatowana jako NFTS lub FAT, systemy plików, które nie obsługują uprawnień na użytkownika / grupę. Rozwiązaniem jest sformatowanie jako ext4. Jeśli to zrobisz, będziesz mieć znacznie mniejsze opóźnienie, jeśli używasz swojego Pi jako centrum medialnego. Sterowniki Pi są znacznie szybsze, gdy używasz ext4.

hifkanotiks
źródło
Znacząco szybszy niż NTFS-3G? Czy możesz pokazać jakieś dane, aby wykonać kopię zapasową tego oświadczenia?
Joseph
@Joseph To był głównie problem z Raspberry Pi 1, ponieważ NTFS jest dość obciążony procesorem. Oto punkt odniesienia dla prędkości transferu: htpcguides.com/wp-content/uploads/2015/03/…
hifkanotiks
4

Żadna z odpowiedzi tutaj nie działała dla mnie, więc piszę nową, odwołując się do https://pimylifeup.com/raspberry-pi-torrentbox/, która działała dla mnie świetnie i pozwoliła mi uruchomić transmisję jako piużytkownik, aby uzyskać dostęp do mojego napędu USB. To nie jest bezpośrednia odpowiedź na OP, ale to pytanie jest bardzo popularne (pierwszy wynik Google) dla tego rodzaju problemu, więc umieściłem go tutaj.

Wchodzić:

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

i znajdź USERw górnej części pliku i zmień na:

USER=pi

Następnie potrzebujemy chownkilku plików do naszego zakresu uprawnień:

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

A następnie uruchom (jest to naprawdę ważne, ponieważ demon z usługi będzie po prostu działał jako debian-transmission)

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

i znajdź usertam i zmień na:

user=pi

i ponownie załaduj jednostkę serwisową

sudo systemctl daemon-reload

Na koniec musimy symlinkować nasz plik ustawień do katalogu domowego pi i nadać mu uprawnienia:

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/

A następnie rozpocznij transmisję ponownie:

sudo service transmission-daemon start

i jesteś skończony. Powinno teraz działać.

Sammaye
źródło
2

Myślę, że jedną z głównych rzeczy, które ludzie przeoczają, jest to, że powinieneś zamontować dysk USB / zewnętrzny w folderze / mnt / myUsbDrive, a NIE w / 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

Próbowałem każdej odpowiedzi podanej w tej dyskusji (w tym root) na sto różnych sposobów z różnymi opcjami i nie mogłem uzyskać transmisji, aby zaoszczędzić na moim dysku SSD USB. Następnie podczas czytania czegoś innego wspomniano, aby nie montować w / media / pi, ponieważ demony lub inne grupy mogą nie mieć dostępu. Więc podłączam dysk USB do / mnt / usb_disk, ustawiam ścieżki w /etc/transmission-daemon/settings.json na / mnt / usb_disk / download i transmisja zaczyna zapisywać na dysk.

Do Twojej wiadomości mam użytkownika = pi w /etc/init.d/transmission-daemon.

Do twojej wiadomości zmieniłem właściciela / mnt / usb_disk / download na pi i pogrupowałem na debian-transmission z 777 uprawnieniami.

SolutionHelper
źródło
1
sudo chown debian-transmission /downloads

gdzie / pliki do pobrania to katalog, w którym mają się znajdować pliki do pobrania (lub miejsce instalacji).

jest to bezpieczniejsze niż używanie roota.

daje to użytkownikowi prawa zwane „transmisją debian” do folderu

upuszczać
źródło
1

Znalazłem to samo rozwiązanie, co Igor i puigcerber. Mój dysk został ustawiony na automatyczne montowanie, więc edytowałem fstab, aby usunąć automount, a potem go użyłemsudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/

Dollerbill
źródło
1

Chociaż odpowiedź biketire jest poprawna, debian ostatnio przeszedł na systemd i musisz teraz zmienić użytkownika tutaj

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

i upewnij się, że w sekcji

[Service]

masz linię

User=pi
cstich
źródło
1

Rozwiązanie:

Po wielu lekturach i frustracji.

Przede wszystkim upewnij się, że normalny użytkownik ma dostęp do odczytu i zapisu na dysku USB. Prawidłowa poprawka „non-root” dla dostępu do zapisu na dysku USB to:

Krok 1: Zatrzymaj demona transmisji

sudo service transmission-daemon stop

Krok 2: Dodaj PI do grupy transmisji Debian

sudo usermod -a -G debian-transmission pi

Krok 3: zmiana użytkownika-demona

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

Zmień USER na pi.

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

Zmień USER na pi.

Krok 4: Zmień prawa do folderu plików konfiguracyjnych sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Krok 5: Ustaw odpowiednie uprawnienia do pobierania / niekompletnych folderów sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Krok 6: Uruchom demona transmisji

sudo service transmission-daemon start

Sabi
źródło
1

Odkryłem, że problemem był dla mnie system plików. Na szczęście był to nowy dysk twardy USB, więc nie było problemu z jego sformatowaniem.

Najpierw sformatowałem dysk twardy na ext4

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

Następnie zamontowałem dysk twardy USB

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

Po zamontowaniu zmieniłem grupę dysków twardych na debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

W końcu dodałem użytkownika pi do grupy debian-transmisja i działało to świetnie w moim przypadku użycia.

Nacięcie
źródło
0

Po zmianie użytkownika demona transmisji na rootowanie problem uprawnień zniknie z udziałem USB lub SMB.

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

następnie zmień linię użytkownika na:

USER = root

user6220
źródło
7
To ryzyko bezpieczeństwa.
Blaisorblade,
Jest to złe i takie demony nigdy nie powinny działać z uprawnieniami roota. Powinieneś usunąć tę odpowiedź, ponieważ spowoduje to uszkodzenie konfiguracji innych osób.
CousinCocaine,
0

Problem dotyczy tego, że FAT nie rozpoznaje wielu użytkowników.

Jeśli używasz wiersza w pliku fstab, takiego jak / dev / [your dev] / mnt / usb1 vfat defaults, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

powinien zamontować twój system plików z folderami 777 i plikami jako 666 należącymi do „nikt” należącego do „nogroup”

konieczne będzie ponowne zamontowanie (lub ponowne uruchomienie), aby zmiany zostały widoczne.

JonH
źródło
0

W końcu znalazłem działające rozwiązanie.

Wyłączyłem automatyczne udostępnianie urządzeń wymiennych w ustawieniach XBIAN i ręcznie dodałem dysk do share.conf

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

Po prostu dodanie go do share.conf nie wystarczy, automatyczne udostępnianie musi być wyłączone.

Igor Kulman
źródło
0

Miałem podobny problem z uprawnieniami.

Próbowałem ślepo podążać za rozwiązaniem sabi i odkryłem, że nie działa. Nie tylko to, ale uważam, że to trochę przesada.

W mojej sytuacji po prostu przeoczyłem fakt, że demon transmisji działał jako użytkownik: debian-transmisja .

Dlatego, aby zezwolić demonowi transmisji na zapis w folderze ( nazwa_folderu ), wystarczy wykonać następujące polecenia:

chgrp -R folder_name
chmod -R 765 folder_name

Zakłada się oczywiście, że poprawnie skonfigurowałeś już plik settings.json

Liang
źródło
-1

chmod 777 powinien dać każdemu użytkownikowi wszystkie uprawnienia do pliku lub katalogu. Jeśli to nie zadziała, prawdopodobnie użytkownik wykonujący to polecenie chmod nie jest właścicielem katalogu ani pliku. Na przykład, jeśli root jest właścicielem / media / My Book /, a użytkownik pi nie będzie mógł zmienić uprawnień do tego pliku. Trzy liczby przekazywane do komendy chmod wpływają na właściciela, grupę i wszystkich innych w tej kolejności. Dlatego najczęstszymi ustawieniami dla katalogu są „chmod 755 somedirectory”. Oznacza to, że właściciel może czytać, zapisywać i zmieniać katalog, ale grupa i wszyscy inni mogą tylko czytać pliki i zmieniać katalog.

shapr
źródło
1
Ta odpowiedź naprawdę nie odpowiada na pytanie. Pytający próbował już chmoddingować plik i nie działał.
hifkanotiks