Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1842091
  • 博文数量: 334
  • 博客积分: 11301
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 10:19
个人简介

路虽弥,不行不至;事虽少,不做不成。

文章分类

全部博文(334)

文章存档

2013年(4)

2012年(19)

2011年(27)

2010年(71)

2009年(45)

2008年(15)

2007年(84)

2006年(69)

分类: LINUX

2006-12-14 13:01:42

Troubleshooting的小总结

转载:
   
Troubleshooting:
一、启动
(一)、mbr损坏或丢失. 进入RESCUE模式,grub-install
(二)、启动时所需的配置文件不正确
(要对文件的内容与格式熟悉)
/boot/grub/grub.conf
/etc/inittab
/etc/fstab
(三)、启动系统时,所用的文件或目录丢失
如:mount ,bash,inittab,init ,/initrd ,/proc
1.mount,bash被替换或删除。 进入RESCUE模式,网络重新安装mount,bash包
2./sbin/init 丢失或替换。此文件在SysVinit*包内,此包还包括如下文件:/sbin
halt,poweroff,init,runlevel,reboot,shutdown等
init丢失时,(a)、直接启动时会进入bash2.05#只读shell
(b)、用单用户进入如下提示:
s :s no such file or directory
kernel panic : Attempted to kill init
修复如mount的修复
3.initscripts*包
启动的相关文件:/etc/inittab,/etc/rc.d,/etc/rc.d/rc,rc.sysinit,
/etc/sysconfig/* ,/etc/sysclt.conf, /sbin/ifup,/sbin/ifdown
/sbin/service
# inittab丢失: INIT:no inittab file found.
Enter runlevel:
#/etc/rc.d ,/etc/rc.d/rc 丢失:
用reboot,shutdown,init 6 命令重启时有如下明显提示:
INIT : can not execute "/etc/rc.d/rc"
INIT: no more processes left in this runlevel
按电源重启系统,可以到达login界面:
Kernel 2.4.21-15.EL on an i686
( none ) login :
可以登录,但会提示:
modprobe : modprobe : Can't locate module Char-major-10-224
login(PAM-unix)[22] Session ipened for user root by (uid=0)
-bash: Command not found
此时没有网络,不能修复,主要提示在重启的时候,进入rescue模式,
修复后可正常使用,/etc/rc.d丢失,重新安装initscripts*包,登录时
仍会有提示,但常使用。
#/etc/rc/rc.sysinit 为系统启动时所用的第一个脚本,若丢失
系统启动时:
INIT : can't execute /etc/rc.d/tc.sysinit not found
及其它提示
#/sbin/ifup,/sbin/ifdown 如果丢失,网络将无法启动。
#/sbin/service 若丢失或被替换,任何服务无法启动。
4. /initrd 目录丢失,启动时有如下提示:
pivotroot: pivotroot (/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc failed : 2
Freeing unused kernel memory : 164k freed
Kernel panic : no init found,Try passing init = option to kernel
进入rescue模式,建立/initrd 目录即可

二、本地系统
(一)、用户登录问题
1、root用户不可登录:
a.密码失效 b.是否过期 c. 被锁 d./etc/securitty 定义了
root可安全登录的终端 e.没用root用户,uid=0 用户不存在
2、user不可登录
同上a. b . c.
d .存在/etc/nologin空文件
e.passwd文件中没有shell或被替换
f. /etc/bash_profile
g. .bash_profile 中有exit,logout
3、root user都不可登录, /bin/bash被替换或删除
4、检查pam, /etc/security/access.conf , /etc/pam.d/system-auth,
用authconfig清除设置
(二)、X问题
1、首先redhat-config-xfree86
2、X-configure
3、查看/home,/tmp分区是否已满,或作了quota(inode或物理空间)
4、看一下,X字体服务(xfs)是否运行
(三)、quota(熟悉quota的配置过程应该差不多吧)
1、修改fstab, mount -o remount /picc
2、quotacheck -cug /picc
3、quotaon /picc
4、edquota 用户或组
(四)、lvm ,raid
如果在troubleshooting 中出现,我想应该就是lvm不能挂载,
e2fsadm 扩展分区, raid 分区不能挂载,或有一个阵列设备坏掉,
要求恢复。不知道快照和在阵列上做lvm会不会考,这方面我从没见过
模拟题。知道的补充一下啊!会做lvm,raid 的试验不知道是不是够了!
(五)、autofs 结合nis客户配置

三、本地网络
会用netconfig,authconfig配置nis客户,resolv.conf设置

四、网络服务
1、httpd
a. 发布一个网站,为Web做安全访问(.htaccess)
b.Squid 的实现,选择性过滤站点
2、sendmail
a.配置接收邮件,/etc/mail/sendmail.mc
dnl DAEMON_OPTONS ('Port=smtp,Addr=127.0.0.1,Name=MTA')
m4 sendmail.mc > sendmail.cf
b.添加别名 在/etc/aliases加入别名,newaliases
c. 转发:在sendmail.mc 加入
FEATURE (promiscuous_relay) dnl
不充许转发:默认
选择转发: /etc/mail/access
d.pop3服务器,imap服务器
3、nfs 发布与挂载
4、samba
5、vsftp
6、 syslog接收发送远程消息,
接收:/etc/sysconfig/syslog
SYSLOGD_OPTIONS=" -r -m 0"
发送: /etc/syslog.conf
user.* @stationX
7、tcp_wrapper,xinetd
hosts.allow,hosts.deny
/etc/xinet.conf /etc/xinet.d/
8、gpg,ssh结合
9、NIS
10、pam
11、拒绝ssh登录(用户)
a./etc/ssh/sshd_config
denyusers user
b.pam 中/etc/security/access.conf
/etc/pam.d/sshd
 
 
转载:


五、各重要命令与文件的RPM包出处表。(RHEL4版)
rpm -ivh --force (网络安装)
 

1. initscripts-7.93.11.EL-1 : /etc/inittab, /etc/rc*, /etc/sysconfig/*, /sbin/ifup,/sbin/ifdown,/sbin/redhat-support-check,/sbin/initlog, etc.
2.util-linux-2.12a-16.EL4.6 : /bin/mount, /bin/login, /bin/umount,/bin/kill, /etc/pam.d/login,/sbin/fdisk, etc.
3.filesystem-2.3.0-1 : /initrd, /proc, /root, etc. All filesystem related.
4.SysVinit-2.85-34 : /sbin/halt, /sbin/init, /sbin/poweroff, /sbin/reboot, /sbin/shutdown, /sbin/telinit, etc.
5.kernel-utils-2.4-13.1.48, kernel-devel-2.6.9-5.EL, kernel-2.6.9-5.EL, etc. All kernel related packages contain RHEL4 kernel and tools.
6.Setup-2.5.37-1.1 : /etc/aliases, /etc/bashrc, /etc/environment, /etc/exports, /etc/filesystems, /etc/group,

/etc/passwd, /etc/hosts.allow, /etc/hosts.deny, /etc/profile, /etc/services, /etc/securetty, /etc/shells, /etc/printcap, /etc/inputrc, etc.
7.bash-3.0-19.2 : /bin/bash, /bin/sh, /etc/skel/*, etc.
8.rpm-4.3.3-7_nonptl and all rpm related packages contain rpm related binaries.
9.Grub-0.95-3.1 : /boot/grub/*, /sbin/grub*, /usr/share/grub/*, etc.
10. /etc/fstab 和 /boot/grub/grub.conf 或 menu.lst不属于任何一个包,是系统安装后产生的,所以必须手动修复!!

 

六.Troubleshooting 补充:
1. MBR损坏。
实验可以将头446字节mess up掉,然后练习修复。(注:请不要在自己的机子上实验这个!!!后果自负!!!

代码:
dd if=/dev/zero of=/dev/hda bs=446 count=1

然后rescue修复。主引导扇区一共512字节,剩下的是分区表。我曾经把分区表都删过,修复方法似乎只有一个,就是你得记得你上次分区的大小和次序,重新分区,不格式化!!还能找回原来的东西。

2. 补充几个出错信息:
1.当/etc/passwd丢失时,将会看到大量的服务无法启动,因为大多数的服务都有自己的UID。可以看到LOGIN 界面,但无法LOGIN。从RESCUE模式修复,但是无法完全修复,因为许多UID是服务器安装时加入的,最初的/etc/passwd并没有那些UID。
2.当ifup, ifdown丢失时,将给出execvp错误,方法是进RESCUE, 重装initscripts包。

3.QUOTA

代码:
edquota -t

改变quota的宽限时限。

4.LVM,RAID (这个在RHEL4中有很大的改动!)
e2fsadm命令取消,改为ext2online. 只能无损增加,无法减少。有个ext2resize命令,但RHEL4缺省没有安装,而且不再binary包中,要自己从src中编译。
增加的方法是:

代码:
lvextend -L +sizes lvname; ext2online /path/to/lvname

无须卸载文件系统。

RAIDTOOLS包被取消,改为mdadm. 创建方法为:

代码:
mdadm -C /dev/md0 -l5 --raid-devices= /dev/xx /dev/yy /dev/zz ... --spare-device= /dev/qq -v

这里的例子是创建一个RAID5,所以-l5,要创建其他形式的RAID,参见mdadm的manpage. -v表示verbose mode.
创建mdadm.conf文件:

代码:
mdadm –--detail –--scan >/etc/mdadm.conf

编辑/etc/mdadm.conf文件,将device行改为以space分割,也就是说将=,和“,”都去掉,变为space。因为如果直接使用,重启后会报语法错误。
管理RAID:

代码:
mdadm /dev/md0 -f /dev/xx -r /dev/xx -a /dev/nn -f set faulty, -r hot remove device, -a hot add device


============[ Installation and Configuration ] =========

5.Apache
RHEL4中Apache加了mysql和ldap模块。其中如果mysql模块被选中安装后将自动生效,也就是说apache将以mysql为backend数据库进行授权的管理,.htaccess的功能被替代,而不能生效。

6.Samba
补充几个有用的samba命令。
#从samba服务器上备份共享下的目录。

代码:
smbtar -s host -x share -d dir -u user -p passwd -t tarfile

#从备份的机器上还原备份。

代码:
smbtar -r -s host -x share -d dir -u user -p passwd -t tarfile

#Login samba服务器

代码:
smbclient //host/share -U user

#List

代码:
smbclient -L host -N (验证samba是否起了); smbtree

#check if a host/ip has access to a samba server.

代码:
testparm /etc/samba/smb.conf host/ip

#smbpasswd

代码:
smbpasswd -a|-e|-d|-x user -a add -e enable -d disable -x delete


7.POP3, POP3S, IMAP, IMAPS
In RHEL4, dovecot提供了这些服务,具体配置:
编辑/etc/dovecot.conf文件,在protocals=一行,加入你需要的(或是考试要求的服务)。缺省的ports:
imap: 143
imaps: 993
pop3: 110
pop3s: 995
ssl_cert_file and ssl_key_file,可以看到dovecot是拿什么文件来做ssl认证的,可以自己创建新的pem文件。
我将disable_plaintext_auth 配置为 no
我将auth_mechanisms配置为plain.
auth_userdb=passwd. 也就是说缺省为所有local user 都能登录。
在auth_passdb=pam项后可增加对pop3配置文件。(缺省没有,要自己建立)
/etc/pam.d/pop3文件内容如:

代码:
auth required /lib/security/pam_stack.so service=system-auth auth required pam_unix.so auth required pam_listfile.so item=user sense=deny file=/etc/security/dovecot.deny onerr=fail account required /lib/security/pam_stack.so service=system-auth #account required pam_access.so account required pam_unix.so

我用了pam_listfile.so模块,当然也可以用pam_access.so模块来限定。
这些服务也可以由inetd和xinetd来守护,具体做法请看:

测试: telnet host 110
然后输入: user username
pass password
如果LOGIN成功,会有提示。

8.各种服务的user base和host base 安全配置补充:
NIS: 可以实现userbase和hostbase,方法:
userbase - 在/etc/pam.d/system-auth中加入:

代码:
auth required pam_listfile.so item=user sense=deny file=/path/to/nis.deny onerr=fail

然后在nis.deny文件中加入你要block的用户,一行一个。
Hostbase - 将securenets文件由/usr/share/doc/ypserv-2.13考到/var/yp目录下,编辑。格式为: netmask network

portmap: 得用iptables或tcp_wrapper做hostbase, userbase应该是没有了。

NFS: Don't use “no_root_squash”. Use root_squash or all_squash.

Telnet: hosts.deny和hosts.allow做hostbase。或用xinetd做superserver控制。RHEL4上的telnet无法配合pam_access.so做userbase控制,怀疑是没有将pam编译进去?!

Apache: 如果要做userdir, 可以在httpd.conf中加入directives:

代码:
UserDir enabled user_list UserDir disabled user_list

user_list 是space 分隔的用户列表,控制哪些用户可以有自己的userdir,哪些不行。

FTP: upload的目录chmod为730,也就是说可以上传,不能浏览目录。

samba: RHEL4中samba除了可以用smb.conf和hosts.allow, hosts.deny只外,还可以用pam。

squid: RHEL4中squid已经可以通过pam做userbase级控制了。

sshd: RHEL4中还可以用pam来做userbase控制。

另外增加su和sudo的userbase级配置方法:
如果只要root和wheel组的成员才能su或是sudo, 在各自的pam文件中加入:
#root 永远都能。

代码:
auth sufficient pam_rootok.so

#检查用户是不是在wheel组中。

代码:
auth required pam_wheel.so

#检查其他要求。

代码:
auth required pam_unix.so

不过sudo我还是更偏向于在sudoers中配置。

9.GPG
#生成密匙

代码:
gpg –gen-key

#显示密匙,公匙,私匙

代码:
gpg --list-keys gpg --list-public-keys gpg –list-secret-keys

#以ascii形式dump出公匙,私匙。

代码:
gpg --export -a userID >public.key gpg --export-secret-key -a userID>secret.key

#导入key.file

代码:
gpg --import key.file

# 加密生成signaure和公匙加密的文件。

代码:
gpg -se -r userID file

#加密生成没有signaure的加密文件。

代码:
gpg -e -r userID file

#加密生成signaure和symmetric形式的加密文件。

代码:
gpg -sc -r userID file

#加密生成没有signaure的symmetric加密文件。

代码:
gpg -c -r userID file

#加密生成sig式的detachable文件。

代码:
gpg -b -r userID file

#解密文件

代码:
gpg [--decrypt] file

#复核sig文件。

代码:
gpg --verify sig.file

#删除密匙,私匙,私匙和公匙。

代码:
gpg --delete-key userID gpg --delete-secret-key userID gpg --delete-secret-and-public-key userID
转载:
   
Troubleshooting:

1. MBR损坏或丢失
进入rescue模式
检查grub.conf文件,确保文件里的设置正确
grub-instll /dev/had

2.grub.conf 文件错误
grub.conf包含如下语句
root(hdX,y) #指定/boot 分区所在位置,x y代表具体的磁盘和分区
kernel /vmlinuz-2.xx.x-x.EL ro root=/dev/xxx #/指定内核文件vmlinuz-xxx的所在位置,ro表示只读,root=指定根分区所在的位置
initrd /initrd-2.xx.x-x.img #加载initrd镜像文件,初始化RAM disk

#引用“大坏羊”的帖子#
如果无法找到内核,检查 root(hdx,y)是否正确
进rescue模式检查 vmlinuz文件是否被改名,或移到其他地方
一般出现File not found
Press any key to continue...
如果找到内核后,运行一会,
  出现kernel Panic:Not init Found,
  一般来说是没有找到根分区(/分区)即root=/dev/xxx不对
如果找到内核后,运行一会,
  出现Kernel panic: VFS: Unable to mount root fs on ...,
  一般来说可能忘了加上initrd /initrd-2.4.21-4.EL.img(大多情况发生在使用scsi硬盘)
总的来说grub.conf里面必须存在的就几行。

3./etc/inittab 文件丢失
会出现
INIT: No inittab file found
Enter runlevel:
Inittab 文件属于initscripts-7.31.6.EL-1 rpm包
可以进入rescue模式来重装这个包,
也可以进入单用户模式来修复,进入单用户模式后要手动挂载根分区
mount –o remount rw /dev/xxxx /
注意:进单用户模式的时候要输入 single 不要输入1
在inittab文件消失的情况下输入 1是无法进入单用户模式的。(具体原因今后讨论)

4. /initrd 目录丢失
出现:pivortrootivot_root(/sysroot,/sysroot/initrd)failed: 2
umount /initrd/proc failed: 2
Freeing unused kernel memory: 164k freed
Kernel panic: No init found. Try passing init= option to kernel

进rescue模式重建 /initrd目录

5./etc/fstab 丢失
fstab的格式必须熟记
#以下引用“大坏羊”的帖子#
/etc/fstab文件不属于任何rpm包,利用fdisk和e2label命令查看根分区(/分区)、/boot、/home、
/usr、/var分区(如果有这几个分区),然后编辑/etc/fstab文件,注意fstab文件的格式,如
果记不住,可以查看帮助:如果未mount /分区,则先装载,如果/usr分区单列,装载/usr
分区。如果在rescue模式下则先chroot。
查找fstab的帮助文件:
1、直接man fstab
2、locate fstab
  你会发现有个叫fstab.5.gz的文件,一般在/usr/share/man/man5/fstab.5.gz
  可以 man /usr/share/man/man5/fstab.5.gz
  或者 zless /usr/share/man/man5/fstab.5.gz
3、rpm -ql mount | grep fstab 也能找到fstab的帮助文件
4、find / -iname "*fstab*"  最笨的办法
如果不是在rescue模式,修改fstab文件时出来Read-only file system咋办?重新装载成读
写模式
mount -o remount,rw /dev/sdax /

(二)mount 文件丢失或被替换
mount 文件错误会出现/proc文件相关错误,红字显示很醒目,
此时比较麻烦,需进入rescue模式而不是进入输入root口令进行修改,因为根分区现在被
mount成只读(ro)模式,你没有mount命令来把根分区mount 成读写的(rw)。

(三)文件系统错误
1、使用fsck进行修复,郁闷的是无论出现什么提示只能选y,要不系统依然有问题。
2、可能文件系统的superblock有问题,把备份的恢复即可。(考试中这种情况几乎不可能)
fsck.ext3 -b (8192*n)+1


6./bin/bash 文件丢失
这种情况在启动后会出现( none ) login :
输入用户名和密码无效
进入rescue模式重装bash 包

7.RAID, quota,其他文件系统的错误
检查/etc/fstab文件里的设置


8.登陆问题
9.用户无法登陆
a.密码被更改
b.密码过期
c.PAM
更多的信息需要看/var/log/secure
/var/log/message


10.X问题
多数是/etc/X11/XFree86配置文件丢失,用redhat-config-xfree86来修复
查看/home/xxx/ 目录,/temp目录是否已满,是否做了quota
xfs服务是否启动

11.quota 配置
在/etc/fstab 文件里添加usrquota grpquota
mount –o remount /xxxxx
touch /xxxxx/aquota.user
touch /xxxxx/aquota.group
edquota <用户名>
quotaon /xxx


12.LVM
先用fdisk /dev/had
: n 添加新的分区
: t 更改分区标签 8e是LVM的标签
pcreate /dev/xxx /dev/xxx /dev/xxxx
pvscan 搜索 PV
pvdisplay /dev/xxx 显示信息

vgcreate /dev/xxx /dev/xxx /dev/xxx
vgscan 搜索 VG 创建 /etc/lvmtab 和 /etc/lvmtab.d
vgdisplay 显示VG详细信息

lvcreate –L -n
宽展LV
umount /xxx
lvextend –L + /dev/vg/lv
e2fsadm –L +


13. RAID
创建/etc/raidtab
/etc/raidtab 的内容可以参照 /usr/share/doc/raidtools-1.00-3/ 下的文件
mkraid /dev/md0
mke2fs –j –R stride=xx /dev/md0

14.autofs 配置 配合NIS客户端
vi /etc/autofs.master
/home /etc/auto.xxx

vi /etc/auto.xxx
*(挂载点) -fstype=nfs xxx:/home/&
阅读(3317) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~