selinux学习理解
SElinux学习总结

SElinux学习体会学习目的:(1)掌握SElinux控制策略的查询修改方式。
(2)对SElinux的控制范围进行初步的了解。
(3)了解SElinux从进程初始化、继承和程序执行三个方面通过策略进行访问控制。
学习内容:(1)SElinux的三种状态模式:enforcing(强制模式)、permissive(警告模式)、disabled(关闭模式),可通过getenforce 命令判断SElinux所处状态,setenforce 0/1命令进行强制/警告模式的转换。
(2)查看文件的上下文值SElinux将每个程序都编入到SElinux域内,同时将每个资源放在SElinux安全上下文中,然后根据SElinux策略定义哪个进程可以访问哪些资源。
使用命令ls -Z可以查看文件的上下文值。
其中的第三个字段为文件标记字段,记录了文件的类型。
(3)SElinux的访问控制我们知道,context值是受上一级目录影响的,一般情况下它们会继承上一级目录的context值。
Tmp目录和html目录拥有不同的标记类型,tmp目录下的index.html文件context值第三个字段是tmp_t,而html目录下的index.html文件context值第三个字段为httpd_sys_content_t。
在开启httpd服务器后,通过浏览器访问网址,并切换SElinux的状态模式,判断SElinux策略是否对Apache 网站目录下的文件有访问控制的功能。
①在默认模式下,用浏览器打开index.html文件,文件的标记为httpd_sys_content_t,可以正常访问文件。
②用chcon -t tmp_t命令,修改文件的context值,文件的标记变为tmp_t,再用浏览器打开index.html文件,会出现错误提示。
③用restorecon -v命令,按照SElinux的目标策略恢复文件的默认标记,文件的标记变为httpd_sys_content_t,可以正常访问文件。
SELINUX详解

SELINUX知识点Security Enhenced linux如果某个用户需要以root权限执行某条命令怎么办?如果某个用户a想要与用户b共同享有某个文件的全部权限怎么办?进程安全上下文 context进程是用户获取资源的代理一个进程在运行过程中对哪些文件具有访问权限是由进程的发起者的权限决定的试想如果你的web服务器是以webman这个用户的身份运行的他对系统中所有o上置r的文件都具有读权限如果某个人劫持了web服务器那么他就获得了webman的所有权限他可以利用缓冲区溢出漏洞set uid等多种方式获得权限提升进而劫持整个系统此时传统的DAC模式就无法防范这种攻击DAC 自主访问控制用户自主决定属于自己的文件权限MAC 强制访问控制内核定义了所有用户包括root 的权限由selinux决定由内核实现当进程不运行时只是文件Subject 是正在内存中执行的进程object 动作承受者进程文件套接字是否一个subject能够操作一个object 取决于selinux的定义在一个进程需要运行以完成某种任务时 selinux为此进程规定了一个运行环境sandbox,此环境限制了此进程可以进行的操作和可以访问的文件此时这个进程可以活动的范围就由selinux限定如果是传统的DAC 此进程的行为权限则由运行它的用户的权限决定,此时它的活动范围是整个系统selinux将进程分类将资源分类定义了那个进程在哪个范围内运行只能访问哪些资源此时不管它对其它的资源有读写权限此时只要selinux不允许它就不能访问(1)首先设置开启selinux的全局设置:查看和设置selinux状态、配置文件、配置选项:临时查看和设置:#getenforce //查看selinux状态#sestatus –bv //查看系统当前运行的selinux的状态#semodule –l //查看selinux加载的内核模块#sealert -a /var/log/audit/audit.log //查看selinux错误日志#system-config-selinux //SElinux的图形化管理工具#setenforce 1/0 // 把selinux临时设为enforcing/permissivels -Z ps -Z id -Z //分别可以看到文件,进程和用户的SELinux属性seinfo //查询SElinux的policy信息查看文件系统的扩展属性:getfattr[root@linuxas ~]# getfattr -m. -d /etc/passwdgetfattr: Removing leading '/' from absolute path names# file: etc/passwdsecurity.selinux="system_u:object_r:etc_t:s0\000"查看的文件的 security.selinux 属性中储存了此文件的安全上下文, 所以上面例子中的上下文就是system_ubject_r:etc_t 。
selinux基本工作原理

