การถ่ายโอน: การอนุญาตถูกปฏิเสธบนดิสก์ USB


22

ฉันมี Raspberry Pi ที่รัน RaspBMC กับ WD MyBook ที่เชื่อมต่อโดยใช้ USB /media/My Bookไดรฟ์ที่ติดตั้งโดยอัตโนมัติ ฉันสร้างโฟลเดอร์/media/My Book/downloadsและฉันได้ตั้งค่าไดเรกทอรีดาวน์โหลดของ Trasmission /media/My Book/downloadsแล้ว

เมื่อฉันพยายามดาวน์โหลดไฟล์ Transmission กล่าว

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

ls -la ให้ฉัน

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

ดังนั้นฉันเดาว่าปัญหาคือการส่งสัญญาณทำงานภายใต้ผู้ใช้ที่แตกต่างกว่าpiและไม่สามารถเขียนไปยังโฟลเดอร์ อย่างไรก็ตามเมื่อฉันรัน

chmod 777 downloads -R

การดำเนินการสำเร็จโดยไม่มีข้อผิดพลาด แต่สิทธิ์ไม่เปลี่ยนแปลงพวกเขาจะอยู่ที่ 700 สำหรับเจ้าของเท่านั้น

ฉันทำอะไรผิดและฉันจะเปิดใช้งานการส่งเพื่อเขียนไปยังไดเรกทอรีนั้นได้อย่างไร

คำตอบ:


19

หลังจากอ่านและแห้วมากมาย ก่อนอื่นตรวจสอบให้แน่ใจว่าผู้ใช้ปกติมีการอ่านและเขียน acces ไปยังไดรฟ์ USB การแก้ไข 'ที่ไม่ใช่รูท' ที่ถูกต้องสำหรับการเขียน acces ไปยังไดรฟ์ USB คือ:

ขั้นตอนที่ 1: หยุดส่งภูต

sudo service transmission-daemon stop

ขั้นตอนที่ 2: เพิ่มpiไปยังกลุ่มการส่งเดเบียน

sudo usermod -a -G debian-transmission pi 

ขั้นตอนที่ 3: เปลี่ยน daemon-user

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

เปลี่ยนไปUSERpi

ขั้นตอนที่ 4 เปลี่ยนสิทธิ์ของโฟลเดอร์ไฟล์การกำหนดค่า

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

ขั้นตอนที่ 5: ตั้งค่าสิทธิ์ที่ถูกต้องสำหรับโฟลเดอร์ดาวน์โหลด / โฟลเดอร์ที่ไม่สมบูรณ์

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

ขั้นตอนที่ 5: เริ่ม daemon การส่งข้อมูล

sudo service transmission-daemon start

รวบรวมจาก:


2
นี่เป็นคำตอบที่ถูกต้องเท่านั้น วิ่งอย่างrootผิดปกติ การทำchmod 777ผิด การตั้งกลุ่มที่ถูกต้องและผู้ใช้เป็นวิธีที่ถูกต้องเท่านั้น
CousinCocaine

นี่ควรเป็นคำตอบที่ยอมรับได้
เปาโล Rodrigues Pinto

1
อาจเป็นคำตอบที่ถูกต้อง แต่ไม่ได้ผลสำหรับฉัน
เปิดใหม่

ฉันเปลี่ยนชื่อผู้ใช้ของฉันpiเป็นอย่างอื่น อย่างไรก็ตามเมื่อฉันทำls -alมันปรากฏไฟล์ของฉันยังคงอยู่ในpiกลุ่ม ด้วยคำแนะนำข้างต้นฉันควรเปลี่ยนทุกอินสแตนซ์ของpiชื่อผู้ใช้ใหม่ของฉันหรือทำการอ้างอิงกลุ่มที่ยังคงอยู่pi? คำแนะนำเหล่านี้ใช้ไม่ได้เมื่อฉันเปลี่ยนpiชื่อผู้ใช้เป็นทุกคน
Keavon

