Linux编程:怎样办理SELinux成绩仓酷云
功能实在太强了,在配合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 永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。 我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。 得到到草率的回答或者根本得不到任何Linux答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。 眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。 你需要提供精确有效的信息。Linux这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。 放手去搞。尽量不要提问,运用搜索找答案,或者看wiki,从原理上理解操作系统的本质,而不是满足于使用几个技巧。尽量看英文资料。 其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
页:
[1]