为什么一旦将某个东西挂载到某个文件夹,Samba 就无法访问该文件夹?

为什么一旦将某个东西挂载到某个文件夹,Samba 就无法访问该文件夹?

编辑:这是 F#$CKING SELINUX。echo 0 >/selinux/enforce而且它可以工作。

编辑:基于我无法查看目录中的文件这一事实,即使它们被递归设置为 ugo+rwx(请参阅此帖子底部的编辑),我怀疑问题比已挂载的共享更为根本。

我的 samba 配置中有以下共享设置:

[test]
path = /mnt/
guest ok = yes
writeable = yes
browseable = yes

/mnt 文件夹的权限如下:

[root@[host-redacted] mnt]# ls -al /mnt
total 16
drwxr-xr-x.  4 root root 4096 Mar  3 00:54 .
dr-xr-xr-x. 25 root root 4096 Feb 25 19:04 ..
drwxr-xr-x.  2 root root 4096 Feb 26 21:45 files
drwxr-xr-x.  2 root root 4096 Mar  3 00:54 tmp

此时,这些文件夹尚未挂载任何内容。当我尝试通过 samba 访问时,一切正常:

[root@[host-redacted] mnt]# smbclient -Uguest //[host-redacted]/test
Enter guest's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
  .                                   D        0  Sun Mar  3 00:54:52 2013
  ..                                 DR        0  Mon Feb 25 19:04:02 2013
  tmp                                 D        0  Sun Mar  3 00:54:52 2013
  files                               D        0  Tue Feb 26 21:45:55 2013

                50396 blocks of size 1048576. 46487 blocks available
smb: \> cd files
smb: \files\> ls
  .                                   D        0  Tue Feb 26 21:45:55 2013
  ..                                  D        0  Sun Mar  3 00:54:52 2013

                50396 blocks of size 1048576. 46487 blocks available

但是,在我安装加密共享到该驱动器后,事情就变得不对劲了。我安装它并检查权限和所有权是否相同:

[root@[host-redacted] mnt]# mount /dev/mapper/[encrypted-partition-redacted] files

[root@[host-redacted] mnt]# ls -al /mnt/
total 16
drwxr-xr-x.  4 root root 4096 Mar  3 00:54 .
dr-xr-xr-x. 25 root root 4096 Feb 25 19:04 ..
drwxr-xr-x. 13 root root 4096 Jul  6  2012 files
drwxr-xr-x.  2 root root 4096 Mar  3 00:54 tmp

但是现在当我访问共享时,文件目录消失了:

[root@[host-redacted] ~]# smbclient -Uguest //[host-redacted]/test
Enter guest's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
  .                                   D        0  Sun Mar  3 00:54:52 2013
  ..                                 DR        0  Mon Feb 25 19:04:02 2013
  tmp                                 D        0  Sun Mar  3 00:54:52 2013

                50396 blocks of size 1048576. 46487 blocks available

我做了一个快速检查,以确保我的来宾用户(无人)可以读取 /mnt,并且似乎没问题:

[root@[host-redacted] mnt]# sudo -u nobody ls /mnt
files  tmp

有人能解释一下发生了什么吗?我的 samba 配置是从之前运行 samba 3.3 的机器复制而来的,设置大致相同,而这个新设置运行的是相同的配置(复制的文件),但使用的是 samba 3.5.10-125.el6

我还检查了变更日志看不到任何突出的东西。

编辑:我的 smb.conf 中没有任何否决文件指令:

[root@pmfs mnt]# grep -i veto /etc/samba/smb.conf

编辑2:当目录未挂载时,我可以通过 cd 进入文件 -然而我无法看到我在那里创建的文件

[root@pmfs samba]# echo asdf > /mnt/files/test.txt

[root@pmfs files]# chmod -R ugo+rwx /mnt/files/

[root@pmfs ~]# smbclient -Uguest //pmfs/test
Enter guest's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
  .                                   D        0  Sun Mar  3 00:54:52 2013
  ..                                 DR        0  Mon Feb 25 19:04:02 2013
  tmp                                 D        0  Sun Mar  3 00:54:52 2013
  files                               D        0  Mon Mar  4 20:05:45 2013

                50396 blocks of size 1048576. 46486 blocks available
smb: \> cd files
smb: \files\> ls
  .                                   D        0  Mon Mar  4 20:05:45 2013
  ..                                  D        0  Sun Mar  3 00:54:52 2013

                50396 blocks of size 1048576. 46486 blocks available

除了针对这个特定问题的解决方案之外,我还想知道是否还有其他方法可以解决这个问题 - 因为我经常在配置 samba 时遇到困难,所以我一直对学习如何更好地改进故障排除过程很感兴趣

答案1

这是 F#$CKING SELINUX。echo 0 >/selinux/enforce 并且它起作用了。

不要仅仅禁用 SELinux 的一切(echo 0 >/selinux/enforce),只需配置 SElinux 以允许 samba 访问

 chcon -R -t samba_share_t /mnt/files

这将授予 Samba 访问权限。然后您可以使用

 semanage fcontext -a -t samba_share_t "/mnt/files"

以确保后续的 restorecon 不会取消修复此问题。

相关内容