我有运行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写入该目录?

#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

步骤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


编译自:

https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=8714
https://wiki.archlinux.org/index.php/Transmission


评论


这是唯一正确的答案。以root身份运行是错误的。执行chmod 777是错误的。设置正确的组和用户是唯一正确的方法。

–库辛可卡因
15年6月7日在18:51

这应该是公认的答案。

– Paulo Pinto
2015年12月2日,下午4:41

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

– rebolek
16年2月13日在9:00

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

–科文
18/12/26在12:38

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

– Biketire
19年1月2日在7:23



#2 楼

问题是卸载USB磁盘的方式。我使用mount -t ntfs-3g手动安装它,然后它开始工作。

评论


我也一样使用HDD自动挂载时,所有权限均设置为0700,但使用sudo mount -t ntfs-3g -o uid = pi,gid = pi / dev / sda1 / media / HDD /进行安装,它们的权限为0777,传输完美, 真奇怪。

–警察
2014年9月29日在18:31

我的ExFAT是使用exfat默认值auto,u,umask = 000,users,rw 0 0自动安装的,我将其更改为使用pi用户ID exfat默认值,uid = 1000,gid = 1000 0 0的安装成功了。检查此AskUbuntu答案:自动安装exfat驱动器的所有权/权限问题

–brasofilo
19年4月29日在7:17

#3 楼

我不是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,但那里没有我的爱,所以我坚持使用root

评论


当然,以root身份运行会带来安全隐患。

–布莱布莱德
13年3月2日,下午1:47

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

–特里
13年11月16日在6:56

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

– aalaap
2014年11月18日15:15

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

–库辛可卡因
15年6月7日在18:57

#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


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


完成。现在应该可以了。

#5 楼

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

评论


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

–约瑟夫
15年4月13日在7:22

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

– hifkanotiks
15年4月14日在7:58

#6 楼

我认为人们忽略的主要事情之一是,您应该将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,并且传输开始保存到磁盘。

FYI ,我确实在/etc/init.d/transmission-daemon中有user = pi。

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

#7 楼

sudo chown debian-transmission /downloads


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

比使用root更为安全。

这将授予该文件夹的“用户”权利,称为“ debian-transmission”

#8 楼

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

#9 楼

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

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

并确保在部分

[Service]


你有电话线

User=pi


#10 楼

解决方案:

经过大量阅读和挫折。

首先,请确保普通用户具有对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

#11 楼

我发现文件系统是我的问题。幸运的是,这是一个全新的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组中,这对我的用例非常有用。

#12 楼

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

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

,然后将用户行更改为:

USER = root

评论


那是安全隐患。

–布莱布莱德
13年3月2日,下午1:47

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

–库辛可卡因
15年6月7日在18:59

#13 楼

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

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

它应使用777文件夹和666属于“ nogroup”的“ nobody”拥有的文件来挂载文件系统

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

#14 楼

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

我在XBIAN设置中自动共享可移动设备,然后将磁盘手动添加到了shares.conf。

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


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

#15 楼

我有一个类似的权限问题。

我盲目尝试了sabi的解决方案,发现它没有用。
不仅如此,而且我认为这有点过头了。

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

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

chgrp -R folder_name
chmod -R 765 folder_name


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

#16 楼

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

评论


这个答案确实无法回答问题。询问者已经尝试对文件进行chmodding,但无法正常工作。

– hifkanotiks
13年2月9日在8:11