编辑:它是 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
edit2:当目录未挂载时,我可以 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 时遇到困难,所以我一直很想学习如何更好地改进故障排除过程
与其禁用所有的 SELinux (echo 0 >/selinux/enforce),不如将 SElinux 配置为允许 samba 访问
这将提供 samba 访问权限。然后你可以使用
以确保后续的 restorecon 不会解决此问题。