传输:USB磁盘上的权限被拒绝


22

我有运行RaspBMC的Raspberry Pi,并使用USB连接了WD MyBook。驱动器将自动安装到/media/My Book。我已经创建了一个文件夹/media/My Book/downloads,并将Trasmission的下载目录设置为/media/My Book/downloads

当我尝试下载文件时,传输说

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。

我在做什么错,如何使Transmission写入该目录?

Answers:


19

经过大量的阅读和挫折。首先,请确保普通用户具有对USB驱动器的读写访问权限。对USB驱动器具有写访问权限的正确“非root用户”修复是:

步骤1:停止传输守护程序

sudo service transmission-daemon stop

第2步:添加pi到debian-transmission组

sudo usermod -a -G debian-transmission pi 

步骤3:更改守护程序用户

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:启动传输守护程序

sudo service transmission-daemon start

编译自:


2
这是唯一正确的答案。运行root错误。做chmod 777是错误的。设置正确的组和用户是唯一正确的方法。
CousinCocaine 2015年

这应该是公认的答案。
Paulo Rodrigues Pinto

1
也许这是正确的答案,但对我不起作用。
rebolek '16

我已将用户名从重命名为pi其他名称。但是,当我这样做时ls -al,我的文件仍在一个pi组中。根据上述说明,我应该将的每个实例都更改pi为新的用户名,还是要引用仍然存在的组pi?当我将每个pi用户名都更改为用户名时,这些说明不起作用。
Keavon '18

@Keavon“我应该将pi的每个实例都更改为我的新用户名”是的,debian-transmission组中的新用户也是吗?
Biketire

11

问题在于USB磁盘的自动修复方式。我用-t ntfs-3g手动安装了它,然后它开始工作。


4
我也一样 使用HDD自动挂载时,所有权限都设置为0700,但是使用sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/它们将其挂载为0777,并且传输正常,确实很奇怪。
Puigcerber 2014年

我的ExFAT是通过自动安装的exfat defaults,auto,umask=000,users,rw 0 0,我将其更改为使用pi用户ID 进行安装,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

我知道以root身份运行是一个很大的linux,不行(不确定是否可以在root身份下运行),但是它对我有用,所以我很好。你可以试试看,USER=pi但是我在那里没有爱,所以我坚持了根


3
当然,以root身份运行会带来安全风险。
Blaisorblade

只需添加:Linux使用/ etc / fstab文件设置驱动器的安装点和权限/所有权。因此,您有三种选择,以根用户身份运行传输,以驱动器所在文件夹的所有者身份运行传输(ls -l将告诉您拥有它的文件夹),或修改/ etc / fstab文件以显示其他所有者(即debian-传输)。
特里

我将种子保存在作为来宾安装的NAS驱动器上时遇到了类似的问题。我尝试了所有提到的所有解决方案,但是对我没有用,所以我放弃了,让传输守护程序以root身份运行。我不喜欢它,但这是唯一可行的方法。
aalaap 2014年

这是错误的,并且这样的守护程序永远都不能以root特权运行。您应该删除此答案,因为这会损坏其他人的设置。
CousinCocaine 2015年

5

我相信您的问题是USB记忆棒被格式化为NFTS或FAT,即不支持按用户/组权限的文件系统。解决方案是将其重新格式化为ext4。如果这样做的话,如果您将Pi用作媒体中心,则滞后时间也将大大减少。使用ext4时,Pi的驱动程序要快得多。


比ntfs-3g快很多?您可以显示一些数据来备份该语句吗?
约瑟夫

@Joseph树莓派1主要是一个问题,因为NTFS占用大量CPU。这是传输速度的基准:htpcguides.com/wp-content/uploads/2015/03/…– hifkanotiks 2015
7:58

4

这里没有任何答案对我有用,因此我正在写一个引用https://pimylifeup.com/raspberry-pi-torrentbox/的新书,它对我很有用,并允许我作为pi用户访问USB驱动器来进行传输。这不是直接回答OP,但这种问题在此类问题中非常受欢迎(第一个Google结果),因此我将其放在此处。