@Keavon "ฉันควรเปลี่ยน pi ทุกอินสแตนซ์เป็นชื่อผู้ใช้ใหม่ของฉัน" ใช่แล้วยังเป็นผู้ใช้ใหม่ในกลุ่ม debian-tranmission
Biketire

11

ปัญหาคือวิธีที่ดิสก์ USB ถูกทำขึ้นโดยอัตโนมัติ ฉันติดตั้งมัน manualy กับ mount -t ntfs-3g และมันก็เริ่มทำงาน


4
เกิดขึ้นกับฉันเหมือนกัน ด้วยการติดตั้ง HDD อัตโนมัติการอนุญาตทั้งหมดถูกตั้งค่าเป็น 0700 แต่การติดตั้งด้วยsudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/พวกเขาคือ 0777 และการส่งสัญญาณทำงานได้อย่างสมบูรณ์แบบแปลกจริงๆ
Puigcerber

ExFAT ของฉันติดตั้งอัตโนมัติด้วยexfat defaults,auto,umask=000,users,rw 0 0ฉันเปลี่ยนการเมาต์ด้วยpiID ผู้ใช้exfat defaults,uid=1000,gid=1000 0 0และใช้งานได้ ตรวจสอบคำตอบ AskUbuntu นี้: ปัญหาการเป็นเจ้าของ / การอนุญาตด้วยไดรฟ์
exfat อัตโนมัติ

10

ฉันไม่ใช่ผู้เชี่ยวชาญของ linux แต่คุณสามารถลองใช้งานได้ ข้อมูลส่วนใหญ่นี้มาจาก http://www.superfecta.ca/?p=44

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

เปลี่ยนแปลง

USER=debian-transmission

ไปยัง

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

ฉันรู้ว่าการทำงานในฐานะรูทเป็นลินุกซ์ขนาดใหญ่ไม่ไม่ (ไม่แน่ใจว่านับว่าทำงานได้ในรูท) แต่มันก็ใช้ได้ผลสำหรับฉันดังนั้นฉันก็สบายดี คุณสามารถลองUSER=piแทน แต่ฉันไม่มีความรักที่นั่นดังนั้นฉันจึงติดอยู่กับรูต


3
แน่นอนว่าการทำงานในฐานะรูทมันเป็นเพียงความเสี่ยงด้านความปลอดภัย
Blaisorblade

สิ่งที่ควรเพิ่ม: Linux ใช้ไฟล์ / etc / fstab เพื่อตั้งค่าจุดเชื่อมต่อและการอนุญาต / สิทธิ์การเป็นเจ้าของไดรฟ์ ดังนั้นคุณมีตัวเลือกสามตัวเลือกทำการส่งเป็น root เรียกใช้การส่งในฐานะเจ้าของโฟลเดอร์ที่ไดรฟ์อยู่ ( ls -lจะบอกคุณว่าใครเป็นเจ้าของ) หรือแก้ไขไฟล์ / etc / fstab เพื่อแสดงเจ้าของคนอื่น (เช่น debian- ส่ง)
เทอร์รี่

ฉันกำลังเผชิญกับปัญหาที่คล้ายกันกับการบันทึกเพลงบนไดรฟ์ NAS ที่ติดตั้งในฐานะแขก ฉันลองวิธีแก้ปัญหาทั้งหมดที่กล่าวถึงทุกที่ แต่ไม่มีอะไรทำงานให้ฉันดังนั้นฉันจึงยอมแพ้และทำให้ Transmission-daemon ทำงานเหมือนรูท ฉันไม่ชอบ แต่มันเป็นสิ่งเดียวที่ทำงานได้
aalaap

นี่เป็นสิ่งที่ผิดและ daemons เช่นนี้ไม่ควรทำงานด้วยสิทธิ์พิเศษของรูท คุณควรลบคำตอบนี้เพราะจะทำให้การตั้งค่าของผู้อื่นเสียหาย
CousinCocaine

5

