在 Linux 上正确安装 Samba/CIFS 共享

在 Linux 上正确安装 Samba/CIFS 共享

问题是,如果不强制使用vers=1.0挂载选项,我就无法让 CIFS 共享上的文件在 Linux 客户端上显示正确的权限。

该服务器是运行 Samba 4.7.0 的 FreeNAS 系统。它基本上以独立/工作组模式运行;没有 AD/域控制器,如果可以避免的话,我不想要一个。

客户端是 Debian Sid(不稳定)系统,带有 Samba v4.7.4 组件和cifs-utils版本 6.8-1。

当前的坐骑咒语看起来像这样:

sudo mount.cifs -o 'vers=1.0,username=me,uid=me,gid=me,credentials=[[filename]]' //freenas/me $HOME/mnt

(上述操作实际上通常由 autofs 执行,但结果证明并不相关。)

完成后,mtab 中会出现以下条目:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)

...我们的测试目录显示以下模式/权限:

me@linuxclient:~$ ls -al mnt/testdir/
total 3
drwxr-xr-x+ 2 me me 0 Apr 21 00:10 .
drwxr-xr-x+ 5 me me 0 Apr 21 00:07 ..
-r--r--r--+ 1 me me 0 Apr 21 00:09 R--R--R--
-rw-r--r--+ 1 me me 0 Apr 21 00:10 RW-R--R--
-rwx------+ 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x+ 1 me me 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x+ 1 me me 0 Apr 21 00:09 R-XR-XR-X

这正是我所期望和想要的。但是,挂载强制使用 SMB 版本 1.0,该版本已过时且已损坏。但是,如果我没有明确指定vers=1.0,则会发生以下情况:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X

某些东西被注入file_mode=0755,dir_mode=0755到挂载选项中,导致所有文件的权限都是 0x755,而不管它们的实际权限如何,这是明显地错了。我还没搞清楚这些不需要的选项是从哪里来的。

由于我的最终目标是让几个并发用户都使用自己的凭据连接到他们自己的主目录,因此我开始尝试这个mount咒语,特别是这个multiuser选项:

sudo mount.cifs -o "user=me,noperm,multiuser" //freenas/me $HOME/mnt


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X

仍然错误。但是,当我添加 mount 选项时cifsacl

sudo mount.cifs -o "user=me,noperm,multiuser,cifsacl" //freenas/me $HOME/mnt

并通过命令输入我的服务器凭据cifscreds,我得到以下结果:

//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,multiuser,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,cifsacl,noperm,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)


me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 root root 0 Apr 21 00:10 .
drwxr-xr-x 2 root root 0 Apr 21 00:07 ..
-r--r--r-- 1 root root 0 Apr 21 00:09 R--R--R--
-rw-r--r-- 1 root root 0 Apr 21 00:10 RW-R--R--
-rwx------ 1 root root 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 root root 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x 1 root root 0 Apr 21 00:09 R-XR-XR-X

尽管选项file_mode=0755,dir_mode=0755仍在注入,但权限现在显示正确。但现在 UID 是错误的,一切看起来都像是 root 所拥有的。我实际上可以创建、修改和删除共享中的文件,但它们显示为 root 所拥有。我知道应该有一个由 和 执行的映射cifs.idmapwinbindd但我还没有弄清楚具体是如何完成的或如何设置它。

我宁愿不再使用vers=1.0kluge;我更愿意正确地做这件事。有什么提示可以告诉我我遗漏了什么吗?

相关内容