配置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多时间解决一个问题,不如直接重装系统来的快。这彷佛跟开发人员所说的看懂别人的代码的过程还不如本身从新写代码。

挂机重装完系统,下午继续。

相关文章
相关标签/搜索