ฉันเชื่อว่าปัญหาของคุณคือแท่ง USB ของคุณได้รับการจัดรูปแบบเป็น NFTS หรือ FAT ระบบไฟล์ที่ไม่สนับสนุนการอนุญาตต่อผู้ใช้ / กลุ่ม การแก้ปัญหาคือการฟอร์แมตเป็น ext4 หากคุณทำเช่นนั้นคุณจะมีความล่าช้าน้อยลงหากคุณใช้ Pi เป็นศูนย์สื่อ ไดรเวอร์สำหรับ Pi นั้นเร็วกว่ามากเมื่อคุณใช้ ext4


เร็วกว่า ntfs-3g มากไหม คุณสามารถแสดงข้อมูลเพื่อสำรองคำสั่งนั้นได้หรือไม่?
Joseph

@ โจเซฟส่วนใหญ่เป็นปัญหากับราสเบอร์รี่ pi 1 เนื่องจาก NTFS ค่อนข้างหนักของ CPU นี่คือมาตรฐานความเร็วในการถ่ายโอน: htpcguides.com/wp-content/uploads/2015/03/…
hifkanotiks

4

ไม่มีคำตอบที่นี่สำหรับฉันดังนั้นฉันจึงเขียนใหม่อ้างอิงhttps://pimylifeup.com/raspberry-pi-torrentbox/ซึ่งทำงานได้ดีมากสำหรับฉันและอนุญาตให้ฉันส่งข้อมูลในฐานะpiผู้ใช้เพื่อเข้าถึงไดรฟ์ USB ของฉัน นี่ไม่ใช่การตอบ OP โดยตรง แต่คำถามนี้เป็นที่นิยมมาก (ผลลัพธ์แรกของ Google) สำหรับปัญหาประเภทนี้ดังนั้นฉันจึงวางมันไว้ที่นี่

Enter:

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

และค้นหาUSERที่ด้านบนของไฟล์และเปลี่ยนเป็น:

USER=pi

จากนั้นเราจำเป็นต้องchownมีไฟล์บางไฟล์ในขอบเขตการอนุญาตของเรา:

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

จากนั้นเรียกใช้ (นี่เป็นสิ่งสำคัญจริง ๆ แล้ว daemon จากบริการจะทำงานตามปกติdebian-transmission)

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

และค้นหาที่userนั่นและเปลี่ยนเป็น:

user=pi

และโหลดหน่วยบริการอีกครั้ง

sudo systemctl daemon-reload

และในที่สุดเราก็ต้องเชื่อมโยงไฟล์การตั้งค่าของเราไปยังไดเรกทอรีบ้าน pi และให้สิทธิ์:

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/

จากนั้นเริ่มส่งอีกครั้ง:

sudo service transmission-daemon start

และคุณทำเสร็จแล้ว มันควรจะทำงาน


2

ฉันคิดว่าหนึ่งในสิ่งสำคัญที่ผู้คนกำลังมองเห็นคือคุณควรติดตั้งไดรฟ์ usb / ภายนอกในโฟลเดอร์/ mnt / myUsbDrive และไม่ใช่ใน/ 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

ฉันลองทุกคำตอบเดียวที่ให้ไว้ในการสนทนานี้ (รวมถึงรูท) ด้วยวิธีต่าง ๆ นับร้อยด้วยตัวเลือกที่แตกต่างกันและไม่สามารถรับส่งข้อมูลเพื่อบันทึกบนไดรฟ์ usb SSD ของฉัน จากนั้นในขณะที่อ่านสิ่งที่แตกต่างกันมีการกล่าวถึงว่าไม่ต้องเมานต์ใน / media / pi เนื่องจาก daemons หรือกลุ่มอื่นอาจไม่สามารถเข้าถึงได้ ดังนั้นฉันจึงเมาท์ไดรฟ์ USB เป็น / mnt / usb_disk ตั้งค่าพา ธ ใน /etc/transmission-daemon/settings.json เป็น / mnt / usb_disk / การดาวน์โหลดและการส่งข้อมูลเริ่มบันทึกลงดิสก์

