热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

centOS权限问题-selinux小结:

注:本文图片来自鸟哥私房菜基础篇第四版截图,在centOS7.x中经常遇到给足权限,但是进程依旧提示权限不够的问题,前几天用rsyslog管理远程日志的时候就是这样,后来发现在cenOS7

注:本文图片来自鸟哥私房菜基础篇第四版截图,

在centOS7.x中经常遇到给足权限,但是进程依旧提示权限不够的问题,前几天用rsyslog管理远程日志的时候就是这样,后来发现在cenOS7.x后系统还有一个selinux的进程在对进程读取文件的过程做权限监管,selinux是什么呢?

[百度百科解释:]SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。 [1]

selinux采用控制主体[subject,可以理解为进程]是否能操作目标[object,可以理解为文件],是否能够操作控制的依据就是这两者间的策略,但是由于进程与文件数量庞大,因此selinux会依据某些服务来定制基本的存取安全性策略,这些策略内还会有详细的规则(rule)来指定不同的服务开放某些资源是否可以读取。centos7中只提供了3中策略:

​ targeted:针对网络服务较多,针对本机限制较少,预设的策略

​ minimum:由targeted修订而来,针对选着的进程来保护

​ mls:完整的selinux限制,限制方面非常严格

除了主体与目标的策略外,还要保证两者之间的安全性文本一致。

进程的安全性文本在内存中,而文件的则保存到了inode中了, 所以进程读取文件时需要先获取文件的inode。

查看文件安全性文本:

[root@localhost log]# ls -Zdl ../log/
drwxr-xr-x. 2 unconfined_u:object_r:home_root_t:s0 root root 6 530 16:51 ../log/
安全性文本为: unconfined_u:object_r:home_root_t:s0
分别是:Identify:role:type
       身份:角色:类型
身份识别:相当于账号方面的身份识别,主要的身份识别有:
        unconfined_u:不受限的用户,也就是, 该文件来自不受限的进程产生,一般来时,我们使用登录账号获取bash后,预设的bash环境是不受限selinux管制的,因为bash并不是什么特别的网络服务,所有这个不受selinux管制,所有它产生的文件也是unconfied_u
        system_u:系统用户,大部分就是系统自己产生的文件
 角色:透过角色字段,我们可以知道这个资源是属于进程,文件还是代表使用者,一般角色有:
        object_r:代表文件或目录等文件资源
        system_r:代表进程,一般使用者也会被指定为system_r
 类型:其实比对安全性文本,最重要的就是类型,其他两个基本不重要。type在进程中叫domain,在文件中叫Type

 进程中的domain需要和文件中的Type搭配才能进行文件的读取

 进程安全文本查询:
 [root@localhost log]# ps -eZ | grep rsys
system_u:system_r:syslogd_t:s0  22048 ?        00:00:02 rsyslogd
安全文本:system_u:system_r:syslogd_t:s0

selunux

selinux的三种模式:如上图描述

Disabled:关闭,不会进行检查

Permissive:警告模式:表示检查,但是如果出现不匹配只是警告

enforcing:强制:检查匹配,默认

查看模式:

[root@localhost log]# getenforce 
Enforcing
默认强制模式

查看selinux状态:

sestatus [-vb]
-v:检查列于/etc/sestatus.conf内的文件与进程的安全性文本内容
-b:将目前策略的规则boolean列出,
[root@localhost log]# sets
setsebool  setserial  setsid     
[root@localhost log]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

模式调整:

setenforce [0|1]
0宽容模式
1强制模式

查看系统规则是启用:

[root@localhost log]# getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
auditadm_exec_content --> on
authlogin_nsswitch_use_ldap --> off
authlogin_radius --> off
authlogin_yubikey --> off
awstats_purge_apache_log_files 
....

seinfo

sesearch

chcon

recon

练习:将系统日志更换到/home/log/message中

1.查看进程安全性文本
[root@localhost log]# ps -eZ | grep rsyslog
system_u:system_r:syslogd_t:s0  25015 ?        00:00:00 rsyslogd
知道domain : syslogd_t
2.查看/home/log安全性文本
[root@localhost log]# ls -lZd /home/log/
drwxr-xr-x. root root unconfined_u:object_r:user_home_dir_t:s0 /home/log/
知道了Type: user_home_dir_t
3.查看主体syslogd_t 是否能与目标 user_home_dir_t 匹配
[root@localhost log]# sesearch -A -s syslogd_t | grep user_home_dir_t
   allow syslogd_t user_home_dir_t : dir { getattr search open } ; 
   allow syslogd_t user_home_dir_t : lnk_file { read getattr } ; 
从中知道是能进行匹配的, 但是只能读取文件, 不能写文件, 还是不能解决我们的问题
4.这个时候需要找到syslogd_t能匹配运行写文件的目标Type, 可以使用sesearch -A -s syslogd_t | grep write查询的方式,也可以直接使用/var/log/message的Type,这里直接使用/var/log/message的Type
5.更改Type
[root@localhost log]# chcon -R -v -t var_log_t /home/log/
正在更改"/home/log/" 的安全环境
6.验证:
[root@localhost log]# ls -Zld /home/log/
drwxr-xr-x. 2 unconfined_u:object_r:var_log_t:s0 root root 6 530 19:15 /home/log/
[root@localhost log]# cd /home/log/
[root@localhost log]# ls
[root@localhost log]# systemctl restart rsyslog.service
[root@localhost log]# ls
message

推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
兔子东大门一手批发
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有