|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
提及SELinux,多半Linux刊行版缺省都激活了它,可见它对体系平安的主要性,惋惜因为它自己有必定的庞大性,假如不熟习的话常常会发生一些看似稀里糊涂的成绩,招致人们经常保持利用它,为了不剖腹藏珠,学学怎样办理SELinux成绩是很有需要的。
我们以CentOS情况为例重现一个十分罕见的SELinux成绩:
起首必要确认SELinux处于激活形态,可使用getenforce或sestatus命令:- shell>getenforceEnforcingshell>sestatusSELinuxstatus:enabledSELinuxfsmount:/selinuxCurrentmode:enforcingModefromconfigfile:enforcingPolicyversion:24Policyfromconfigfile:targeted
复制代码 注:关于SELinux的基本常识先容请参考鸟哥的Linux私房菜中相干的先容。
我们还必要确认体系已安装并启动了Apache,没有的话就YUM装一个,这很复杂,就未几说了,接着在root目次创立一个测试文件test.html,以下:- shell>cat/root/test.htmlhello,world.
复制代码 然后把这个测试文件拷贝到Apache的DocumentRoot目次,我的Apache是经由过程YUM安装的话,缺省是/var/www/html目次,以下:- shell>cp/root/test.html/var/www/html
复制代码 接着扫瞄一下,假如没出甚么幺蛾子,应当统统都在乎料当中,以下:- shell>curlhttp://localhost/test.htmlhello,world.
复制代码 看到这,你大概以为我言之无物,别发急,上面就是见证事业的时分了:
一样仍是谁人测试文件test.html,不外此次不再是拷贝,而是剪切,以下:- shell>mv/root/test.html/var/www/html
复制代码 接着扫瞄一下,怎样,了局很出人意表吧,居然提醒权限毛病,以下:- shell>curlhttp://localhost/test.html<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML2.0//EN"><html><head><title>403Forbidden</title></head><body><h1>Forbidden</h1><p>Youdonthavepermissiontoaccess/test.htmlonthisserver.</p></body></html>
复制代码 固然,我们如今晓得这个成绩是因为SELinux引发的,但还不知其以是然,实践上成绩的缘故原由此时已被audit历程纪录到了响应的日记里,能够如许检察:- shell>audit2why</var/log/audit/audit.log
复制代码 了局信息可读性不是很好,假如看不懂的话,保举安装setroubleshoot套件:- shell>yuminstallsetroubleshoot
复制代码 它自己是一个GUI套件,不外个中包括的一个sealert命令对我们命令行用户很有效:- shell>sealert-a/var/log/audit/audit.logSummary:SELinuxispreventing/usr/sbin/httpd"getattr"accessto/var/www/html/test.html.DetailedDescription:SELinuxdeniedaccessrequestedbyhttpd./var/www/html/test.htmlmaybeamislabeled./var/www/html/test.htmldefaultSELinuxtypeishttpd_sys_content_t,butitscurrenttypeisadmin_home_t.Changingthisfilebacktothedefaulttype,mayfixyourproblem.Filecontextscanbeassignedtoafileinthefollowingways.*Filescreatedinadirectoryreceivethefilecontextoftheparentdirectorybydefault.*TheSELinuxpolicymightoverridethedefaultlabelinheritedfromtheparentdirectorybyspecifyingaprocessrunningincontextAwhichcreatesafileinadirectorylabeledBwillinsteadcreatethefilewithlabelC.Anexampleofthiswouldbethedhcpclientrunningwiththedhclient_ttypeandcreatingafileinthedirectory/etc.Thisfilewouldnormallyreceivetheetc_ttypeduetoparentalinheritancebutinsteadthefileislabeledwiththenet_conf_ttypebecausetheSELinuxpolicyspecifiesthis.*Userscanchangethefilecontextonafileusingtoolssuchaschcon,orrestorecon.Thisfilecouldhavebeenmislabeledeitherbyusererror,orifannormallyconfinedapplicationwasrununderthewrongdomain.However,thismightalsoindicateabuginSELinuxbecausethefileshouldnothavebeenlabeledwiththistype.Ifyoubelievethisisabug,pleasefileabugreportagainstthispackage.AllowingAccess:Youcanrestorethedefaultsystemcontexttothisfilebyexecutingtherestoreconcommand.restorecon/var/www/html/test.html,ifthisfileisadirectory,youcanrecursivelyrestoreusingrestorecon-R/var/www/html/test.html.FixCommand:/sbin/restorecon/var/www/html/test.html
复制代码 此次应当看懂了吧!缘故原由是说Apache下文件高低文范例应当是httpd_sys_content_t,可是如今是admin_home_t,以是权限毛病,而且在开头处给出了修复命令。
可httpd_sys_content_t,admin_home_t都怎样看啊?很复杂,借助ls命令的-Z参数便可:- shell>ls-Z/root/test.htmlunconfined_u:object_r:admin_home_t:s0/root/test.htmlshell>ls-Z/var/www/html/test.htmlsystem_u:object_r:httpd_sys_content_t:s0/var/www/html/test.html
复制代码 申明:回到成绩的入手下手,拷贝之以是没呈现成绩,是由于cp主动修正高低文属性,而剪切之以是呈现成绩是由于mv保存原文件的高低文属性。
晓得了怎样办理SELinux成绩,今后在碰到相似的情形不要急着果断的封闭SELinux。
文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln |
|