我们都知道linux是一个多任务多用户的操作系统,linux对各种权限有着很细致的管理。如果对linux权限管理不了解,建议移步《鸟哥的linux私房菜》 了解。
本文谈两个很容易被忽视,又偶尔会突然蹦出来,给我们配置服务器造成困扰的权限管理问题。
test@client:~$ls-l ~/.ssh/-rw-------1testtest16752010-03-2515:15 id_rsa
查看了客户端及服务器端的.ssh目录下的公钥与私钥权限, 可以看出, 并没有问题。
私钥必须是600权限, 而公钥至少是644或者更严格的权限, 这都符合, 但依然无法登录。
test@server:~$ls-la ~|grep-w .sshdrwxr-xr-x 2test test 4.0K12-2316:59.ssh
查看了服务器端的.ssh目录权限, 是755, 也是没问题的, ssh服务器要求在使用key登录时.ssh目录的权限必须是其他用户不可写。
一开始实在想不明为啥test2帐号使用key可以登录,test帐号使用key无法登录, ssh_config和sshd_config。
在检查了多遍后确实没有问题, 最后在服务器端对比两个帐号的不同时, 发现了可疑的地方。
$ls-l/home/drwxrwxrwx 3testtest40962009-12-3117:31testdrwxr-xr-x 6 test2 test2 40962010-03-2315:59 test2
ssh服务器的key方式登录对权限要求严格。对于客户端: 私钥必须为600权限或者更严格权限(400), 一旦其他用户可读, 私钥就不起作用(如640), 表现为系统认为不存在私钥。
对于服务器端: 要求必须公钥其他用户不可写, 一旦其他用户可写(如660), 就无法用key登录, 表现为:Permission denied (publickey)。
同时要求.ssh目录其他用户不可写,一旦其他用户可写(如770), 就无法使用key登录, 表现为:Permission denied (publickey)。
home中用户目录的可写,表示其他用户对.ssh子目录也有改写的权限(删除或重命令),也就导致ssh判断.ssh为其他用户可写, 拒绝使用key登录。
apache上的配置:
Alias/hello.html /web/hello.html<Directory/web>Order deny,allowAllow from all</Directory>
怎么查都没有问题,文件权限也对,这时可以考虑查一下selinux的权限。
# ls -Z /web/-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 hello.html
原来/web目录不能被apache内建的用户访问。
原因解释:
如何修改selinux配置也可以参考《鸟哥的linux私房菜》 ,这里不再赘述。
本文转自:
http://www.freebuf.com/articles/system/13366.html