You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
3.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# restorecon
## 说明
**restorecon命令** 用来恢复SELinux文件属性即恢复文件的安全上下文
## 选项
```
restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]
```
```
-i忽略不存在的文件
-finfilename 文件 infilename 中记录要处理的文件
-edirectory 排除目录
-R/-r递归处理目录
-n不改变文件标签
-o/outfilename保存文件列表到 outfilename在文件不正确情况下
-v将过程显示到屏幕上
-F强制恢复文件安全语境
```
## 实例
假设CentOS安装了apache网页默认的主目录是`/var/www/html`我们经常遇到这样的问题在其他目录中创建了一个网页文件然后用mv移动到网页默认目录`/var/www/html`中但是在浏览器中却打不开这个文件这很可能是因为这个文件的SELinux配置信息是继承原来那个目录的与`/var/www/html`目录不同使用mv移动的时候这个SELinux配置信息也一起移动过来了从而导致无法打开页面具体请看下面的实例
<pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">/*使用CentOS举例,如果默认没有安装apache确保网络连接使用下面的命令安装*/
[root@jsdig.com ~]# yum install httpd
/*我们在root的家目录新建一个html文件*/
[root@jsdig.com ~]# pwd
/root
[root@jsdig.com ~]# vi index.html
/*随便输入一段文字,保存退出*/
welcome to www.jsdig.com
/*将这个文件mv到网页默认目录下*/
[root@jsdig.com ~]# mv index.html /var/www/html/
/*
* 这个时候我们使用firefox浏览器输入127.0.0.1/index.html发现打不开
* 查看一下SELinux的日志文件发现了下面这一段报错信息从这个报错信息不难看出
* 进程httpd访问网页主目录中的index.html时被SELinux阻止原因是因为SELinux配置信息不正确,
* 正确的SELinux配置信息应该是scontext=后面的部分
* 而index.html文件的SELinux配置信息却是tcontext=后面的部分
* 从tcontext=的第三段“admin_home_t”不难看出这个文件的SELinux配置信息是root用户家目录的
*/
type=AVC msg=audit(1378974214.610:465): avc: denied { open } for pid=2359 comm="httpd" path="/var/www/html/index.html" dev="sda1" ino=1317685 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file
/*使用ls -Z也可以看出,文件和目录的SELinux信息不匹配*/
[root@jsdig.com html]# ls -Z /var/www/html/
.... unconfined_u:object_r:admin_home_t:s0 index.html
[root@jsdig.com html]# ls -Zd /var/www/html/
.... system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
/*使用restorecon来恢复网页主目录中所有文件的SELinux配置信息(如果目标为一个目录,可以添加-R参数递归)*/
[root@jsdig.com html]# restorecon -R /var/www/html/
# 测试publickeys免密登录权限authorized_keys文件
restorecon -r -vv .ssh/authorized_keys
```