原文出自:http://os.51cto.com/art/201101/241510.htm
本文分享的都是系统管理员在工作的时候容易犯的错误,经抚琴煮酒整理并提供解决方法,希望可以给大家一些指导,避免在工作中出现此类问题。
作者简介:余洪春(博客),网名抚琴煮酒,英文名Andrew.Yu,武汉某外企高级Linux/Unix系统管理员、项目实施工程师,红帽RHCE讲师,擅长负载均衡高可用和中小型证券类和商务网站架构,目前关注网站架构研究及网络安全。
51CTO推荐专题:系统运维秘诀
一、安装FreeBSD后无法重启
问题描述:
装惯了Linux的人肯定知道一般会有个boot分区,可是在bsd就不那么容易了。在安装FreeBSD 8.1的时候遇到了问题,查阅了chinaunix上面,正好也有相关问题整理,特摘录如下:
我要求FreeBSD分区:
2G For / 4G For swap 10G For /root 256M For /boot 其余 for /usr
安装正常,结果安装重启后便出现杯具了:
>> FreeBSD/i386 BOOT Default: 0:da(0,a)/boot/kernel/kernel boot:
原因:
通过网上查资料,了解到手动引导的全过程,发现了问题所在:
由于独立分区/boot造成了FreeBSD引导过程中无法正确找到内核引导的位置。
解决方法:
通过
boot: 0:da(0,e)/loader
可以解决引导问题,然后进入loader界面
*这个引导盘符根据da0s1x 的 x 得来,因此你安装系统的时候/boot所在分区区号,才是真正的x字母,如果不知道就从往后试试
同样由于默认kernel位置是/boot/kernel所以依然需要手动加载
ok load kernel/kernel
获得kernel信息后
ok boot
这样就可以正常引导了。
但是这样还没有彻底解决问题,随后还需要在磁盘挂载的时候输入
mount root>ufs:/dev/da0s1a
才能进入系统,而且每次重启都手动一次。所以其实问题没有彻底解决。
所以,为了避免以上的/boot问题,目前我装机一般规范化操作,一般只分三个区,避免独立分区/boot,也希望玩Linux的朋友们重视下这个问题。
2048M For / 4096M For swap 其余的均For /usr
二、更改Admin密码导致计划任务无法执行
问题描述:
公司有系统管理员离职了,有不少Windows 2003服务器,此时负责安全的部门要求接手的系统管理员更改Administrator密码,粗心的系统管理员急急忙忙更改windows密码后,却发现windows的计划任务全都执行不了,因为windows的计划任务都要求输入正确的Administrator密码。
解决办法:
大家养成好习惯,每次更改完windows密码一定要检查一下计划任务,否则很容易导致公司的重要业务执行不了进而影响中整个网站的运维及业务,希望此问题能引起大家的注意。
三、root密码更改后无法远程登录
问题描述:
系统总监嫌托管的新Linux服务器root密码过于简单,吩咐公司的系统管理员将密码改复杂些,急躁的系统管理员用passwd root密码改掉后赶车回公司,杯具的发现密码设置得过于复杂,密码给忘了。由于机器是新装,没有配置具有sudo权限的用户,自己远程都进不了root了。这种问题就只有百分百靠系统管理员负责了。
解决方法:
这个问题只要养成良好的习惯就可以预防,就是大家更改完root密码后,别急着退出,可以用ctrl+shift+F2或F3-F8尝试用另一个终端进去下,如果当时就忘了,马上切换到F1更换。抚琴煮酒经常犯这种错误,呵呵,希望此法对大家有效。
四、锁定了SSH会话
问题描述:
我在配置某机房Linux服务器的iptables时,不小心设置了某一项错误参数,结果锁定了SSH会话,导致我们经理及另一技术员连不上服务器。
解决方法:
下面介绍的这个方法及其有用,强烈推荐给大家:为了预防此类问题出现,可以配置一计划任务crontab,每5分钟运行一次,即
*/5 * * * * root /bin/sh /root/firestop.sh
firestop.sh内容为:
service iptables stop
这样即使你的脚本存在错误设置(或丢失的)规则时,也不至于将你锁在计算机外而无法返回与计算机的连接。这样你就可以放心大胆的调试你的脚本啦。这都是生产环境下逼出来的,呵呵。
五、移走硬盘造成Emergency模式
问题描述:
同事在处理Linux服务器时,移走了一块硬盘,然后就直接启动红帽RHEL5,发现进了Emergency模式,焦急中他连忙跑过来找我;我第一句就是问他:你改动了硬件没,他说他移走了硬盘后就直接启动了,不是跟windows 2003一样嘛,有什么问题?我都无语了……
解决办法:
耐心跟他讲解了 Linux下/etc/fatab的作用及语法,告诉他可以在Emergency模式下输入root密码进入此模式,然后用
mount –o remount,rw /
将/分区设置成可读写,编辑/etc/fatab,将移除的硬盘用#号屏蔽掉后重启服务器,故障解除。
六、sudoer文件损坏造成无法进入root模式
问题描述:
同事远程处理一台机房的FreeBSD 8.1机器,想加一个具有sudo用户的特殊用户,所以编辑了/etc/sudoer文件,却不小心多加了一个.,然后直接保存退出了。结果杯具发生了:由于sudoer文件损坏,所有具有sudo权限的用户均不能切换到root模式下工作,而FreeBSD8.1与Linux不同,它默认是不允许root远程连接的。
解决方法:
这时只有请专人到机房去处理问题了……
七、root密码被更改
问题描述:
一个开发小组都是用内部机房的Linux/FreeBSD机器,大家都知道root的密码;不知哪个兄弟是搞着好玩还是怎么的,偷偷的改了root密码却不通知大家,结果大家都用不了root密码,杯具了。
解决办法:
此时处理办法有2种,一种就是大家都知道的单用户模式修改root,其实另一个办法也蛮简单的,系统管理员应该多配置一个具有sudo权限的用户,遇到此种情况时可以用sudo权限来修改root的密码,至少免得跑到机房去。毕竟有时候,机房未必在市内或在国内的。
八、依赖的库文件丢失导致root无法登陆
问题描述:
我们的jail母机192.168.21.36,因为root的shell设置成的bash,而其依赖的库文件libintl.so.8发生丢失,导致了root不能登陆。具体报障如下:
/libexec/ld-elf.so.1: Shared object "libintl.so.8" not found, required by "bash" Connection to 192.168.21.36 closed.
解决方法:
①用单用户模式进入系统;
②扫描磁盘(此步非做不可,而且是安全的)
fsck -y
③将文件系统重新挂载
mount -a
④将root的默认shell切换到sh
chsh -s sh
重启后一切正常。
九、忘记以su模式进入编辑器
问题描述:
普通用户用vi编辑nginx.conf 等配置文件,保存的时候会提示:没有Root Permission
解决办法:
其实只要保存时加上:
:w !sudo tee %
就可以了。
“:w !sudo tee %”这条命令的含义是把当前编辑的文件的内容当做标准输入输入到命令sudo tee 文件名里去。也就是sudo保存为当前文件名,相当管用的命令,尤其适用于FreeBSD和Debian系统(我经常忘了自己原来不是root了),相当very nice.
系统管理员容易犯的错误和解决方法暂时就总结到这里,希望对大家有帮助!如果大家有什么问题,也欢迎在评论中沟通。