您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页RHEL5.4管理SELinux

RHEL5.4管理SELinux

来源:华佗健康网
RHEL5.4管理SELinux

关于linux下面 SELinux问题的讨论,

在linux里面,所有的文件和进程都有一个security context的,而SELinux就是通过security context就用来对文件和进程进行控制的。 如何去查看文件的security context值呢, #ls -Z

[root@localhost ~]# [root@localhost ~]# ls -Z

-rw------- root root system_u:object_r:user_home_t anaconda-ks.cfg drwxr-xr-x root root root:object_r:user_home_t Desktop -rw-r--r-- root root root:object_r:user_home_t file

-rw-r--r-- root root root:object_r:user_home_t Finished -rw-r--r-- root root root:object_r:user_home_t install.log

-rw-r--r-- root root root:object_r:user_home_t install.log.syslog -rw-r--r-- root root root:object_r:user_home_t Package -rw-r--r-- root root root:object_r:user_home_t Running [root@localhost ~]#

这个就是我们文件的security context值, root:object_r:user_home_t

root 用户的用户名(一般文件是谁创建的,这个用户名就是谁)

object_r 文件的角色 user_home_t context值的类型

context值的类型会随着文件在不同的位置,会跟着发生变化。 现在通过试验来验证一下 [root@localhost ~]#

[root@localhost ~]# ls -Z | grep file

-rw-r--r-- root root root:object_r:user_home_t file [root@localhost ~]#

[root@localhost ~]# cp file /var/ftp/pub/ cp: overwrite `/var/ftp/pub/file'? y [root@localhost ~]#

[root@localhost ~]# cd /var/ftp/pub/ [root@localhost pub]#

[root@localhost pub]# ls -Z | grep file

-rw-r--r-- root root system_u:object_r:public_content_t file [root@localhost pub]#

可以看到,这个文件的context值就发生变化了。 [root@localhost ~]#

[root@localhost ~]# cd /var/ftp/ [root@localhost ftp]# [root@localhost ftp]# ls -Z

drwxr-xr-x root root system_u:object_r:public_content_t pub [root@localhost ftp]#

这个文件的context值会随着目录的作用和环境的不同而发生改变。 它会继承上一级目录的context值。

如何去查看一个进程的security context值呢, #ps -Z

[root@localhost ~]# [root@localhost ~]# ps -Z

LABEL PID TTY TIME CMD

root:system_r:unconfined_t:SystemLow-SystemHigh 18408 pts/1 00:00:00 bash

root:system_r:unconfined_t:SystemLow-SystemHigh 1927 4 pts/1 00:00:00 tail root:system_r:unconfined_t:SystemLow-SystemHigh 21330 pts/1 00:00:00 ps [root@localhost ~]#

这个就是我们进程的security context值, 如何去修改一个文件的context值呢, 使用chcon命令来修改文件的context值, Chcon=change context

# Chcon -t context值的类型 文件名 [root@localhost ~]#

[root@localhost ~]# ls -Z | grep file

-rw-r--r-- root root root:object_r:user_home_t file [root@localhost ~]#

[root@localhost ~]# chcon -t tmp_t file [root@localhost ~]#

[root@localhost ~]# ls -Z | grep file

-rw-r--r-- root root root:object_r:tmp_t file [root@localhost ~]#

可以看到,file这个文件的context值就改变了。

也可以改变目录的context值,要加上-R参数,表示递归。 如何去恢复一个文件的context值呢, #restorecon -v file -v 是查看改变的过程 [root@localhost ~]#

[root@localhost ~]# restorecon -v file restorecon reset /root/file context

root:object_r:tmp_t:s0->root:object_r:user_home_t:s0 [root@localhost ~]#

[root@localhost ~]# ls -Z | grep file

-rw-r--r-- root root root:object_r:user_home_t file [root@localhost ~]#

OK,file这个文件的context值就改变回来了。

同样的,恢复目录的context值也需要加上-R参数,表示递归。

SELinux的管理

关于SELinux的三种模式 Enforcing 强制模式

Permissive 警告模式(运用排错中) Disabled 禁用模式 从强制模式切换到禁用模式,或者禁用模式切换到强制模式,都必须等到计算机下次启动的时候才会生效的。

但是强制模式和警告模式在切换的时候当前就可以生效。 如何去修改SELinux的模式呢, 可以通过文件来修改

在/etc/sysconfig/selinux这个文件中可以修改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 - SELinux is fully disabled. SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted ~

也可以通过图形界面修改

system-config-securitylevel

那么如何去查看计算机中正在生效的模式呢, 使用getenforce命令 [root@localhost ~]#

[root@localhost ~]# getenforce Enforcing

[root@localhost ~]#

可以看到,系统正在处于SELinux的强制模式,

如何通过命令来实现强制模式和警告模式之间的切换, 使用setenforce命令来切换 #setenforce 0 切换成警告模式 #setenforce 1 切换成强制模式 [root@localhost ~]#

[root@localhost ~]# getenforce Enforcing

[root@localhost ~]#

[root@localhost ~]# setenforce 0 [root@localhost ~]#

[root@localhost ~]# getenforce Permissive

[root@localhost ~]# setenforce 1 [root@localhost ~]#

[root@localhost ~]# getenforce Enforcing

[root@localhost ~]#

这就是强制模式和警告模式之间的切换,这些切换都是立即生效的。

关于selinux的Boolean值 如何去查看Boolean值呢, # getsebool -a

[root@localhost ~]# getsebool -a | grep ftp allow_ftpd_anon_write --> on allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off allow_tftp_anon_write --> off ftp_home_dir --> on ftpd_connect_db --> off ftpd_disable_trans --> off

ftpd_is_daemon --> on

httpd_enable_ftp_server --> off tftpd_disable_trans --> off [root@localhost ~]#

这样可以查看关于服务的Boolean值, 怎么设置服务的Boolean值

# setsebool -P allow_ftpd_anon_write=0 [root@localhost ~]#

[root@localhost ~]# setsebool -P allow_ftpd_anon_write=0 [root@localhost ~]# getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off allow_tftp_anon_write --> off ftp_home_dir --> on ftpd_connect_db --> off ftpd_disable_trans --> off ftpd_is_daemon --> on

httpd_enable_ftp_server --> off tftpd_disable_trans --> off [root@localhost ~]#

0代表关闭,1代表打开。

在linux系统中,如果我们的SELinux是处于强制状态的,一旦用户触犯了selinux的规则,那么SELinux将会阻挡用户的访问。但是linux也提供给用户提供了一个解决方案,当用户触犯了SELinux的规则后,系统会跳出一个黄色五角星,并给出解决的方案。如果这个黄色五角星没有跳出来,可以使用sealert –b这条命令让其强制跳出来。如果这个软件包没有安装,那么就需要安装下, 这个功能是由setroubleshoot这个软件包提供的。 [root@localhost ~]#

[root@localhost ~]# service setroubleshoot restart

Stopping setroubleshootd: [ OK ] Starting setroubleshootd: [ OK ] [root@localhost ~]#

OK,这个服务是可以正常工作的。

关于linux下面SELinux的简单讨论就是这么多了。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务