selinux基本工作原理SELinux(Security-Enhanced Linux)是一个在Linux内核中实现的强制访问控制(MAC)系统。
其基本工作原理是通过在系统中强制执行安全策略,对进程的访问和操作进行更为细致和精确的控制,以增强系统的安全性。
以下是SELinux的基本工作原理:1.策略定义:SELinux的工作始于一个称为"策略"的定义。
策略规定了哪些主体(如进程、用户)有权执行哪些操作(如读、写、执行),以及在哪些对象(如文件、目录)上执行这些操作。
策略是由安全策略管理器生成和维护的。
2.标签:SELinux为系统上的每个对象和主体分配唯一的安全标签。
这些标签包含了有关对象和主体的信息,如它们的角色、类型和安全上下文。
标签的引入使得SELinux能够在更细粒度上进行访问控制。
3.强制访问控制:SELinux通过在系统中实施强制访问控制来执行定义的策略。
传统的Linux访问控制是基于自愿访问控制(DAC),而SELinux引入了强制访问控制(MAC)。
这意味着即使用户具有访问某个资源的权限,如果SELinux规则不允许,则该用户也无法访问。
4.安全上下文:SELinux使用安全上下文来定义对象和主体的标签。
安全上下文包括类型(type)、角色(role)和用户(user)。
这些信息在策略中定义,并通过标签与对象和主体相关联。
5.审计日志:SELinux还提供了审计功能,可用于记录系统上发生的安全事件。
审计日志记录包含有关SELinux决策的信息,以及与安全策略违规相关的详细信息。
总体而言,SELinux通过实施强制访问控制和基于安全标签的访问规则,提供了比传统自愿访问控制更为细致和强大的安全性。
这有助于防范各种攻击和提高系统的整体安全性。
selinux基本知识及更改

