SELinux阻止Samba目录列表

前端之家收集整理的这篇文章主要介绍了SELinux阻止Samba目录列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在CentOS服务器上运行Samba,我遇到了一个问题,它允许我连接到服务器并查看共享,但将共享显示为空目录.我觉得这个行为很奇怪.

这是我的smb.conf中给定共享的节:

[seanm]
    path = /home/seanm
    writeable = yes
    valid users = seanm,root
    read only = No

这是我在服务器端看到的内容

[seanm@server ~]$ls -l
-rw-r--r-- 1 seanm seanm 40 Jan  4 13:45 pangram.txt

但是:

[seanm@client ~]$smbclient //server/seanm -U seanm -W WORKGROUP
Enter seanm's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.29.el5_5.1]
smb: \> ls
  .                                   D        0  Fri Jan  7 10:08:55 2011
  ..                                  D        0  Fri Jan  7 07:58:31 2011
            58994 blocks of size 262144. 50356 blocks available

Windows客户端和Linux客户端系统上都存在此行为.防火墙打开并且防火墙关闭时会出现这种情况,所以不是这样. / var / log / messages和/ var / log / secure都没有关于Samba的任何抱怨.如果我mkdir共享中的目录,显示,以及子目录,但文件仍然没有出现.

我怀疑SELinux是个问题:以防万一,这里是相关的设置.

[root@server ~]# getsebool -a | grep samba
    samba_domain_controller --> off
    samba_enable_home_dirs --> on
    samba_export_all_ro --> off
    samba_export_all_rw --> off
    samba_share_fusefs --> off
    samba_share_nfs --> off
    use_samba_home_dirs --> on
    virt_use_samba --> off

我在这里做错了什么,我该怎么做才能解决它?

编辑:SELinux可能是问题所在,当我将SELinux设置为“允许”或发出setsebool -P samba_export_all_rw时问题消失这一事实判断 – 这两种情况对于生产环境都是不可接受的.目录需要什么样的上下文才能使Samba用户真正从中获取文件?我认为rolling your own rules and/or context是非常次优的.

解决方法

现在问题似乎已经解决了.这是SELinux;主目录的上下文未正确设置.
[seanm@server /home]$ls -alZ
    drwx------  larry stooges  system_u:object_r:home_root_t    larry
    drwx------  seanm seanm    system_u:object_r:home_root_t    seanm

表现出问题.

[seanm@server /home]$chcon -hR system_u:object_r:user_home_dir_t /home/seanm
[seanm@server /home]$restorecon -Rv /home/seanm
[seanm@server /home]$ls -alZ
    drwx------  larry stooges  system_u:object_r:home_root_t        larry
    drwx------  seanm seanm    system_u:object_r:user_home_dir_t    seanm

问题没有表现为seanm,但是表现为拉里.

我最好的猜测是它与Cobbler有关:’larry’和’seanm’都是在Cobbler的安装过程中创建的,我注意到system_u对他们来说也不是一个合适的上下文,因为它不是用户创建的useradd获取

[root@server /home]# useradd selinuxtest
[seanm@server /home]$ls -alZ
    drwx------  larry       stooges     system_u:object_r:home_root_t        larry
    drwx------  seanm       seanm       system_u:object_r:user_home_dir_t    seanm
    drwx------  selinuxtest selinuxtest user_u:object_r:user_home_dir_t      setest

我想是时候通过Cobbler文档了.

猜你在找的Linux相关文章