Transmisi: izin ditolak pada disk USB

22

Saya memiliki Raspberry Pi menjalankan RaspBMC dengan WD MyBook yang terhubung menggunakan USB. Drive secara otomatis dipasang ke /media/My Book. Saya telah membuat folder /media/My Book/downloadsdan mengatur direktori unduhan Trasmission menjadi /media/My Book/downloads.

Ketika saya mencoba mengunduh file, Transmission berkata

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

ls -la memberiku

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

Jadi saya kira masalahnya adalah bahwa transmisi berjalan di bawah pengguna yang berbeda pidan tidak dapat menulis ke folder. Namun saat saya mengeksekusinya

chmod 777 downloads -R

operasi berhasil tanpa kesalahan tetapi izin tidak berubah, mereka tetap 700 hanya untuk pemilik.

Apa yang saya lakukan salah dan bagaimana saya bisa mengaktifkan Transmisi untuk menulis ke direktori itu?

Igor Kulman
sumber

Jawaban:

19

Setelah banyak membaca dan frustrasi. Pertama-tama, pastikan pengguna normal telah membaca dan menulis akses ke drive USB. Perbaikan 'non-root' yang benar untuk memiliki akses tulis ke drive USB adalah:

Langkah 1: Hentikan daemon transmisi

sudo service transmission-daemon stop

Langkah 2: Tambahkan pike grup transmisi debian

sudo usermod -a -G debian-transmission pi 

Langkah 3: mengubah daemon-user

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

Ubah USERke pi.

Langkah 4 Ubah hak folder file konfigurasi

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

Langkah 5: Tetapkan izin yang benar untuk folder unduhan / tidak lengkap

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

Langkah 5: Mulai daemon transmisi

sudo service transmission-daemon start

Dikompilasi dari:

Biketire
sumber
2
Ini satu-satunya jawaban yang benar. Berjalan seperti rootitu salah. Melakukan hal chmod 777yang salah. Mengatur grup yang benar dan pengguna adalah satu-satunya cara yang benar.
CousinCocaine
Ini harus menjadi jawaban yang diterima.
Paulo Rodrigues Pinto
1
Mungkin itu jawaban yang benar tetapi tidak berhasil untuk saya.
rebolek
Saya telah mengganti nama nama pengguna saya dari pike yang lain. Namun, ketika saya melakukannya ls -almuncul file saya masih dalam pigrup. Dengan instruksi di atas, haruskah saya mengubah setiap instance pimenjadi nama pengguna baru saya, atau apakah ada yang merujuk ke grup yang masih pi? Instruksi ini tidak berfungsi ketika saya mengubah setiap pinama pengguna saya.
Keavon
@Keavon "haruskah saya mengubah setiap instance pi menjadi nama pengguna baru saya" Ya, juga apakah pengguna baru dalam grup pengiriman-debian?
Biketire
11

Masalahnya adalah cara disk USB diotomatisasi. Saya memasangnya secara manual dengan mount -t ntfs-3g dan mulai bekerja.

Igor Kulman
sumber
4
Hal yang sama terjadi pada saya. Dengan HDD yang dipasang otomatis, semua izin ditetapkan ke 0700, tetapi memasangnya dengan sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/0777 dan transmisi berfungsi dengan baik, sangat aneh.
Puigcerber
ExFAT saya dipasang secara otomatis exfat defaults,auto,umask=000,users,rw 0 0, saya mengubahnya agar dipasang dengan piID pengguna exfat defaults,uid=1000,gid=1000 0 0dan berhasil. Lihat jawaban AskUbuntu ini: Masalah kepemilikan / izin dengan exfat drive automounting
brasofilo
10

Saya bukan ahli linux, tetapi Anda bisa mencoba ini, mungkin berhasil. Sebagian besar informasi ini berasal dari http://www.superfecta.ca/?p=44

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

perubahan

USER=debian-transmission

untuk

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

Saya tahu menjalankan sebagai root adalah linux besar, tidak, tidak (tidak yakin apakah itu dianggap berjalan di root) tetapi itu bekerja untuk saya, jadi saya baik-baik saja dengan itu. Anda bisa mencoba USER=pitetapi saya tidak mendapatkan cinta di sana, jadi saya terjebak dengan root

