OMV远程挂载目录无法写入问题

我把猫盘作为电影BT下载机,开启Samba服务后挂载到蜗牛星际主机上,这样在蜗牛星际上的emby服务就可以直接扫描猫盘的下载目录,并更新电影元数据。但发现,如果下载了带有BDMV目录的蓝光资源,emby总是把蓝光目录BDMV下每个m2ts文件识别成一个单独视频,最终的视频列表被搞得乱七八糟。进一步发现,下载目录中emby创建的海报poster.jpg都是0字节。通过查看emby日志(在/var/lib/emby/logs下面)可知,emby下载海报图片后写入源目录时失败了,报的异常信息是文件被占用无法写入,但实际根源应该就是没权限。之所以在emby的媒体库中还能看到海报,是因为emby把海报转存到自己内部的临时存储区去了。
趁着最长假期,今天来解决一下问题。
因为从日志中明确看到了,我猜测上面的问题根源实际都是挂载目录的写入权限不够造成的。感到奇怪的是,在猫盘的Samba服务配置参数中我明明已经设置了777级别的写入。看来问题出在蜗牛星际上的OMV挂载上。
在OVM中是通过下面的远程挂载进行的:


OMV挂载SMB

挂载后,能够在/srv下能看到挂载后的目录,进去看一下是这样的:

root@omv:/srv/092e1049-faf6-49f9-99d8-bc14f138ebbf# ls -l
total 3072
-rwxr-xr-x 1 root root    0 Jan 30 23:13 aa
drwxr-xr-x 2 root root    0 Jan 30 22:52 bt
-rwxr-xr-x 1 root root 1854 Oct  2 00:34 cat.sh
-rwxr-xr-x 1 root root  469 Oct  2 00:14 catmon.sh
-rwxr-xr-x 1 root root 1696 Oct  3 23:54 pt.sh

很显然,这里的权限已经变成了755,并且用户是root。emby服务是以emby用户身份运行的,自然无法写入。(但怎么能创建0字节文件?不得其解)。
这个root用户身份和0755的权限组合,我并没有在任何地方设置,这个局面是怎么产生的呢?按照对话框上的Tips,找到了mount.cifs的说明(中文版链接),其中关键点如下:

uid=arg
              如果被挂载的文件系统服务器没有提供文件和目录的UID信息,那么就使用这里的设置。
              arg 可以是字符串形式的用户名或着是数字形式的uid值。默认值是数字'0'。
              更多信息参见下面的“文件和目录的属主及权限”小节。
file_mode=0nnn
              如果服务器端不支持 CIFS Unix扩展,那么就使用这里设置的值替代默认的文件权限模式。
              这里的 nnn 是八进制的权限模式,且前导零不能省略。
dir_mode=0nnn
              如果服务器端不支持 CIFS Unix扩展,那么就使用这里设置的值替代默认的目录权限模式。
              这里的 nnn 是八进制的权限模式,且前导零不能省略。

通过这段文字可以知道,uid默认为0,0正好是系统中root用户的id,这解释了为什么前面的共享文件用户都是root。755权限不知道是从哪来的,但是可以通过file_mode和dir_mode来设置。于是,在OMV远程挂载对话框的选项中,增加两个参数dir_mode=0777,file_mode=0666,如下图:

添加两个参数

然后重启系统,再进入共享目录看一下,权限改变了:

root@omv:/srv/092e1049-faf6-49f9-99d8-bc14f138ebbf# ls -l
total 3072
-rw-rw-rw- 1 root root    0 Jan 30 23:13 aa
drwxrwxrwx 2 root root    0 Jan 30 22:52 bt
-rw-rw-rw- 1 root root 1854 Oct  2 00:34 cat.sh
-rw-rw-rw- 1 root root  469 Oct  2 00:14 catmon.sh
-rw-rw-rw- 1 root root 1696 Oct  3 23:54 pt.sh

现在再打开emby,让它重新刷新元数据,果然一切正常,蓝光文件夹被整体识别了,每个独立电影下面的海报图片也不再是0字节,后台日志也不报错了。

实际上,OMV的远程挂载界面,就是帮你做了一个mount,可以用mount命令看到实际生成的指令和参数,如下:

......
//192.168.3.2/public on /sharedfolders/Cat type cifs (rw,relatime,vers=2.0,sec=none,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.3.2,file_mode=0666,dir_mode=0777,soft,nounix,mapposix,rsize=65536,wsize=65536,echo_interval=60,actimeo=1)
......

这个案例告诉我,Samba服务端可以设置目录权限,客户端也可以设置,两者叠加后,才是最终结果。

补充:上面的例子中,因为家里就我一个人用,图省事,直接把共享目录设置为任意用户可写。考虑安全性,最好还是设计一套更完善的权限分配体系,以防误操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • samba是一个实现类UNIX操作系统与WINDOWS操作系统之间共享的一种SMB协议的软件。包括的文件共享和打印...
    4a873e424089阅读 1,233评论 0 0
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,783评论 0 10
  • Linux系统磁盘基本管理命令挂载文件系统――mount mount命令语法: mount [参数] [设备名称]...
    LaLaLaLaAAA阅读 2,585评论 0 1
  • 案例一、公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/home/s...
    SkTj阅读 1,367评论 1 1
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,284评论 1 17