每一个看似轻松的结果背后都有不为人知的辛酸。又是一件小事,结果折腾了一天。

上接配置好SSH 和Samba后,开始了Python编程实践。由于实在不大会用Vim, 所以最后的编程环境实际上在Windows下用Notepad++写代码,通过Samba服务器更新直接同步到Ubuntu,当天用的还不错,把Python文件操作这部分算是小试牛刀了一下。

睡一觉起来后,悲剧开始了:SSH开始连接不上了!ssh localhost也不行。

Error 1 : connection reset by peer

Error 2: connection refused

坦言讲,这两种错误以前都遇见过,算是比较常见的错误,但google后似乎没看到特别好的解决办法,不过可以断定的是,sshd_config 配置文件有问题。

使用 grep sshd /var/log/auth.log查看下ssh服务相关的错误日志。

悲剧2: 为了查看配置文件方便,一条 chmod 777 -R /etc/ 执行了(最开始只在Python的WorkDirectory设置了777)

结果就是sudo命令再也执行不了。

Error 3:

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

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

配置key认证登陆Ubuntu (上)的更多相关文章

  1. 配置key认证登陆Ubuntu (下)

    梗概: 使用证书登陆,可以减少密码的使用,避免密码泄露,证书登陆更加方便.安全. Secure CRT 和Putty 原理相同,生成 密钥对(Key pair)操作有所不同. 1.生成key pair ...

  2. linux SecureCRT ssh key认证登陆

    转自:http://blog.chinaunix.net/uid-20639775-id-3207171.html 通过SecureCRT创建key登录认证 一.生成公钥/密钥对 使用SecureCR ...

  3. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)

    Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...

  4. Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  5. Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  6. ubuntu上vsftpd服务配置

    Ubuntu上提供两种常用的ftp服务应用:vsftpd 和 tftpd,区别如下: 1)vsftpd 支持客户端上下传文件,支持浏览器显示及下载,支持用户名密码认证,支持匿名访问,默认端口TCP:2 ...

  7. 微软KinectV2深度传感器在Ubuntu上的配置和使用

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  8. ubuntu上配置nginx实现反向代理

    反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

  9. Ubuntu上latex+atom配置

    网上流传的latex+atom大都是windows上的,Ubuntu与windows上的配置方式大同小异,这里写下自己的经验: 分为三个步骤,首先安装texlive,texlive是latex的依赖库 ...

随机推荐

  1. nmap基本使用方法

    nmap基本使用方法 我自己的使用: nmap 149.28.72.184 Starting Nmap 7.70 ( https://nmap.org ) at 2018-06-15 16:53 CS ...

  2. Hadoop WordCount程序

    一.把所有Hadoop的依赖jar包导入buildpath,不用一个一个调,都导一遍就可以,因为是一个工程,所以覆盖是没有问题的 二.写wordcount程序 1.工程目录结构如下: 2.写mappe ...

  3. Zip 压缩

    ICSharpCode.SharpZipLib.dll using ICSharpCode.SharpZipLib.Zip; string[] filenames = Directory.GetFil ...

  4. LeetCode OJ:Permutations(排列)

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

  5. OC-协议与代理

    [协议]================================================================ @protocol [协议的作用]:规定了需要实现的接口方法, ...

  6. 关于iframe和div窗口中ajax请求200状态时执行的回调问题

    上一篇说了在ajax回调里面处理iframe窗口的刷新问题,这一篇记录一下遇到的一个分别在iframe和div窗口中ajax请求200状态时执行的回调问题. 我们先来看一下ajax请求的写法(这里使用 ...

  7. Windows手动安装Apache,MySql服务

    绿色版的Apache,Mysql需要以服务方式运行.或者由于某种原因服务管理器里面没有服务项了,可以进行手工注册服务和启并服务. # Apache Apache进到安装目录的bin目录下,运行dos命 ...

  8. 图解Fiddler如何抓手机APP数据包过滤抓取

    使用fidder抓取浏览器的包相信不是问题,那么使用fidder 抓取app的数据包呢??? 于是,找了一篇博客来学习一下,可以参考一下,根据自己的需求来实现. 在网上自己学习,然后整理了我所用到的, ...

  9. 剑指offer-第五章优化时间和空间效率(两个链表的第一个公共节点)

    思路1:要求的是两个链表的第一个公共节点,首先想到的是用栈来存放两个链表,然后依次从栈中抛出,直到最后一个相同的节点为止.但是要用到两个栈,空间复杂度为O(n): 思路2:从头到尾分别遍历两个链表得到 ...

  10. SqlServer 数据库/数据表 拆分(分布式)【转】

    通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器 ...