本文谈两个很等闲被忽视,又偶尔会突然蹦出来,给我们建设办事器造成困扰的权限治理标题问题。
1、太宽的权限
有些办事对权限的要求会是一个区间,小了不可,大年夜了也不可。假定这个文件被付与的权限不敷,那么必定不克不及利用;可是,假定这个文件被付与的权限太多了,一样不克不及正常利用。
举例:
标题问题现象:test帐号利用key没法登录某ssh办事器,而同机械下的test2帐号却可以登录。
查看文件权限:
test@client:~$ls-l~/.ssh/
-rw-------1testtest 16752010-03-2515:15id_rsa
查看了客户端及办事器端的.ssh目次下的公钥与私钥权限,可以看出,并没有标题问题。
私钥必需是600权限,而公钥起码是644或更严格的权限,这都合适,但仍然没法登录。
test@server:~$ls-la~|grep-w.ssh
drwxr-xr-x2testtest4.0K12-2316:59.ssh
查看了办事器端的.ssh目次权限,是755,也是没标题问题标,ssh办事器要求在利用key登录时.ssh目次的权限必需是其他用户不成写。
一开端其实想不明为啥test2帐号利用key可以登录,test帐号利用key没法登录,ssh_config和sshd_config。
在查抄了多遍后确切没有标题问题,最后在办事器端对比两个帐号的不应时,发现了可疑的处所。
$ls-l/home/
drwxrwxrwx 3testtest4096 2009-12-31 17:31test
drwxr-xr-x 6 test2 test2 4096 2010-03-23 15:59test2
两个帐号的home目次权限不合,test帐号是777,test2帐号是755,会不会是这里不合导致的?在办事器端把test目次点窜成755后,解决标题问题。
启事诠释:
ssh办事器的key编制登录对权限要求严格。对客户端:私钥必需为600权限或更严格权限(400),一旦其他用户可读,私钥就不起感化(如640),表示为系统觉得不存在私钥。
对办事器端:要求必需公钥其他用户不成写,一旦其他用户可写(如660),就没法用key登录,表示为:Permission denied(publickey)。
同时要求.ssh目次其他用户不成写,一旦其他用户可写(如770),就没法利用key登录,表示为:Permission denied(publickey)。
不但.ssh目次,更上层的目次的权限一样会有影响。
home顶用户目次的可写,暗示其他用户对.ssh子目次也有改写的权限(删除或重号令),也就导致ssh鉴定.ssh为其他用户可写,拒尽利用key登录。
2、静静启动的selinux
假定你建设某项办事,可长短论如何定义建设文件,有些端口始终不克不及打开,或文件没法拜候到,那么这时候你要谨慎是selinux在拆台。
举例:
标题问题现象:建设apache上的目次可以拜候,却始终提示你没有权限。
apache上的建设:
Alias/hello.html/web/hello.html
Order deny,allow
Allow from all
如何查都没有标题问题,文件权限也对,这时候可以考虑查一下selinux的权限。
#ls-Z/web/
-rw-r--r--.root root unconfined_u:object_r:admin_home_t:s0hello.html
本来/web目次不克不及被apache内建的用户拜候。
启事诠释:
默许环境下,selinux限制了apache可以拜候的目次,默许仅能在/var/www/下面读写文件。这也难怪,我们只建设apache和文件权限没有任何感化了。
要想实现对/web/目次下的文件读取,必需点窜selinux的建设。
其实不止是文件权限,包含办事可利用的端口、动静接口等,selinux都有默许限制。假定你建设办事碰着莫名其妙的标题问题,看一下selinux吧