您的位置:首页 > 运维架构 > Linux

SELinux相关操作

2013-06-09 11:13 429 查看
SELinux是个经过安全强化的Linux操作系统,实际上,基本上原来的运用软件没有必要修改就能在它上面运行。真正做了特别修改的RPM包只要50 多个。像文件系统EXT3都是经过了扩展。对于一些原有的命令也进行了扩展,另外还增加了一些新的命令,接下来我们就来看看这些命令。

文件操作

1)ls命令
在命令后加个 -Z 或者加 –context
[root@python azureus]# ls -Z
-rwxr-xr-x fu fu user_u:object_r:user_home_t azureus
-rw-r--r-- fu fu user_u:object_r:user_home_t Azureus2.jar
-rw-r--r-- fu fu user_u:object_r:user_home_t Azureus.png
2)chcon
更改文件的标签
[root@python tmp]# ls --context test.txt
-rw-r--r--
root root root:object_r:staff_tmp_t test.txt
[root@python tmp]# chcon -t etc_t test.txt
[root@python tmp]# ls -lZ test.txt
-rw-r--r--
root root root:object_r:etc_t test.txt
3)restorecon
当这个文件在策略里有定义是,可以恢复原来的
文件标签。
4)setfiles
跟chcon一样可以更改一部分文件的标签,不需要对整个文件系统重新设定标签。
5)fixfiles
一般是对整个文件系统的, 后面一般跟 relabel,对整个系统 relabel后,一般我们都重新启动。如果,在根目录下有.autorelabel空文件的话,每次重新启动时都调用 fixfiles relabel
6)star
就是tar在SELinux下的互换命令,能把文件的标签也一起备份起来。
7)cp
可以跟 -Z,--context=CONTEXT 在拷贝的时候指定目的地文件的security context
8)find
可以跟 –context 查特定的type的文件。
例子:
find /home/fu/ --context fu:fu_r:amule_t -exec ls -Z {} \:
9)run_init
在sysadm_t里手动启动一些如Apache之类的程序,也可以让它正常进行,domain迁移。

进程domain的确认

程序现在在那个domain里运行,我们可以在ps 命令后加 -Z
[root@python /]# ps -eZ
LABEL PID TTY TIME CMD
system_u:system_r:init_t 1 00:00:00 init
system_u:system_r:kernel_t 2 00:00:00 ksoftirqd/0
system_u:system_r:kernel_t 3 00:00:00 watchdog/0

ROLE的确认和变更

命令id能用来确认自己的 security context
[root@python ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:staff_r:staff_t
这里,虽然是ROOT用户,但也只是在一般的ROLE和staff_t里运行,如果在enforcing模式下,这时的ROOT对于系统管理工作来说,是什么也干不了。
[root@python ~]# newrole -r sysadm_r
Authenticating root.
口令:
[root@python ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:sysadm_r:sysadm_t

模式切换

1)getenforce
得到当前的SELINUX值
[root@python bin]# getenforce
Permissive
2)setenforce
更改当前的SELINUX值 ,后面可以跟 enforcing,permissive 或者 1,0。
[root@python bin]# setenforce permissive
3)sestatus
显示当前的 SELinux的信息
[root@python bin]# sestatus -v
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 20
Policy from config file: refpolicy
Process contexts:
Current context: user_u:user_r:user_t
Init context: system_u:system_r:init_t
/sbin/mingetty system_u:system_r:getty_t
/usr/sbin/sshd system_u:system_r:sshd_t
File contexts:
Controlling term: user_u:object_r:user_devpts_t
/etc/passwd system_u:object_r:etc_t
/etc/shadow system_u:object_r:shadow_t
/bin/bash system_u:object_r:shell_exec_t
/bin/login system_u:object_r:login_exec_t
/bin/sh system_u:object_r:bin_t -> system_u:object_r:shell_exec_t
/sbin/agetty system_u:object_r:getty_exec_t
/sbin/init system_u:object_r:init_exec_t
/sbin/mingetty system_u:object_r:getty_exec_t

其他重要命令

1)Audit2allow
很重要的一个以python写的命令,主要用来处理日志,把日志中的违反策略的动作的记录,转换成 access vector,对开发安全策略非常有用。在refpolicy里,它的功能比以前有了很大的扩展。
[root@python log]# cat dmesg | audit2allow -m local > local.te
2)checkmodule -m -o local.mod local.te
编译模块
[root@python log]# checkmodule -m -o local.mod local.te
checkmodule: loading policy configuration from local.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 5) to local.mod
3)semodule_package
创建新的模块
[root@python log]# semodule_package -o local.pp -m local.mod
4)semodule
可以显示,加载,删除 模块
加载的例子:
[root@python log]# semodule -i local.pp
5)semanage
这是一个功能强大的策略管理工具,有了它即使没有策略的源代码,也是可以管理安全策略的。因为我主要是介绍用源代码来修改策略的,详细用法大家可以参考它的man页。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SELinux linux