输入:

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

然后运行(这非常重要,否则服务中的守护程序将以方式运行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

我以不同的选项以一百种不同的方式尝试了本次讨论中给出的每个答案(包括root用户),但无法传输以保存在我的USB SSD驱动器上。然后,在读取其他内容时,由于守护程序或其他组可能没有访问权限,因此提到不要挂载在/ media / pi中。因此,我将USB驱动器安装到/ mnt / usb_disk,将/etc/transmission-daemon/settings.json中的路径设置为/ mnt / usb_disk / downloads,然后开始将传输保存到磁盘。

仅供参考,我在/etc/init.d/transmission-daemon中确实有user = pi。

仅供参考,我确实将/ mnt / usb_disk / downloads的所有者更改为pi,并以777权限将其更改为debian-transmission。


1
sudo chown debian-transmission /downloads

/ downloads是您要下载的目录(或安装位置)。

这比使用root更安全。

这将授予该文件夹的“用户”(称为“ debian-transmission”)权限


1

我找到了与Igor和puigcerber相同的解决方案。我的驱动器设置为自动挂载,因此我编辑了fstab以删除自动挂载,然后使用sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/


1

虽然biketire的答案是正确的,但是debian最近已切换到systemd,您现在必须在此处更改用户

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

并确保在该部分中

[Service]

你有线

User=pi

1

解:

经过大量的阅读和无奈。

首先,请确保普通用户具有对USB驱动器的读写权限。具有对USB驱动器的写访问权的正确“非root用户”修复是:

步骤1:停止传输守护程序

sudo service transmission-daemon stop

步骤2:将pi添加到debian-transmission组

sudo usermod -a -G debian-transmission pi

步骤3:更改守护程序用户

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:启动传输守护程序

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用户添加到了debian-transmission组中,它对于我的用例非常有用。


0

一旦将传输守护程序用户更改为root用户,usb或smb共享的权限问题就会消失。

须藤nano /etc/init.d/transmission-daemon

然后将用户行更改为:

USER =根


7
那是安全隐患。
Blaisorblade

这是错误的,并且这样的守护程序永远都不能以root特权运行。您应该删除此答案,因为这会损坏其他人的设置。
CousinCocaine 2015年

0

该问题与FAT无法识别多个用户有关。

如果您在fstab文件中使用一行,例如/ dev / [your dev] / mnt / usb1 vfat默认值,uid = 65534,gid = 65534,dmask = 000,fmask = 111 0 0

它应该使用属于“ nogroup”的“ nobody”拥有的文件夹777和文件666安装文件系统

您将需要重新安装(或重新启动)才能看到更改。


0

终于找到了可行的解决方案。

我关闭了在XBIAN设置中自动共享可移动设备的功能,并将磁盘手动添加到了shares.conf中。

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

仅将其添加到shares.conf中是不够的,必须关闭自动共享。


0

我有类似的权限问题。

我尝试盲目地遵循sabi的解决方案,发现它不起作用。不仅如此,但我认为这有点过分。

在我的情况下,我只是忽略了传输守护程序以用户身份运行的事实:debian-transmission

因此,为了授予传输守护程序写入文件夹(folder_name)的权限,您只需要执行以下命令:

chgrp -R folder_name
chmod -R 765 folder_name

这是假设,当然,你已经正确配置settings.json已经


-1

chmod 777应该授予每个用户对文件或目录的所有权限。如果这不起作用,则可能是执行chmod命令的用户不拥有目录或文件。例如,如果root拥有/ media / My Book /,而pi用户将无法更改该文件的权限。传递给chmod命令的三个数字将依次影响所有者,组和其他所有人。因此,目录的最常见设置是“ chmod 755 somedirectory”。这意味着所有者可以读取,写入和更改到目录,但是组和其他所有人只能读取文件并更改到目录。


1
这个答案确实无法回答问题。询问者已经尝试对文件进行chmodding,但无法正常工作。
hifkanotiks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.