LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 909|回复: 11

看来麻烦很大,虚拟主机的安全问题!

[复制链接]
发表于 2006-2-2 09:04:52 | 显示全部楼层 |阅读模式
小弟用一台机器提供WEB服务

/home/coco
/home/emacs

一共这两个用户,权限设置如下
chmod 711 /home/coco
chmod 755 /home/coco/public_html
chmod 711 /home/emacs
chmod 755 /home/emacs/public_html
然后进行如下测试:
[coco@localhost ~]$ cd /home/emacs
[coco@localhost emacs]$ ls -l
ls: .: 权限不够
[coco@localhost emacs]$ cd public_html
[coco@localhost public_html]$ ls -l
总用量 5696
drwxrwxrwx   2 emacs coco    4096 11月 25 15:26 book
drwxrwxrwx  10 emacs coco    4096 2005-05-07  efan
-rwxrwxrwx   1 emacs coco     460 11月 25 23:39 index.html
-rwxrwxrwx   1 emacs coco  384723 11月 10 17:39 leapftp.rar
drwxrwxrwx   2 emacs coco    4096 12月  4 17:41 logo
drwxrwxrwx   7 emacs coco    4096 2005-06-03  phpmyadmin
drwxrwxrwx  16 emacs coco    4096 12月 26 01:30 pic
-rwxrwxrwx   1 emacs coco 5402951 11月 18 23:28 pic.rar
[coco@localhost public_html]$

也就是说用coco登录,却可以显示emacs用户下public_html文件的内容,因为要运行一些PHP程序,所以得将它设置可执行权限,这样就造成了一些安全隐患
不知道有没有什么方法让TELNET后的用户也可以像VSFTP那个限制在自己的目录下?
看来麻烦很大,
<?php
$dir = "/home/emacs/public_html";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            print "filename: $file : filetype: " . filetype($dir . $file) . "<br>\n";
        }
        closedir($dh);
    }
}
?>
上面的PHP代码也可以读取emacs用户public_html目录下的内容,如果该用户使用一套成型的程序,很容易让别人知道一些重要数据的位置,那么,会不会泄漏洞一些秘密??
设置成733也不好使,一些文本程序如CTB就运行不了
发表于 2006-2-2 11:43:17 | 显示全部楼层
用700或者750 试试。组不同的话,用后者,不然用前者。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-2 15:24:31 | 显示全部楼层
首先感谢版主的回贴

用700或者750的话,被改成700或者750 那个用户就没有PHP权限了,PHP程序运行不了
回复 支持 反对

使用道具 举报

发表于 2006-2-2 15:43:18 | 显示全部楼层
没明白你什么意思。。。
什么叫没PHP权限了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-2 15:49:00 | 显示全部楼层
比如说改成750以后
http://lybase.net/~coco/php.php
这个页面就提示403 Forbidden
也就是脚本没有权限执行了
http://lybase.net/~coco/index.html
index.html属性是777
也无法游览,提示
403 Forbidden
回复 支持 反对

使用道具 举报

发表于 2006-2-2 18:04:40 | 显示全部楼层
755 =
rwxr-xr-x
不是你自己设置了读的许可么。你让人读还要否定人读?????矛盾么?
哪里有尼这样方WEB目录的,开个目录只能让APACHE用户访问,哪里有尼这样方再用户主目录里做的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-2 21:06:10 | 显示全部楼层
开放755是为了让PHP程序在那个目录里可执行。

按网上的教程我给主机用户开通主页
需要在httpd.conf里设置
userdir public_html

然后主目录属性设置为711 public_html目录设置为755
这个是按书上做的
不知道大家是如何给主机上的用户提供网页空间的?
回复 支持 反对

使用道具 举报

发表于 2006-2-2 21:57:11 | 显示全部楼层
如果你一定要用的话,
把相应的public_html目录的拥有者设置为 XXX(username):apache,然后chmod 2750 该目录。
这样的话,别人访问不到;apache可以访问到,但是不能修改;用户本身可以修改该目录的内容。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-3 08:59:14 | 显示全部楼层
[root@localhost ~]# cd /home/emacs
[root@localhost emacs]# ls -l
总用量 4
drwxr-xr-x  7 emacs coco 4096 12月 17 18:33 public_html
[root@localhost emacs]# chown emacs:apache public_html
[root@localhost emacs]# chmod 2750 public_html
[root@localhost emacs]# ls -l
总用量 4
drwxr-s---  7 emacs apache 4096 12月 17 18:33 public_html
[root@localhost emacs]#
经过设置后,TELNET的问题解决了,但PHP程序还是要以读取,因为APACHE是以APACHE用户和组的身份来执行的,看来这个不好解决了
回复 支持 反对

使用道具 举报

发表于 2006-2-3 09:55:14 | 显示全部楼层
你的public_html目录里边是什么啊。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表