背景
我是一个 PLEX 媒体服务器 (PMS) 的忠实用户。我在卧室的 Mac Mini 上运行 PMS 和 uTorrent。uTorrent 将媒体从互联网下载到我家局域网上的 2Tb WDMyCloud NAS (NAS),然后 PMS 将媒体从 NAS 流式传输到我家局域网和互联网上的客户端。一切都运行良好。
我想减少噪音,增加额外的存储空间,并安排好东西,以减少能源消耗(Raspberry PI 3 不够用)。所以我回收了一台较旧的(但还不算旧)i5 SONY Vaio 笔记本电脑(“SONY”)和一个 1.5Tb USB 硬盘。
所以现在我正在使用:
SONY 运行 Ubuntu Core 16.04.4 LTS,截至 2018 年 3 月 2 日已全面更新升级,具体如下:
stefano@SONY:/$ uname -a Linux SONY 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
它无需任何 GUI 即可运行。我根据需要通过有线 LAN(无 wifi)ssh 进入它。
我的 2Tb WDMyCloud NAS,运行 Debian 如下:
WDMyCloud:/dev# uname -a Linux WDMyCloud 3.2.26 #1 SMP Thu Jul 9 11:14:15 PDT 2015 wd-2.4-rel armv7l GNU/Linux
我更老的 1.5Tb USB 硬盘显示为“Story_1_5Tb_2”(“STORY”)。它插入 NAS,因此显示如下:
WDMyCloud:/dev# lsblk -f NAME FSTYPE LABEL MOUNTPOINT sda |-sda1 linux_raid_member | `-md1 ext3 / |-sda2 linux_raid_member | `-md1 ext3 / |-sda3 swap [SWAP] |-sda4 ext4 /DataVolume |-sda5 |-sda6 |-sda7 `-sda8 sdb `-sdb1 ntfs Story 1.5Tb /var/media/Story_1_5Tb_2
现在的情况
在 SONY 上存在以下用户:
stefano@SONY:/home/plex$ cut -d: -f1 /etc/passwd
root
daemon
[...]
nobody
[...]
stefano
plex
debian-transmission
这些用户已被添加到该组中mediaserver
。
stefano@SONY:/home/plex$ getent group mediaserver | awk -F: '{print $4}'
stefano,plex,debian-transmission,daemon,nobody
NAS(WDMyDrive)上的本机存储和 1.5Tb USB 硬盘(Story_1_5Tb_2)已按如下方式安装:
stefano@SONY:/home/plex$ ls -l
total 0
drwxr-xr-x 2 plex mediaserver 0 Mar 2 12:00 story
drwxr-xr-x 2 plex mediaserver 0 Mar 2 10:50 WDMyCloud
stefano@SONY:/home/plex$ ls -l story
total 0
drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [A]
drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [B]
drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information
-rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts
drwxr-xr-x 2 plex mediaserver 0 Mar 2 09:49 Shared [C]
drwxr-xr-x 2 plex mediaserver 0 Mar 1 18:19 Shared [D]
stefano@SONY:/home/plex$ ls -l WDMyCloud
total 0
drwxr-xr-x 2 plex mediaserver 0 Feb 24 09:19 Shared [E]
drwxr-xr-x 2 plex mediaserver 0 Feb 21 12:32 Shared [F]
drwxr-xr-x 2 plex mediaserver 0 Feb 21 12:29 Shared [G]
drwxr-xr-x 2 plex mediaserver 0 Nov 20 2016 Shared [H]
[other shares]
SONY 的外观/etc/fstab
如下:
GNU nano 2.5.3 File: /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb1 during installation
UUID=6e54f9e7-5579-437b-9e7d-5f76b3fe146e / ext4 errors=remount-ro 0 1
# swap was on /dev/sdb5 during installation
UUID=59f57e49-82e9-4be3-b53a-1a65c0e771ae none swap sw 0 0
# These are the mounts needed to let PLEX find the media shared in WDMyCloud and Story_1.5Tb
#
//WDMyCloud/Public /home/plex/WDMyCloud cifs _netdev,uid=plex,gid=mediaserver,rw,guest 0
#
//WDMyCloud/Story_1_5Tb_2 /home/plex/story cifs _netdev,uid=plex,gid=mediaserver,rw,guest 0
- 我分配了股份所有权
uid=plex
这样 PMS 就可以在 NAS 和 STORY 上运行 - 我允许
gid=mediaserver
这样stefano,plex,debian-transmission,daemon,nobody
也可以运行 - 选择指定的原因相同
rw
(读写)作为挂载选项
WDMyCloud 共享(安装在 中/home/plex/WDMyCloud
)对应于Public
NAS 上的一个文件夹,如下所示:
WDMyCloud:/DataVolume/shares# ls -l
total 32
drwxrwxrwx+ 12 root share 4096 Mar 2 10:50 Public
drwxrwxrwx+ 2 root share 4096 Mar 8 2017 SmartWare
drwxrwxrwx+ 2 root share 4096 Mar 2 10:39 Stefano
lrwxrwxrwx 1 root share 24 Mar 2 10:43 Story_1_5Tb_2 -> /var/media/Story_1_5Tb_2
drwxrwxrwx+ 2 root share 4096 Mar 8 2017 TimeMachineBackup
什么有效
- 轻如羽毛,Ubuntu 核心在我 4 岁的 SONY i5 上像火箭一样飞行。
- PMS 运行在一个毫无必要的操作系统上,转码和流传输非常顺畅。它无缝识别网络共享(NAS 和 STORY)并能够对其进行操作。在需要时,无论我从哪里访问其 Web 界面,它都可以移动、添加和删除文件。
- 网络也很棒,PMS 可以传输到互联网和我家 LAN 之外。
- 安装 Transmission 后,守护程序会在启动时启动,并且可以访问 Web 界面:我可以从 Web 界面加载种子和磁力链接。当我加载它们时,Transmission 会访问互联网并尝试下载。
很好,但是...
什么不起作用
不知为何,我无法让 Transmission 撰写故事。
...所以:
- Trasmission 守护进程启动
- 可以从家庭局域网内访问 Web 界面(暂时不需要打开路由器上的其他门),并且
- 我可以添加种子,但是...
...种子无法下载,因为“没有权限“。
显然,用户debian-transmission
(我认为他就是那个人)无权在故事上写作。
我尝试过
chmod Symbolic --> 无济于事
plex@SONY:/home/plex$ ls -l total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 2 12:00 story drwxr-xr-x 2 plex mediaserver 0 Mar 2 10:50 WDMyCloud plex@SONY:/home/plex$ ls -l /home/plex/story total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [A] drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [B] drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information -rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts drwxr-xr-x 2 plex mediaserver 0 Mar 2 09:49 Shared [C] drwxr-xr-x 2 plex mediaserver 0 Mar 1 18:19 Shared [D] plex@SONY:/home/plex$ sudo chmod -R g+w /home/plex/story [sudo] password for plex: plex@SONY:/home/plex$ ls -l total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 2 12:00 story drwxr-xr-x 2 plex mediaserver 0 Mar 2 10:50 WDMyCloud plex@SONY:/home/plex$ ls -l /home/plex/story total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [A] drwxr-xr-x 2 plex mediaserver 0 Mar 1 13:40 Shared [B] drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information -rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts drwxr-xr-x 2 plex mediaserver 0 Mar 2 09:49 Shared [C] drwxr-xr-x 2 plex mediaserver 0 Mar 1 18:19 Shared [D]
chmod Absolute --> 无济于事
plex@SONY:/home/plex$ sudo chmod -R 0770 /home/plex/story plex@SONY:/home/plex$ ls -l total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 2 12:00 story drwxr-xr-x 2 plex mediaserver 0 Mar 2 10:50 WDMyCloud
我甚至尝试设置 Setuid - 我想如果 Transmission 可以读取和执行 STORY 上的文件,那么如果文件被赋予所有者权限,它也可以写入和删除它。当然,这是一个很渺茫的尝试...它不起作用。
plex@SONY:/home/plex$ sudo chmod -R u+s /home/plex/story plex@SONY:/home/plex$ ls -l total 0 drwxr-xr-x 2 plex mediaserver 0 Mar 2 12:00 story drwxr-xr-x 2 plex mediaserver 0 Mar 2 10:50 WDMyCloud
然后我读到这可能是ntfs 文件系统使用 cifs 安装的 STORY。据我了解,Linux 通常只能从 ntfs 文件系统读取,并且需要 ntfs-3g。
另一个可能性很小,因为我要么可以在 ntfs 文件系统上写入,要么不能。在我的例子中uid=plex
可以写入,但 的成员gid=mediaserver
不能:这很奇怪。
但我Story_1_5Tb_2
删除/etc/fstab
了尝试过ntfs-3g
--> 无济于事。
plex@SONY:/home/plex/story$ sudo ntfs-3g //WDMyCloud/Story_1_5Tb_2 /home/plex/story
[sudo] password for plex:
ntfs-3g: Failed to access volume '//WDMyCloud/Story_1_5Tb_2': No such file or directory
ntfs-3g 2015.3.14AR.1 integrated FUSE 28 - Third Generation NTFS Driver
Configuration type 7, XATTRS are on, POSIX ACLS are on
Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2015 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson
Usage: ntfs-3g [-o option[,...]] <device|image_file> <mount_point>
Options: ro (read-only mount), windows_names, uid=, gid=,
umask=, fmask=, dmask=, streams_interface=.
Please see the details in the manual (type: man ntfs-3g).
Example: ntfs-3g /dev/sda1 /mnt/windows
News, support and information: http://tuxera.com
由于位置没有改变,也许 rtfs-3g 无法识别网络挂载?
为什么 chmod 不起作用?...并且为什么安装-o gid=mediaserver,rw
也不起作用?
STORY 驱动器是一个 USB 硬盘,采用 ntfs 格式并插入 NAS。我可以访问它,并且uid=plex
作为它的所有者,我可以拥有一切:读取、执行和写入。一切都通过有线(电缆,而不是 wifi)局域网连接。我真的需要能够允许 Transmission(“uid=debian-transmission”)在 STORY 驱动器上写入。
问题是,安装在我卧室的 Mac Mini 上的 uTorrent 仍然可以访问 STORY - 为什么 SONY 上的 Transmission 不行?我做错了什么?
答案1
我改变了我的等/fstab这样它就可以按如下方式挂载网络共享:
//WDMyCloud/Story_1_5Tb_2 /home/plex/story cifs _netdev,guest,uid=plex,gid=mediaserver,rw,iocharset=utf8,file_mode=0770,dir_mode=0770 0 0
具体来说,我在字符串中添加了以下选项:
,iocharset=utf8,file_mode=0770,dir_mode=0770,
这为“uid=mediaserver”组的成员提供了对网络共享的完全读取、写入和执行权限。“Uid=plex”在修改之前就已经拥有了所有这些权限;我选择根本不向“其他”用户授予任何权限。
现在,如果我 ls -l 安装 STORY 的文件夹,我会得到:
drwxrwx--- 2 plex mediaserver 0 Mar 3 09:53 story
因此,Transmission(“uid=mediaserver”组的成员)成功保存了其下载内容:圆满结局!
现在,我明白了这些选项的作用(“绝对”值与修改模式,这使得整个事情几乎不言自明),我不明白为什么我之前所做的(设置uid和gid)不够/不正确,也不明白为什么执行修改模式具有 sudo 权限无法解决问题。实际上,此选项与 chmode 的相似性使它看起来像某种修改模式在挂载时执行,那么为什么修改模式执行完之后没解决?