Spasmodean
sumber
3
Tentu saja berjalan sebagai root berfungsi, itu hanya risiko keamanan.
Blaisorblade
Hanya sesuatu untuk ditambahkan: Linux menggunakan file / etc / fstab untuk mengatur mount poin dan izin / kepemilikan drive. Jadi, Anda memiliki tiga pilihan, jalankan transmisi sebagai root, jalankan transmisi sebagai pemilik folder tempat drive berada ( ls -lakan memberi tahu Anda siapa pemiliknya), atau memodifikasi file / etc / fstab untuk menampilkan pemilik yang berbeda (mis. Debian- transmisi).
Terry
Saya menghadapi masalah yang sama dengan penghematan torrent pada drive NAS yang dipasang sebagai tamu. Saya mencoba semua solusi yang disebutkan di mana-mana, tetapi tidak ada yang berhasil untuk saya, jadi saya menyerah dan membuat daemon transmisi berjalan sebagai root. Saya tidak suka, tapi hanya itu yang berhasil.
aalaap
Ini salah dan daemon seperti ini tidak boleh dijalankan dengan hak akses root. Anda harus menghapus jawaban ini karena ini akan merusak pengaturan orang lain.
CousinCocaine
5

Saya percaya masalah Anda adalah stik USB Anda diformat sebagai NFTS atau FAT, sistem file yang tidak mendukung izin per-pengguna / grup. Solusinya adalah memformat ulang sebagai ext4. Jika Anda melakukannya, Anda juga akan memiliki lag yang jauh lebih sedikit jika Anda menggunakan Pi Anda sebagai pusat media. Driver untuk Pi jauh lebih cepat ketika Anda menggunakan ext4.

hifkanotiks
sumber
Jauh lebih cepat dari ntfs-3g? Bisakah Anda menampilkan beberapa data untuk mendukung pernyataan itu?
Joseph
@ Joseph Sebagian besar masalah dengan raspberry pi 1 karena NTFS cukup CPU-berat. Berikut adalah patokan kecepatan transfer: htpcguides.com/wp-content/uploads/2015/03/...
hifkanotiks
4

Tidak ada jawaban di sini yang berfungsi untuk saya, jadi saya menulis referensi baru https://pimylifeup.com/raspberry-pi-torrentbox/ yang bekerja sangat baik untuk saya dan memungkinkan saya menjalankan transmisi sebagai pipengguna untuk mengakses drive USB saya. Ini tidak langsung menjawab OP tetapi pertanyaan ini sangat populer (hasil Google pertama) untuk masalah semacam ini jadi saya taruh di sini.

Memasukkan:

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

dan temukan USERdi bagian atas file dan ubah ke:

USER=pi

Maka kita perlu chownbeberapa file ke dalam ruang lingkup izin kita:

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

Dan kemudian jalankan (ini sangat penting jika daemon dari layanan hanya akan berjalan sebagai debian-transmission)

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

dan temukan di usersana dan ubah ke:

user=pi

dan memuat ulang unit layanan

sudo systemctl daemon-reload

Dan akhirnya kita perlu symlink file pengaturan kita ke direktori home pi dan memberinya izin:

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/

Dan kemudian mulai transmisi lagi:

sudo service transmission-daemon start

dan kamu sudah selesai. Sekarang seharusnya berfungsi.

Sammaye
sumber
2

Saya pikir salah satu hal utama yang orang abaikan adalah Anda harus memasang drive usb / eksternal di folder / mnt / myUsbDrive, dan BUKAN di / 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

Saya mencoba setiap jawaban yang diberikan pada diskusi ini (termasuk root) dalam seratus cara berbeda dengan opsi yang berbeda dan tidak bisa mendapatkan transmisi untuk disimpan di drive SSD usb saya. Kemudian ketika membaca sesuatu yang berbeda, disebutkan tidak me-mount di / media / pi karena daemon atau kelompok lain mungkin tidak memiliki akses. Jadi saya memasang drive USB ke / mnt / usb_disk, set path di /etc/transmission-daemon/settings.json ke / mnt / usb_disk / unduhan dan transmisi mulai disimpan ke disk.

FYI, saya punya user = pi di /etc/init.d/transmission-daemon.

FYI, saya memang mengubah pemilik / mnt / usb_disk / unduhan menjadi pi dan grup menjadi debian-transmisi dengan 777 izin.

SolusiHelper
sumber
1
sudo chown debian-transmission /downloads

di mana / unduhan adalah direktori tempat Anda ingin mengunduh (atau me-mount lokasi).

ini lebih aman daripada menggunakan root.

ini memberi hak 'pengguna' yang dikenal sebagai 'debian-transmission' ke folder

penurunan
sumber
1

Saya menemukan solusi yang sama dengan Igor dan puigcerber. Drive saya disetel ke mount otomatis, jadi saya mengedit fstab saya untuk menghapus automount, lalu digunakansudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/

