配置key認證登錄Ubuntu (上)

每個看似輕鬆的結果背後都有鮮爲人知的辛酸。又是一件小事,結果折騰了一天。linux

上接配置好SSH 和Samba後,開始了Python編程實踐。因爲實在不大會用Vim, 因此最後的編程環境實際上在Windows下用Notepad++寫代碼,經過Samba服務器更新直接同步到Ubuntu,當天用的還不錯,把Python文件操做這部分算是小試牛刀了一下。shell

睡一覺起來後,悲劇開始了:SSH開始鏈接不上了!ssh localhost也不行。編程

Error 1 : connection reset by peerubuntu

Error 2: connection refused安全

坦言講,這兩種錯誤之前都碰見過,算是比較常見的錯誤,但google後彷佛沒看到特別好的解決辦法,不過能夠判定的是,sshd_config 配置文件有問題。服務器

使用 grep sshd /var/log/auth.log查看下ssh服務相關的錯誤日誌。網絡

悲劇2: 爲了查看配置文件方便,一條 chmod 777 -R /etc/ 執行了(最開始只在Python的WorkDirectory設置了777)ssh

結果就是sudo命令再也執行不了。ui

Error 3:google

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

/etc/sudoers默認只有root有讀權限(440),

p@VM:~$ ll /etc/sudoers
-r--r----- 1 root root 745  2月 11  2014 /etc/sudoer

看起來是系統檢測到 /etc/sudoers 的讀寫屬性發生了變化,而後給出了提醒。因此如今是sudo的全部命令都執行不了。要說之前在12.04版本的時候貌似也這麼幹過,可是並無出現過這種問題,姑且認爲是到14.04版本安全性又提升了。

關鍵詞丟進google,差點沒吐血。這幾乎是一個致命的錯誤 :要麼重裝系統,要麼用USB portable或者開機切入到recovery/single模式,進入root shell,把 文件權限設置回去。 這兩種方式都很差弄,最後終於找到了一個bypass方法:

http://askubuntu.com/questions/304212/how-to-solve-sudo-etc-sudoers-d-is-world-writable

#pkexec chmod 0440 /etc/sudoers

這條命令是能夠在普通用戶下執行的,執行會彈出一個圖形對話框,要你輸入root密碼,而後切入到root.

算是切回來了,捏了一把汗。固然接下來腦子一熱,沒有搞清楚/etc/sudoer的正確權限,手賤執行了#chmod 600 /etc -R又是另外一個悲劇:

Error 4:

sudo: /etc/sudoers is owned by uid 1000, should be 0

sudo: unable to stat /etc/sudoers.d/README: No such file or directory

這回#pkexec chmod 0440 /etc/sudoers 也執行不了,並且google下來 多數也是指向最開始提到的兩種方法。

(1)USB進入

因爲是Hyper-V虛擬機方式,修改開機啓動順序,從光驅加載ISO啓動,進入後選擇 "Try Ubuntu",使用默認Ubuntu用戶卻是能直接切入root,檢查發現我以前的/home 目錄不存在,預感這種方法不行,直接切換到下一種方法了。

(2-1)Single模式

這個在忘記root密碼時常常會用到這個辦法

a) 在出現grub畫面時,用上下鍵選中你平時啓動linux的那一項,而後按e鍵

b).再次用上下鍵選中你平時啓動linux的那一項(相似於kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),而後按e鍵

c). 修改你如今見到的命令行,加入single,結果以下:

kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

d). 回車返回,而後按b鍵啓動,便可直接進入linux命令行

e). 輸入passwd,再輸入兩次新密碼;

f). #reboot重啓

這是理想狀況,之前在CentOS和 BlackTrack上也實踐過,問題都不大。結果這回在Ubuntu 14.04上,進入編輯模式後,竟然出現了if else模式,敢情grub也跟着變複雜了。不知道single 該加在哪裏了, 想一想真是巴不得立刻回到12.04版本仍是本身熟悉的系統好, 放棄。

(2-2)Recovery模式

這個實在是個槽點,開機啓動後 一直卡在 "Booting system without full network configuration" 過不去。

之前不記得Linux系統還必須檢查網絡的狀況(Not a Must),這回竟然栽在這上面,並且Ctrl+Alt+F1 ,進入了字符界面,卻一直沒有出現root shell. 亦放棄。

因此最後,通過一上午的折騰,結果是:重裝系統。

到這爲止,又印證了上一篇文章提到的:花N多時間解決一個問題,不如直接重裝系統來的快。這彷佛跟開發人員所說的看懂別人的代碼的過程還不如本身從新寫代碼。

掛機重裝完系統,下午繼續。

相關文章
相關標籤/搜索