编辑:这是 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 不会取消修复此问题。