/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
#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
评论
这是唯一正确的答案。以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