我的一个朋友托pipe了他为他的客户build立的一些网站。 不知怎的,他搞砸了加载时给所有客户的网站一个403错误的权限。
当我ssh到他的服务器,并login我的帐户(我也有2个网站上运行的服务器),我得到的第一条消息是:
上次login:1月24日星期二11:54:37 2012从82.168.36.207不能chdir到主目录/ home / michiel:权限被拒绝-bash:/home/michiel/.bash_profile:权限被拒绝
然后我sudo和chdir到/ home /。 我(recursion地)把文件夹变成michiel:michiel,并把它(recursion地)改为755。
我仍然得到同样的错误login和网站仍然给我一个403错误。
我试图找出是否SELinux导致问题,但“findselinux”输出,没有这样的文件或文件夹。
任何想法如何解决这个问题?
从注释,它看起来像/ home上的权限没有设置执行位:
drw-r--r-- 26 root root 4.0K Jan 24 03:17 home
您需要设置执行位才能进入目录。 所以,“chmod a + x / home”。
诀窍是你的朋友可能已经在所有子目录上recursion地执行了位。 如果没有那么多的用户,我可以去每个家庭目录,并通过视线validation权限。 如果有很多用户,有办法更有效地运行chmod,可能是这样的:
chmod -R a+x /home/*/public_html
谨慎使用(不像你的朋友!)
第一个命令给予除了所有者或她的组以外的其他用户进入目录的权限(hattip @cjc)。 第二个给文件的读取权限:
find "/path" -type d | xargs chmod o+x find "/path" -type f | xargs chmod o+r
这是要发布的文件的最小权限集。 如果有人依靠DirectoryIndex,目录需要o+rx而不是o+x 。
我通常的权限是:
$ ls -ld /var/www/me.example.com drwx-----x 12 me-example-com users 4096 Oct 4 16:44 /var/www/me.example.com $ id me-example-com uid=1000(me-example-com) gid=100(users)
我在网上学到的这个技巧意味着其他组users将无法查看对方的文件,但是默认情况下,系统的其余部分会让www-data (用户在Debian上运行的Apache)进入该目录。