启用SELinux时遇到的问题

运维 系统运维
一台CentOS5.7的机器,原来只是在公司内部访问,SELinux是禁用的状态,现需要搭建成FTP服务器并发布到外网上去,为了安全,启用SELinux。

 一台CentOS5.7的机器,原来只是在公司内部访问,SELinux是禁用的状态,现需要搭建成FTP服务器并发布到外网上去,为了安全,启用SELinux。编辑/etc/selinux/config文件,将SELINUX=disabled改为SELINUX=permissive,保存后重启系统。(SELinux从禁用状态转变为启用时,需要重启系统以重新标记文件的上下文,红帽建议先将SELinux的值设置为permissive,重新标记完成后再设置为enforcing。)

按道理说,重新对整个文件系统进行标记应该是比较费时间的,至少需要几分钟,但在这台机器上敲入reboot命令后,发现它很快就启动起来的。登录后使用命令getenforce,返回permissive,说明SELinux的状态正常,于是把SELinux的状态设置为Enforcing,设置完成后重启了一下vsftpd和httpd服务,这下问题大了,服务无法正常启动,提示“errorwhile loading shared libraries: libssl.so.6: failed to map segment from sharedobject: Permission denied”,直觉告诉我是因为重启时没有对整个文件系统进行正确的relabeling引起的,于是执行命令touch   /.autorelabel   ,在/下创建一个.autorelabel文件,有这个文件存在,系统在重启时就会对整个文件系统进行relabeling,但奇怪的是重启又很快完成,看来还是没有完成relabeling。

***google了一下,发现一个解决方案,执行下面三条命令:

fixfiles    -f   relabel

touch   /.autorelabel

reboot

但在执行***条命令时就报错,提示“/etc/selinux/targeted/contexts/files/file_contexts.homedirs: line 18 hasinvalid context user_u:object_r:user_mozilla_home_t:s0”,报错信息有多条类似的,不止这一条。

再次google,***在红帽的网站上找到了原因,之所以会出现这个问题因为在SELinux是disabled的状态下升级了操作系统,参见https://bugzilla.redhat.com/show_bug.cgi?id=449420

解决方法:

                在启用SELinux并重启后,执行下列命令:

 genhomedircon

 touch /.autorelabel

 reboot

这次在重启的时候就停在relabeling的地方,大概花了5分钟左右,完成后进入系统,将SELinux设置为Enforcing模式,执行命令ps  -eZ  查看进程的SELinux上下文,一切正常。

附:

系统启动时,运行/etc/rc.d/rc.sysinit脚本,在这个脚本中判断了/.autorelabel文件是否存在,如果存在,则会调用fixfiles命令对整个文件系统进行relabeling,相关代码如下:

If   [ -f /.autorelabel ] || strstr"$cmdline" autorelabel ; then

       relabel_selinux

    fi

relabel_selinux() {

    if [ -x/usr/bin/rhgb-client ] && /usr/bin/rhgb-client --ping ; then

        chvt 1

    fi

    # if /sbin/init isnot labeled correctly this process is running in the

    # wrong context,so a reboot will be reuired after relabel

   REBOOTFLAG=`restorecon -v /sbin/init`

    AUTORELABEL=

    ./etc/selinux/config

    if ["$AUTORELABEL" = "0" ]; then

        rm -f  /.autorelabel

 

        echo

        echo$"*** Warning -- SELinux ${SELINUXTYPE} policy relabel is required. "

        echo $"*** /etc/selinux/configindicates you want to manually fix labeling"

        echo$"*** problems. Dropping you to a shell; the system will reboot"

        echo$"*** when you leave the shell."

        echo"0" > $selinuxfs/enforce

        sulogin

 

        echo$"Unmounting file systems"

        umount -a

        mount -n -oremount,ro /

        echo$"Automatic reboot in progress."

        reboot -f

    else

        echo

        echo$"*** Warning -- SELinux ${SELINUXTYPE} policy relabel is required."

        echo$"*** Relabeling could take a very long time, depending on file"

        echo$"*** system size and speed of hard drives."

 

        echo"0" > $selinuxfs/enforce

        /sbin/fixfiles  restore > /dev/null 2>&1

        rm -f  /.autorelabel

if [ ! -z "$REBOOTFLAG" ]; then

            echo$"Automatic reboot in progress."

            reboot -f

        fi

        echo$SELINUX_STATE > $selinuxfs/enforce

        if [ -x/usr/bin/rhgb-client ] && /usr/bin/rhgb-client --ping ; then

            chvt 8

        fi

    fi

}

【责任编辑:IT疯 TEL:(010)68476606】

【编辑推荐】

  1. Chkdsk大跃进:Win8磁盘检测时间大大缩短
  2. Linux下使用mke2fsk格式化分区的方法
  3. Ubuntu 11.10 利用终端环境备份还原
责任编辑:赵宁宁
相关推荐

2009-07-07 13:12:44

Java Servle

2016-12-20 12:42:28

MySQL脚本问题

2010-08-06 08:50:21

ASP.NET

2011-07-18 16:33:20

sqlite

2012-09-05 11:09:15

SELinux操作系统

2024-01-09 15:37:46

2024-04-29 13:07:00

运维保命原则Oracle

2015-07-30 10:31:21

微软Windows 10升级

2023-01-30 08:09:18

权限GreatSQL运行

2021-10-12 00:04:24

脚本备份MariDB

2010-04-29 14:33:01

Unix系统

2011-07-04 11:08:52

数据中心机房建设扩容

2023-11-03 18:09:31

sed文件属性

2021-04-22 07:47:47

面试内存磁盘

2013-05-06 16:36:55

SELinuxSELinux故障

2011-05-31 14:22:23

2016-02-26 15:25:45

程序员Bug反应

2019-01-07 14:36:36

Go系统开源库

2024-04-01 07:53:51

MySQL索引字符

2010-01-05 16:18:17

学习JavaScrip
点赞
收藏

51CTO技术栈公众号