boneka boneka
sumber
1

Sementara jawaban biketire benar, debian beralih ke systemd baru-baru ini dan Anda harus mengubah pengguna sekarang di sini

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

dan pastikan itu di bagian

[Service]

Anda memiliki garis

User=pi
cstich
sumber
1

Larutan:

Setelah banyak membaca dan frustrasi.

Pertama-tama, pastikan pengguna normal telah membaca dan menulis akses ke drive USB. Perbaikan 'non-root' yang benar untuk memiliki akses tulis ke drive USB adalah:

Langkah 1: Hentikan daemon transmisi

sudo service transmission-daemon stop

Langkah 2: Tambahkan pi ke grup transmisi-debian

sudo usermod -a -G debian-transmission pi

Langkah 3: mengubah daemon-user

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

Ubah USER ke pi.

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

Ubah USER ke pi.

Langkah 4: Ubah hak folder file konfigurasi sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Langkah 5: Tetapkan izin yang benar untuk folder unduhan / tidak lengkap sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Langkah 6: Mulai daemon transmisi

sudo service transmission-daemon start

Sabi
sumber
1

Saya menemukan bahwa sistem file adalah masalah bagi saya. Untungnya itu adalah hard drive usb baru jadi bukan masalah untuk memformatnya.

Saya pertama kali memformat hard drive ke ext4

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

Kemudian saya memasang hard drive usb

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

Setelah dipasang saya mengubah grup untuk hard drive debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

Akhirnya saya menambahkan pengguna pi ke grup transmisi-debian dan itu bekerja dengan baik untuk kasus penggunaan saya.

Nick
sumber
0

Setelah Anda mengubah transmisi-daemon pengguna untuk me-root masalah izin hilang dengan usb atau smb.

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

kemudian ubah baris pengguna ke:

USER = root

pengguna6220
sumber
7
Itu risiko keamanan.
Blaisorblade
Ini salah dan daemon seperti ini tidak boleh dijalankan dengan hak akses root. Anda harus menghapus jawaban ini karena ini akan merusak pengaturan orang lain.
CousinCocaine
0

Masalahnya terkait dengan FAT yang tidak mengenali banyak pengguna.

Jika Anda menggunakan baris dalam file fstab Anda seperti / dev / [your dev] / mnt / usb1 vfat default, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

itu harus me-mount sistem file Anda dengan folder 777 dan file sebagai 666 dimiliki oleh "tidak ada" milik "nogroup"

Anda harus melakukan remount (atau reboot) agar perubahan dapat dilihat.

JonH
sumber
0

Akhirnya menemukan solusi yang berhasil.

Saya beralih dari autosharing perangkat yang dapat dilepas dalam pengaturan XBIAN dan menambahkan disk ke share.conf dengan tangan

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

Menambahkan saja ke share.conf tidak cukup, autosharing harus dimatikan.

Igor Kulman
sumber
0

Saya memiliki masalah izin yang serupa.

Saya mencoba mengikuti solusi sabi secara membabi buta dan ternyata tidak berhasil. Bukan hanya itu, tapi saya percaya itu agak berlebihan.

Dalam situasi saya, saya hanya mengabaikan fakta bahwa daemon transmisi berjalan sebagai pengguna: debian-transmission .

Karenanya untuk memberikan izin bagi daemon transmisi untuk menulis ke folder ( folder_name ), Anda hanya perlu melakukan perintah berikut:

chgrp -R folder_name
chmod -R 765 folder_name

Hal ini tentu saja dengan asumsi bahwa Anda telah dikonfigurasi settings.json sudah

Liang
sumber
-1

chmod 777 harus memberikan setiap pengguna semua izin ke file atau direktori. Jika itu tidak berhasil, kemungkinan pengguna yang menjalankan perintah chmod itu tidak memiliki direktori atau file. Misalnya, jika root memiliki / media / My Book / dan pengguna pi tidak akan dapat mengubah izin file itu. Tiga angka yang Anda berikan ke perintah chmod memengaruhi pemilik, grup, dan semua orang lainnya, dalam urutan itu. Dengan demikian pengaturan yang paling umum untuk direktori adalah "chmod 755 somedirectory". Itu berarti pemilik dapat membaca, menulis, dan mengubah ke direktori, tetapi grup dan semua orang hanya bisa membaca file dan mengubah ke direktori.

Shapr
sumber
1
Jawaban ini benar-benar tidak menjawab pertanyaan. Penanya sudah mencoba chmodding file dan tidak berhasil.
hifkanotiks