咱們都知道linux是一個多任務多用戶的操做系統,linux對各類權限有着很細緻的管理。若是對linux權限管理不瞭解,建議移步《鳥哥的linux私房菜》 瞭解。html
本文談兩個很容易被忽視,又偶爾會忽然蹦出來,給咱們配置服務器形成困擾的權限管理問題。linux
test@client:~$ls-l ~/.ssh/-rw-------1testtest16752010-03-2515:15 id_rsa
查看了客戶端及服務器端的.ssh目錄下的公鑰與私鑰權限, 能夠看出, 並無問題。
私鑰必須是600權限, 而公鑰至少是644或者更嚴格的權限, 這都符合, 但依然沒法登陸。web
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。apache
在檢查了多遍後確實沒有問題, 最後在服務器端對比兩個賬號的不一樣時, 發現了可疑的地方。服務器
$ls-l/home/drwxrwxrwx 3testtest40962009-12-3117:31testdrwxr-xr-x 6 test2 test2 40962010-03-2315:59 test2
ssh服務器的key方式登陸對權限要求嚴格。對於客戶端: 私鑰必須爲600權限或者更嚴格權限(400), 一旦其餘用戶可讀, 私鑰就不起做用(如640), 表現爲系統認爲不存在私鑰。ssh
對於服務器端: 要求必須公鑰其餘用戶不可寫, 一旦其餘用戶可寫(如660), 就沒法用key登陸, 表現爲:Permission denied (publickey)。
同時要求.ssh目錄其餘用戶不可寫,一旦其餘用戶可寫(如770), 就沒法使用key登陸, 表現爲:Permission denied (publickey)。ide
home中用戶目錄的可寫,表示其餘用戶對.ssh子目錄也有改寫的權限(刪除或重命令),也就致使ssh判斷.ssh爲其餘用戶可寫, 拒絕使用key登陸。spa
apache上的配置:操作系統
Alias/hello.html /web/hello.html<Directory/web>Order deny,allowAllow from all</Directory>
怎麼查都沒有問題,文件權限也對,這時能夠考慮查一下selinux的權限。server
# 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