Contents
  1. 1. SELinux
  2. 2. 设置SELinux

  在多个主机间共享文件,Samba是一个不错的选择,速度快而且稳定,不同系统之间都可以访问,包括Android,用它架设一个简单媒体服务器是不错的选择。之前在Ubuntu开启共享是十分简单地,文件管理里自带设置,在其它CentOS6的VPS上我也设置过,并不复杂,但是在CentOS7上同样设置之后,虽然能查到到共享目录,但是无法打开,显示没有权限。
  

  几经折腾之后,怀疑是SELinux在作祟,试着关闭SELinux之后,服务正常了。但粗暴地关闭显然是不够优雅的,我们还是设置SELinux与之共存吧.

SELinux

  本人对SELinux也不甚了解,作为一个桌面Linux用户,有iptables就绰绰有余了(事实上规则长期全空),但是CentOS作为一个以稳定安全著称的发行版,SELinux是默认开启的(前面提到的VPS默认关闭了,能出于易用性的考虑)。简单浏览了一下,SELinux竟然出自大名鼎鼎(臭名昭著)的美国NSA之手,意为安全增强Linux,通过定义策略来控制哪些域可以访问哪些上下文。

  SELinux的三个核心概念:

  1. 域(domain),针对进程
  2. 上下文(context),针对文件
  3. 策略,规定了哪些进程如何访问指定的文件资源

  SELinux三种工作模式:

  1. 强制(enforcing) 所有违反策略的行为都会被禁止,并被内核记录
  2. 允许(permissive) 违反策略的行为不被禁止,但会产生警告
  3. 禁用(disabled) 禁用SELinux
      所以简单地设置其模式为permissive就可以让samba工作了.
    1
    setenforce 0

设置SELinux

  既然SELinux如此强大(已经是Linux内核一部分了),那么还是学习一下简单地设置吧.
  打开samba_domain_controller配置

1
setsebool -P samba_domain_controller on

  利用 semanage 打开你期望在网络上分享的目录,否则只能看到空目录.

1
2
semanage fcontext -a -t samba_share_t '/<share_dir>(/.*)?'
restorecon -R /<share_dir>

至此Samba的SELinux相关设置完成.

Contents
  1. 1. SELinux
  2. 2. 设置SELinux