我們都知道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