对文件的属主进行检查

PHP的safe_mode选项的目的是为了解决本小节前后所述的某些问题。但是,在PHP层面上去解决这类问题从架构上来看是不正确的,正如PHP手册所述(http://php.net/features.safe-mode)。

安全模式生效时,PHP会对正在执行的脚本所读取(或所操作)文件的属主进行检查,以保证与该脚本的属主是相同的。虽然这样确实可以防范本章中的很多例子,但它不会影响其它语言编写的程序。例如,使用Bash写的CGI脚本:豪享博娱乐城

view source

print?

1 #!/bin/bash
2  
3 echo "Content-Type: text/plain"
4 echo ""
5 cat /home/victim/inc/db.inc

Bash解析器会去关心甚至检查PHP配置文件中的打开安全模式的配置字符串吗?当然不会。同样的,该服务器支持的其它语言,如Perl,Python等都不会去关心这个。本专题中的所有例子可以很简单地被改编成其它编程语言。

另一个典型的问题是安全模式不会拒绝属于WEB服务器文件的访问。这是由于一段脚本可以用于建立另一段脚本,而新脚本是属于WEB服务器的,因此它可以访问所有属于WEB服务器的文件:

view source

print?

01 <?php
02  
03 $filename = ‘file.php‘;
04 $script = ‘<?php
05  
06 header(\‘Content-Type: text/plain\‘);
07 readfile($_GET[\‘file\‘]);
08  
09 ?>‘;
10  
11 file_put_contents($filename, $script);
12  
13 ?>

上面的脚本建立了下面的文件:

view source

print?

1 <?php
2  
3 header(‘Content-Type: text/plain‘);
4 readfile($_GET[‘file‘]);
5  
6 ?>

由于该文件是由Web服务器所建立的,因此它的属主是Web服务器(Apache一般以nobody用户运行):

view source

print?

1 $ ls file.php
2 -rw-r--r--  1 nobody nobody 72 May 21 12:34 file.php

因此,这个脚本可以绕过很多安全模式所提供的安全措施。即使打开了安全模式,攻击者也能显示一些信息如保存在/tmp目录内的会话信息,这是由于这些文件是属于Web服务器的(nobody)。

PHP的安全模式确实起到了一些作用,可以认为它是一种深度防范机制。可是,它只提供了可怜的保护,同时在本专题中也没有其它安全措施来替代它。

时间: 2024-10-13 22:27:30

对文件的属主进行检查的相关文章

Linux基础(7)修改文件的属主,属组,权限

修改Linux下文件的属主,属组以及权限的命令有chown chmod chgrp umask 1.chown 修改文件的属主 chown [options] username file_name... -R 递归修改 如果file是目录的话 使用chown还可以同时修改用户的属主,属组 chown  username.grpname file_name 或者chown username:grpname file_name 2.chmod 修改文件的权限 chomod MODE file...

chown--修改文件or目录的属主,属组

chown options  user:group  file/dir options:-R  dir:recursive 将目录和目录下的子目录以及文件的属主,属组改为指定的属组,属主 注意: USER : GROUP=USER . GROUP 只改属组:   :GROUP  or   .GROUP 或者使用chgrp(change group)  GROUP  file/dir 只改属主:    USER

文件权限与属主属组管理

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 文件及目录基本权限: ● 文件及目录属主属组设置: ● umask含义与设置 本篇涉及命令列表: ⊙ chown ⊙ chgrp ⊙ chmod ⊙ umask 进程安全上下文: 进程通常是由用户发起,运行程序文件产生的,此进程以用户的身份运行,那么运行进程的用户权限就是进程的权限了. 而当进程去访问文件时,系统就可以根据运行进程的用户身份来判断进程拥有那些权限了: 判断进程的发起

Linux编程 17 文件权限(权限设置chmod,改变文件属主属组关系chown,chgrp)

一. 概述 如果创建了一个目录或文件,有时会需要改变它的安全性设置,在linux系统上有一些工具可以完成这任务,包括使用chmod命令改变已有默认权限,分别能对属主,属组,其它用户的权限的控制分别以读取.写入.执行3种权限来区分设置,还有使用chown,chgrp来改变默认属主属组关系. 1 . 改变权限 chmod chmod命令用来改变文件和目录安全性设置,该命令的三种用法格式如下: model模式参数可以使用八进制或符号模式进行安全性设置,八进制模式设置非常直观,直接用期望赋予文件的标准3

Linux文件属性(属主属组权限)

Linux文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组 例如: [[email protected] /]# ls -l 总用量 24 lrwxrwxrwx. 1 root root 7 6月 6 21:30 bin -> usr/bin dr-xr-xr-x.

每个用户创建的文件各个用户之间可以互相修改、查看但只有root及其属主可删除

知识储备: 特殊权限: SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者:(常用于普通用户有管理员权限执行某些命令,非常危险) chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s:否则显示S: SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组: chmod g+s FILE chmod g-s FILE Sticky: 在一个公共目录,每个人都可以创建文件,删除自己的文件

文件属主获取

win/linux中的文件属主获取方法,写了很多遍都记不住 - -, 还是记录一下, i)win中通过api GetNamedSecurityInfo 获取到ower_sid, group_sid, 或者通过 getfilesecurity 获取到文件的file_sid, 通过GetSecurityDescriptorOwner/GetSecurityDescriptorGroup,获取到ower_sid, group_sid, 调用LookupAccountSid,获取ower/group 名

修改 MySQL 数据库文件夹的属主和属组操作

一般情况下,在数据库迁移的时候,我喜欢把数据库文件夹进行压缩,然后再传输,这样比较简单快捷. 但是在把数据库上传到新的数据库服务器的时候,发现数据库文件夹的属主和属组发生变化了,变成了 root,需要修改为 mysql,如何操作呢? 比如修改名称为 hncg 的数据库的属主和属组,通过如下命令即可实现: chown -R mysql:mysql /zls/server/mysql/data/hncg 就这么简单,这样就可以把属主和属组修改为 mysql 了. chown 的使用格式如下: cho

nginx进程属主问题讨论

文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如有不当,欢迎指正. --- 近来由于工作需求,和nginx接触较多,现把关于nginx进程属主的问题总结如下: 规则 nginx启动进程可以在conf里指定user(user  work;)但是这个只有在用root启动的情况有意义, 如果是用其他用户启动的nginx master是没有意义的 nginx会忽略这个配置,如下n