在Redhat Enterprise Linux 4.0或Fedora Core 2 Linux以上版本的Linux中,有不少用户经常会遇到诸如apache的Permission denied,X windows打不开等等问题,抛开一些常规配置错误外,很大一部分原因是因为激活了SELinux的缘故。
什么是SELinux?SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,据称相当于B1级的军事安全性能。
比MS NT所谓的C2等高得多。
应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。
SELinux vs Linux普通Linux安全和传统Unix系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等,就可存取资源。
在传统的安全机制下,一些通过setuid/setgid的程序就产生了严重安全隐患,甚至一些错误的配置就可引发巨大的漏洞,被轻易攻击。
而 SELinux则基于强制存取控制方法,即MAC,透过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。
SELinux on Redhat Linux在RHEL4.0或FC3以上的版本中,可以在安装时就选择是否激活SELinux,系统自动会安装相应的内核、工具、程序等。
由于 SELinux的MAC机制将极大的影响了现有引用,因此RHEL4/FC3中已预配置了大量兼容现有应用的安全策略。
SELinux的配置相关文件都在 /etc/selinux下,其中/etc/selinux/targeted目录里就包含了策略的详细配置和context定义,以下是主要文件及功用:/etc/selinux/targeted/contexts/*_context 默认的context设置/etc/selinux/targeted/contexts/files/* 精确的context类型划分/etc/selinux/targeted/policy/* 策略文件使用Redhat 默认的策略对正常应用带来的影响比较小,兼容性相对比较好。
Linux中SElinux

Linux中SElinuxSElinux初探SElinux已经是个⾮常完备的内核模块了,CentOS5.x提供了很多管理SELinux的命令与机制,因此在整体架构上⾯⽐以前的版本要单纯且容易操作管理。
SElinux字⾯上的意义就是安全强化的Linux。
SELinux是在进⾏程序、⽂件等权限设置依据的⼀个内核模块SELinux的启动、关闭与查看SELinux⽀持三种模式,分别如下Enforcing:强制模式,代表SELinux正在运⾏中,且已经正确开始限制domain/type了。
permissive:宽容模式:代表SELinux正在运⾏中,不过仅会有警告信息并不会实际限制。
domain/type的访问。
这种模式可以运来作为SELinux的调试之⽤。
disabled:关闭,SELinux并没有实际运⾏。
SELinux的配置⽂件就是在 /etc/selinux/config查看当前SELinux模式。
[root@Centos ~]# getenforceEnforcing范例⼀:列出⽬前的SELinux使⽤的策略[root@Centos ~]# sestatusSELinux status:enabled 是否启动SELinuxSELinuxfs mount:/selinux SELinux的相关⽂件数据挂载点Current mode:enforcing ⽬前的模式Mode from config file:enforcing 配置⽂件制定模式Policy version: 24Policy from config file:targeted ⽬前的策略为何SELinux的启动与关闭上⾯是默认的策略与启动的模式,你要注意的是,如果改变了策略则需要重新启动;如果由enforcing或permissive改成disabled,或由disabled改成其他两个,那也必须要重新启动。
让SELinux模式在enforcing于permissive之间切换的⽅法为:[root@Centos ~]# setenforce [0|1]0:转成permissive宽容模式1:转成Enforcing强制模式。
第15章 SELinux基础

⑵ 许可模式(Permissive Mode)
许可模式表示启用SELinux,记录违规日志,但会允 许所有违规操作。
⑶ 禁用模式(Disabled Mode)
完全禁用SELinux,系统不受SELinux的保护。
SELinux许可模式示意图
⒉ SELinux的配置文件
在Red Hat系列的Linux操作系统中, SELinux的配置文件是 “/etc/selinux/config”。 在这个配置文件中,提供了两个配置参数。
15.3.3 管理SELinux安全上下文
在启用了SELinux的Linux操作系统中,所有的进程、 文件、目录以及端口等资源都有相关联的SELinux标签 ,称作安全上下文。 安全上下文是由简单的字符串所表示的名称,在 SELinux策略中,具体规定了被标记了哪种上下文的进 程能够访问被标记了哪些上下文的文件和端口等资源。 安全上下文是由若干个字段组成的,分别是用户(User )、角色(Role)、类型(Type)和范围(Range) 等字段。其中,用户的上下文名称通常以“_u”结尾, 角色的上下文名称通常以“_r”结尾,类型的上下文名 称通常以“_t”结尾。在SELinux默认的targeted策 略中,我们只需要考虑第三个上下文:类型(Type)上 下文。
[root@redhat ~]# ls -dZ /var/www/html drwxr-xr-x root root system_u:object_r:httpd_sys_content_t /var/www/html [root@redhat html]# cd /var/www/html [root@redhat html]# echo "Apache Homepage" > index.html [root@redhat html]# ls -Z /var/www/html/index.html -rw-r--r-- root root root:object_r:httpd_sys_content_t /var/www/html/index.html
selinux详解及配置文件
selinux详解及配置⽂件selinux详解selinux 的全称是Security Enhance Linux,就是安全加强的Linux。
在Selinux之前root账号能够任意的访问所有⽂档和服务;如果某个⽂件设为777,那么任何⽤户都可以访问甚⾄删除。
这种⽅式称为DAC(主动访问机制),很不安全。
DAC⾃主访问控制:⽤户根据⾃⼰的⽂件权限来决定对⽂件的操作,也就是依据⽂件的own,group,other/r,w,x 权限进⾏限制。
Root有最⾼权限⽆法限制。
r,w,x权限划分太粗糙。
⽆法针对不同的进程实现限制。
Selinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有⼀个安全标签(即selinux上下⽂)进⾏区分,只有对应的标签才能允许访问,否则即使权限是777,也是不能访问的。
在selinux中,访问控制属性叫做安全上下⽂,所有客体(⽂件、进程间通讯通道、套接字、⽹络主机等)和主体(进程)都有与其关联的安全上下⽂,⼀个安全上下⽂由三部分组成:⽤户(u)、⾓⾊(r)、和类型(t)标识符。
但我们最关注的是第三部分当程序访问资源时,主体程序必须要通过selinux策略内的规则放⾏后,就可以与⽬标资源进⾏安全上下⽂的⽐对,若⽐对失败则⽆法存取⽬标,若⽐对成功则可以开始存取⽬标,最终能否存取⽬标还要与⽂件系统的rwx权限的设定有关,所以启⽤了selinux后出现权限不符的情况时,你就得⼀步⼀步分析可能出现的问题了。
1.selinux状态查看与配置:selinux的配置⽂件位置:/etc/selinux/config,它还有个链接在/etc/sysconfig/selinux.使⽤config⽂件来配置selinux(通过配置⽂件修改selinux的状态属于永久修改,要重启系统才⽣效)[root@localhost ~]# ls /etc/sysconfig/selinux -llrwxrwxrwx. 1 root root 17 Jan 10 19:48 /etc/sysconfig/selinux -> ../selinux/config(1)配置⽂件[root@make_blog ~]# cat /etc/sysconfig/selinux# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected.# mls - Multi Level Security protection.SELINUXTYPE=targetedselinux=enforcing#此项定义selinux状态#enforcing-是强制模式系统,它受selinux保护。
selinux原理
SELinux 是一种强制访问控制(MAC)系统,是Linux 内核的一部分,它通过将安全上下文标签应用到各种资源(如进程、文件、套接字等)来提供更细粒度的安全策略。
它的主要思想是建立一个强制访问控制策略,即只允许明确允许的操作,而禁止所有其他操作,以保护系统和数据安全。
SELinux 的工作原理可以分为以下几个方面:1. 标记系统:SELinux 会为每个对象(如进程、文件、套接字等)提供一个安全上下文标签,该标签包含对象的身份信息、权限信息和其他策略信息。
2. 策略引擎:SElinux 提供了一个策略引擎,用于根据安全上下文标签规则执行访问控制决策,以确定哪些操作是允许的,哪些是禁止的。
3. 访问控制决策:当某个进程对某个对象进行操作时,SELinux 会根据当前操作的安全上下文标签和对象的安全上下文标签,去策略引擎里查找匹配的规则,如果匹配成功则允许操作,否则拒绝访问。
4. 日志记录:SELinux 会将所有访问控制决策信息记录到系统日志中,以便后期审计和分析。
除了上面提到的,SELinux 还有一些其他的原理和特点:1. 强制访问控制(MAC):SELinux 强制访问控制是指只有在用户被授权访问某个资源的情况下才允许访问,而普通的权限控制是基于用户自己的限制和许可来控制访问。
2. 安全上下文:SELinux 使用安全上下文标签来标识每个进程和文件的身份信息、权限信息和其他策略信息。
这些标签是由系统管理员和SELinux 策略引擎共同定义的。
3. 多层安全:SELinux 支持多层安全,可以为不同的用户和应用程序分配不同的安全级别,确保系统各部分之间的完全隔离,并使其更加安全可靠。
4. 可定制性:SELinux 的策略引擎是高度可定制的,可以针对不同的应用场景进行设置,以满足不同的安全需求。
SELinux 是一个复杂而且功能强大的安全模块,它能够在Linux 系统中提供强制访问控制和更细粒度的安全保障,适合需要高度安全性保护的系统和应用程序。
操作系统安全:selinux简介
定而定。这样,我们对控制的主体变成了进程而不是使用者,此外,这个主体进程也不能任意使用系
统文件资源,因为每个文件资源也有针对该主体进程设定可取用的权限.
SELinux 也提供一些预设的政策(policy),并在该政策内提供多个(rule)
Selinux简介
SELinux是通过MAC的方式来控管进程,他控制的主体是进程,而目标则该进程能否读取的文件资源。
Selinux的简介
Selinux简介
1 SELinux(security enhanced Linux)安全强化的Linux
SELinux 是由美国国家安全局(NSA)开发,我们知道所有的系统资源都是透过进程 来进行存取的,那么/var/www/html/如果设定为777,代表所有进程均可对该目录进行存 取,为了控制权限与进程之间的问题,SELinux是在进行进程、文件等细部权限设定依据一 个核心模块,由于启动网络服务也是进程,因此也刚好也能控制网路服务能否存存取系统 资源的一道关卡。
Selinux简介
3
以政策规则定制特定进程读取特定文件:委任式访问控制,MAC
为了避免DAC容易发生的问题,因此SELinux导入了委任式访问控制(mandatory access
control)的方法,委任式访问控制控制可以针对特定的进程与特定的文件资源来进行权限的控管, 即
使你是root,那么在使用不同的进程时,你所取得的权限并不一定时root,而得要看当时该进程的设
主体能不能存取目标除了政策指定外,主体与目标的安全性 本文必须一致才能顺利存取,SELinux重点在保护进程读取文件系 统的权限,主体进程必须要通过SELinux政策内的规则放行后,就 可以与目标资源进行安全性本文的对比,若对比失败,则无法存 取文件,若对比成功则可以开始存取目标
SELinux是什么
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 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
大部分使用 SELinux 的.人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。
它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。
众所周知,标准的UNIX安全模型是"任意的访问控制"DAC。
就是说,任何程序对其资源享有完全的控制权。
假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他!而MAC情况下的安全策略完全控制着对所有资源的访问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
selinux学习理解一、什么是selinux。
selinux全称是security enhanced linux,安全强化linux,是MAC (mandatory access control,强制访问控制系统)的一个实现,目的在于明确的知名某个程序可以访问哪些资源(程序,端口)。
它的用户在于防范0—DAY攻击(利用尚未公开的漏洞实现攻击),所以它不是防火墙和ACL的替代品,功能也不重复。
举例来说,系统上Apache被发现存在一个漏洞,使得远程用户可以访问系统上的敏感文件(比如/etc/passwd),且修复该漏洞的补丁尚未发布,此时selinux可以起到弥补漏洞的方法。
因为/etc/passwd 不具有apache的访问标签,所以Apache对于/etc/passwd的访问会被selinux阻止。
相比其他强制访问系统,selinux有如下访问优势:1.控制策略是可以查询,而非程序比可见的。
2.可以热更改策略,无需或停止服务。
3.可以从程序初始化、继承、执行三个方面,使用策略进行控制。
4.控制范围广,包括:文件系统,目录,文件,文件启动描述符,端口,消息接口,网络接口。
二、了解和配置selinux。
1、获取当前selinux运行状态getenforce:可能返回三种结果Enforcing:记录报警且阻止可疑行为。
Permissive:记录告警,不阻止可以行为。
Disable:关闭selinux。
默认是Enforcing2、改变selinux状态。
setenforce 1|0 1代表Enforcing,0代表Permissive。
此时不需要重启系统就可以实现。
要永久改变selinxu的状态,在/etc/sysconfig/selinux实现。
当从disable切换到enforcing或permissive时,要重启系统并为整个文件系统重新创建安全标签。
3、selinux运行策略。
配置文件/etc/sysconfig/seilnux还包含了selinux运行策略的信息,通过改变SELINUXTYPE值实现,该值有两种可能:targeted代表仅针对预制的几种网络服务和访问请求都要使用selinux。
strict代表所有网络服务和访问请求要经过selinux。
默认为targeted,包含了几乎所有的网络服务的selinux策略配置,已经默认安装并且无需更改可以直接使用。
4、coreutils工具的selinux模式常见的属于coreutils的工具如ps\ls等,可以通增加-Z的方式查看selinux的信息。
例:ls -Z /etc/ 查看目录ps -auxZ 查看进程三、Apache selinux配置实例1、让Apcche可以访问位于非默认目录下的网站。
首先,用semanage fcontext -l | grep ‘/var/www/’得到默认的selinux上下文,/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 ,可以看到apache只能访问有第三段object_r:httpd_sys_content_t标签的文件,那么就可以给你想的访问的非默认目录增加这个标签。
分为两步:为目录增加标签,semanage fcontext -a -t httpd_sys_content_t ‘/www’,然后用新标签为已有的文件进行标注,restorecon -Rv /www,就可以使用这个目录下的网站了。
restorecon起到的是恢复文件默认标签的作用。
如从其它目录复制文件到/var/www/html时,无法访问,因为标签不同,这时就要用restorecon将文件的标签恢复成Apache可以访问的标签。
例:2、让apache侦听非标准端口。
默认情况下Apache只侦听80和443两个端口,若要想让它侦听指定的888端口的话,会在apache启动时报错。
这时候可以在/var/log/messages中查看,3、允许Apache访问创建的私人网站。
若希望在~/pulib_html下创建私人网站,需要在Apache策略中允许该操作,使用setsebool httpd_enable_homedirs 1来改变selinux的bool值,getsebool-a得到现在系统中的bool值,默认情况下,重启后上述操作无效,若想永久生效,加-P参数,setsebool -P httpd_enable_homedirs 1四、其它man httpd_selinuxs相看相关服务的手册setroubleshoot开头的包,audit开头的包安装上面的包后,报警也可能在/var/log/auditd/audit.log中看日志,找到需要执行的代码,可以解决selinux不能访问的问题linux中ftp使用selinux的实例:一、Selinux 下匿名FTP的使用1,确认已经启用了Selinux:[root@sgzhang ~]# getenforceEnforcing2,启动FTP deamon:[root@sgzhang ~]# ps -efZ |grep vsftpdroot:system_r:ftpd_t:s0 root 12636 1 0 20:13 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf3,在匿名访问目录下创建2个文件进行测试,一个是在该目录下手动创建,这样该文件会自动继承/var/ftp/pub下的目录上下文的值,一个用mv命令从root 目录下移动过来,这样的文件会保留root目录下的安全上下文,如下[root@sgzhang pub]# pwd/var/ftp/pub[root@sgzhang pub]# echo "just a test" > test.txt[root@sgzhang pub]# chmod 755 test.txt[root@sgzhang pub]# ls -Z-rwxr-xr-x root root root:object_r:public_content_t:s0 test.txt [root@sgzhang ~]# pwd/root[root@sgzhang ~]# echo "aaa123" > root.txt[root@sgzhang ~]# chmod 755 /root/root.txt[root@sgzhang ~]# mv root.txt /var/ftp/pub/[root@sgzhang ~]# ls -Z /var/ftp/pub/-rw-r-xr-x root root root:object_r:user_home_t:s0 root.txt-rwxr-xr-x root root root:object_r:public_content_t:s0 test.txt4、使用匿名登录测试:[root@sgzhang pub]# lftp localhostlftp localhost:~> cd pubcd ok, cwd=/publftp localhost:/pub> ls-rwxr-xr-x 1 0 0 12 Aug 23 12:19 test.txt-rwxr-xr-x 1 0 0 910974 Aug 04 02:19 yumlftp localhost:/pub>发现这里看不到root.txt文件5、已知系统启动了Selinux,先查看系统日志,有两个工具可以收集到Selinux 产生的日志,一个是setroubleshoot,对应的软件包为setroubleshoot-server-2.0.5-5.el5一个是audit,对应的软件包名称是audit-1.7.13-2.el5,先使用audit工具,使用方法如下:系统中提供了audit相关的命令,常用的有audit2why和audit2allow,audit产生的日志放在/var/log/audit,由于此文件记录的信息很多不宜直接查看,可以借助audit2why命令,首先启动audit deamon[root@sgzhang audit]# /etc/init.d/auditd statusauditd is stopped[root@sgzhang audit]# /etc/init.d/auditd startStarting auditd: [ OK ][root@sgzhang audit]# /etc/init.d/auditd statusauditd (pid 4013) is running...6、在客户端登录FTP服务器时会出发audit deamon产生日志:audit2why </var/log/audit/audit.logtype=AVC msg=audit(1392170806.708:37813): avc: denied { mac_admin } for pid=21841 comm="chcon" capability=33 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=capability2Was caused by:Missing type enforcement (TE) allow rule.You can use audit2allow to generate a loadable module to allow this access.粗的字体提示使用audit2allow命令audit2allow </var/log/audit/audit.log#============= ftpd_t ==============# This avc can be allowed using one of the these booleans:# allow_ftpd_full_access, ftp_home_dirallow ftpd_t admin_home_t:file getattr;#============= unconfined_t ==============allow unconfined_t self:capability2 mac_admin;提示更改bool值。