FYI ฉันมี user = pi ใน /etc/init.d/transmission-daemon

FYI, ฉันเปลี่ยนเจ้าของ / mnt / usb_disk / ดาวน์โหลดเป็น pi และจัดกลุ่มเพื่อส่งเดเบียนด้วยสิทธิ์ 777


1
sudo chown debian-transmission /downloads

โดยที่ / ดาวน์โหลดเป็นไดเรกทอรีที่คุณต้องการให้การดาวน์โหลดของคุณอยู่ใน (หรือติดตั้งตำแหน่ง)

สิ่งนี้ปลอดภัยกว่าการใช้รูท

สิ่งนี้ให้สิทธิ์ 'ผู้ใช้' ที่รู้จักกันในชื่อ 'การส่งเดเบียน' ไปยังโฟลเดอร์


1

ฉันพบวิธีแก้ปัญหาเช่นเดียวกับอิกอร์และ puigcerber ไดรฟ์ของฉันถูกตั้งค่าเป็นเมาท์อัตโนมัติดังนั้นฉันจึงแก้ไข fstab เพื่อลบ automount จากนั้นใช้sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/


1

ในขณะที่คำตอบของนักขี่จักรยานเป็นเดเบียนที่ถูกต้องเปลี่ยนเป็น systemd เมื่อเร็ว ๆ นี้และคุณจะต้องเปลี่ยนผู้ใช้ที่นี่

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

และตรวจสอบให้แน่ใจว่าในส่วน

[Service]

คุณมีสาย

User=pi

1

วิธีการแก้:

หลังจากการอ่านและความยุ่งยากมากมาย

ก่อนอื่นตรวจสอบให้แน่ใจว่าผู้ใช้ปกติมีการเข้าถึงแบบอ่านและเขียนไปยังไดรฟ์ USB การแก้ไข 'non-root' ที่ถูกต้องสำหรับการเข้าถึงการเขียนไปยังไดรฟ์ USB คือ:

ขั้นตอนที่ 1: หยุดส่งภูต

sudo service transmission-daemon stop

ขั้นตอนที่ 2: เพิ่ม pi ให้กับกลุ่มการส่งเดเบียน

sudo usermod -a -G debian-transmission pi

ขั้นตอนที่ 3: เปลี่ยน daemon-user

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

เปลี่ยน USER เป็น pi

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

เปลี่ยน USER เป็น pi

ขั้นตอนที่ 4: เปลี่ยนสิทธิ์ของโฟลเดอร์ไฟล์การกำหนดค่า sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

ขั้นตอนที่ 5: ตั้งค่าสิทธิ์ที่ถูกต้องสำหรับโฟลเดอร์ดาวน์โหลด / โฟลเดอร์ที่ไม่สมบูรณ์ sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

ขั้นตอนที่ 6: เริ่ม daemon การส่งข้อมูล

sudo service transmission-daemon start


1

ฉันพบว่าระบบไฟล์เป็นปัญหาสำหรับฉัน โชคดีที่มันเป็นฮาร์ดไดรฟ์ usb ใหม่เอี่ยมดังนั้นจึงไม่มีปัญหาในการฟอร์แมต

ฉันฟอร์แมตฮาร์ดไดรฟ์เป็น ext4 เป็นครั้งแรก

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

จากนั้นฉันติดตั้งฮาร์ดไดรฟ์ usb

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

เมื่อติดตั้งฉันเปลี่ยนกลุ่มสำหรับฮาร์ดไดรฟ์เป็น debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

ในที่สุดฉันก็เพิ่มผู้ใช้ pi ให้กับกลุ่มการส่งเดเบียนและมันก็ใช้ได้ดีสำหรับกรณีการใช้งานของฉัน


0

เมื่อคุณเปลี่ยนผู้ใช้ transmission-daemon เพื่อรูทปัญหาสิทธิ์จะหายไปเมื่อใช้ usb หรือ smb share

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

