SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统。对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的,这是一种基于内核的安全系统。

1、SElinux的状态

命令"getenforce"可以查看SElinux的状态,SElinux的状态分为以下三种:

Enforcing    (1)           强制模式

Permissive   (0)           警告模式

Disabled                     关闭模式

"setenforce"可以设置SElinux的状态,但是只能设置0和1两种,即警告模式或者强制模式。如果需要关闭,则在配置文件"/etc/sysconfig/selinux"下将"SELINUX=enforcing"改为"SELINUX=disabled",因为SElinux是基于内核的安全系统,所以在设置完成之后需要重启内核,即需要重启电脑才可以生效。

2、SElinux对服务的影响

SElinux是最全面的安全系统,所以会对文件和服务有一定的限制,以下服务以ftp为例。

SElinux会在文件上做出上下文标识,例如下图所示,在"/mnt"和"/var/ftp/pub"下分别建立文件"file",输入"ls -Z"可以查看文件标识。可以看出,"/mnt/file"为"mnt_t",而"/var/ftp/pub/file"标识为"public_content_t",这样会导致将"/mnt/file"移入"/var/ftp/pub"目录下,连接lftp无法看到这个文件。

SElinux为了系统的安全,会禁止服务一些危险功能的使用,可以输入"getsebool -a | grep ftp"来查看禁止了ftp服务的哪些功能,如下图所示,输入"setsebool -P 功能 on|off"可以控制这些功能的开关。

3、SElinux的上下文管理

之前提到SElinux会在目录和文件上留下上下文标识,输入"ls -Z"可以查看。命令"chcon -t 上下文 文件"可以更改文件和目录的上下文标识,就可以解决上述中lftp无法看到其他上下文标识文件的问题。例如下图所示,现有两个不同上下文标识的文件"txt"和"file"连接lftp后可以看到"file",输入"chcon -t public_content_t /var/ftp/pub/txt"后,重新连接lftp,就可以看到"file"和"txt"两个文件了。

如下图所示,将匿名用户登陆的家目录改为"/westos",并将标识改为"public_content_t",连接lftp可以看到这个家目录。但是将SElinux的状态改为"disabled"重启后再改回"enforcing",重启后重新连接lftp,发现无法看见家目录了。

上述情况说明使用"chcon"命令改变目录的上下文标识只是临时的。永久改变目录的上下文标识,需要做如下步骤:

a、使用命令"semanage fcontext -l | grep /westos"查看该目录是否有上下文规则。

b、输入"semanage fcontext -a -t public_content_t '/westos(/.*)?'"为"/westos"添加上下文规则,并通过a步骤命令查看。

c、查看到上下文规则后,输入命令"restorecon -RvvF /westos"将规则同步至目录及其子目录。

上述步骤完成后就可以永久改变"/westos"目录的上下文标识了,重新连接lftp就可以看到目录了。

4、SElinux的日志

在SElinux的使用当中,会出现一些错误,例如连接lftp后无法看到里面的文件,或者在进行配置时某一步出现错误。这些错误出现后是可以查出来并且解决的,这就是SElinux日志的使用。

SElinux的日志会记录在"/var/log/audit/audit.log"和文件"/var/log/messages"中,前者只会说明错误,但是不会提供解决办法,且阅读复杂。"/var/log/messages"文件可以详细的记录错误,并且提供解决方法,SElinux的记录软件是"setroubleshoot-server.x86_64"。下面将以lftp连接后无法看到里面的文件来具体介绍。

前面已做叙述,如果不改变下图中的"file1"文件的上下文标识,是无法看到这个文件的。

在没有"setroubleshoot-server.x86_64"这个软件的情况下,清空日志后,发现日志中并不会记录这个错误。

然后安装这个软件后,重新连接,再查看日志,其中就会出现这个错误的具体日志。并且会提供解决方法,根据解决方法就可以解决这个问题了。

最新文章

  1. 【数据结构】红黑树 C语言代码
  2. Thread与Runable
  3. Chapter 4. Button, Checkbutton, and Radiobutton Widgets 按钮,复选按钮,单选按钮
  4. jQuery event的复制粘贴的坑
  5. JDBC详解系列(四)之建立Stament和执行SQL语句
  6. vsto下开发wps插件
  7. Newtonsoft.Json添加项
  8. 计算机信息类ComputerInfo(车)
  9. [05] EL表达式
  10. Mark 韦氏拼音 邮政式拼音 和汉语拼音
  11. linux每日命令(30):Linux 用户及用户组相关文件、命令详解
  12. 利用vue写一个复选框的组件
  13. jmeter教程--简单的做压力测试
  14. 超感猎杀/超感八人组第一季至二季/全集Sense8迅雷下载
  15. scp拷贝文件
  16. jQuery CSS()方法改变CSS样式实例解析
  17. 【大数据系列】HDFS初识
  18. 基元线程同步构造之信号量(Semaphore)
  19. Mysql综合案例
  20. <Android 应用 之路> MPAndroidChart~BubbleChart(气泡图) and RadarChart(雷达图)

热门文章

  1. xmanager小技巧
  2. 学习过程中遇到的python内置函数,后续遇到会继续补充进去
  3. 移动IM开发指南2:心跳指令详解
  4. 从Excel到Python 数据分析进阶指南
  5. sort和sorted深入理解----引子:多维列表,如何实现第一个元素升序,第二个元素降序
  6. js避坑历险记
  7. POJ 3155:Hard Life(最大密度子图)
  8. POJ 2914:Minimum Cut(全局最小割Stoer-Wagner算法)
  9. kubeadm安装k8s
  10. vue的基本用法和指令