จากนั้นเปลี่ยนบรรทัดผู้ใช้เป็น:

USER = ราก


7
นั่นเป็นความเสี่ยงด้านความปลอดภัย
Blaisorblade

นี่เป็นสิ่งที่ผิดและ daemons เช่นนี้ไม่ควรทำงานด้วยสิทธิ์พิเศษของรูท คุณควรลบคำตอบนี้เพราะจะทำให้การตั้งค่าของผู้อื่นเสียหาย
CousinCocaine

0

ปัญหาเกี่ยวข้องกับ FAT ที่ไม่รู้จักผู้ใช้หลายคน

หากคุณใช้บรรทัดในไฟล์ fstab ของคุณเช่น / dev / [your dev] / mnt / usb1 ค่าเริ่มต้นของ vfat uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

มันควรจะเมานต์ระบบไฟล์ของคุณด้วยโฟลเดอร์ 777 และไฟล์เป็น 666 เป็นเจ้าของโดย "ไม่มีใคร" ที่เป็นของ "nogroup"

คุณจะต้องนับใหม่ (หรือรีบูต) เพื่อให้การเปลี่ยนแปลงมีผล


0

ในที่สุดก็พบวิธีแก้ปัญหาการทำงาน

ฉันเปลี่ยนอุปกรณ์ถอดได้อัตโนมัติในการตั้งค่า XBIAN และเพิ่มดิสก์ลงใน share.conf ด้วยมือ

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

เพียงเพิ่มลงใน share.conf ไม่เพียงพอการปิดการแชร์อัตโนมัติจะต้องปิด


0

ฉันมีปัญหาการอนุญาตที่คล้ายกัน

ฉันลองทำตามวิธีแก้ปัญหาของ sabi อย่างสุ่มและพบว่ามันไม่ได้ผล ไม่เพียงแค่นั้น แต่ฉันเชื่อว่ามันเกินความจริงเล็กน้อย

ในสถานการณ์ของฉันฉันก็มองข้ามความจริงที่ว่าส่งภูตได้ทำงานเป็นผู้ใช้: เดเบียนส่ง

ดังนั้นเพื่อให้สิทธิ์สำหรับ transmission-daemon ในการเขียนไปยังโฟลเดอร์ ( folder_name ) คุณเพียงแค่ทำตามคำสั่งต่อไปนี้:

chgrp -R folder_name
chmod -R 765 folder_name

นี่เป็นเรื่องสมมติว่าคุณได้กำหนดการตั้งค่าอย่างถูกต้องแล้ว


-1

chmod 777 ควรให้สิทธิ์ผู้ใช้ทุกคนแก่ไฟล์หรือไดเรกทอรี หากไม่ได้ผลอาจเป็นไปได้ว่าผู้ใช้ที่รันคำสั่ง chmod นั้นไม่ได้เป็นเจ้าของไดเรกทอรีหรือไฟล์ ตัวอย่างเช่นหากรูทเป็นเจ้าของ / สื่อ / My Book / และผู้ใช้ pi จะไม่สามารถเปลี่ยนการอนุญาตของไฟล์นั้นได้ หมายเลขสามหมายเลขที่คุณส่งไปยังคำสั่ง chmod ส่งผลกระทบต่อเจ้าของกลุ่มและทุกคนในลำดับนั้น ดังนั้นการตั้งค่าที่พบมากที่สุดสำหรับไดเรกทอรีคือ "chmod 755 somedirectory" นั่นหมายความว่าเจ้าของสามารถอ่านเขียนและเปลี่ยนลงในไดเรกทอรีได้ แต่กลุ่มและทุกคนสามารถอ่านได้เฉพาะไฟล์และเปลี่ยนเป็นไดเรกทอรี


1
คำตอบนี้ไม่ได้ตอบคำถาม ผู้ถามได้ลองใช้ไฟล์แล้วและมันใช้งานไม่ได้
hifkanotiks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.