rpm and kickstart
The RPM Way
不会有互动事件
可以适用在所有软件,如kernerl和其他额外的软件都可以以rpm的形式
不需要安装前面的版本才能安装后面的版本
RPM Packge manager
RPM components
local database /var/lib/rpm
rpm and related executables
package files
primary functions
install/remove
query
verify
build
installing and removing software
Primary RPM options:
install: rpm -i,–install 没有旧版本就会安装,如果有旧版本,会同时留下新旧版本,通常用在kernel的安装
upgrade: rpm -U,–upgrade 没有旧版本就会安装,如果有旧版本就会删除旧版本,安装新版本,用在安装应用软件,旧版本没有必要留下来或不会再用的情况下.甚至有的应用程序只允许留下一个版本
freshen: rpm -F,–freshen 如果没有旧版本就不会安装,如果有旧版本删除旧版本,留下新版本,一般用在更新现有的系统.
erase: rpm -e,–erase 删除
output options:-v -h 显示安装进度的配合选项
iostat 需要安装sysstat-5.0.5-1.i386.rpm
支持url,ftp安装如:ftp:// http://
rpm -Uvh ftp://192.168.0.254/pub/sysstat-5.0.5-i.i386.rpm
updating a kernel PRM
don’t use rpm -U,rpm -F,旧版本会删除掉,我们不能确定新版本能用,建议留下旧版本,安装新版本后就会在grub.conf里添加一个kernel,也就是说可以使用rpm更新内核。
rpm -ivh kernel-version.arch.rpm
boot new kernel to test
revert to old kernel if problems arise
rpm -e kernel-oldversion if no problems
rpm queries
installed package options:
rpm -qa lists installed packages
rpm -qf filename shows owning package 显示档案是哪个套件安装的
rpm -qf /bin/gzip
rpm -qi package_name general information 套件信息
rpm -qi gzip
rpm -ql package_name lists files in package 列出套件里包含哪些档案
rpm -ql gzip
uninstalled package options:
rpm -qip package_file.i386.rpm 显示未安装的套件档案的信息
rpm -qlp package_file.i386.rpm 显示未安装的套件档案包含哪些档案
rpm verification
installed rpm file verification
验证rpm套件有没有被修改过
rpm -Va 验证所有安装的档案有没有修改过,跟rpm database比较
rpm -V package_name 验证某一个档案有没有被修改过,跟rpm database比较
rpm -Vp package_file.i386.rpm 验证某个跟rpm包进行比对
signature verification BEFORE package install
在安装档案之前可以验证这个档案有没有经过redhat签署
其实redhat在发布rpm的套件时会在其中签署一个GPG的签章
rpm --import RPM-GPG-KEY 导入gpg指纹档,记录各个rpm档案的签署资料
rpm --qa gpg-pubkey 查询gpg有没有导入成功
rpm --checksig package_file.i386.rpm 查询某rpm档案有没有经过redhat签章
看到OK就是经过签章的.
other rpm utilities and features
rpm2cpio 将rpm格式的档案转换成cpio类型的档案,rpm的档案是有root才有权限使用,转换后就可以让给普通用户使用了.转换后比较大
rpm2cpio sysstat-5.0.5-1.i386.rpm > sysstat.cpio
可以使用cpio -it < sysstat.cpio 导入进来。
执行完以后可以查询cpio里有哪些档案,里面都是以相对目录存储,一般我们解开cpio的档案建议新建一个文件夹并拷贝进去
cpio -id < sysstat.cpio
rpmdb-redhat 记录rpm相依性套件
system-config-packages
automatic dependency resolution
如何自动安装相依性的套件
1要使用rpmdb-redhat这个软件的资料库
2所有相依性的rpm必须放在同一个目录
3加上–aid参数
如:rpm -ivh abc.rpm --aid
red hat network(RHN)
提供red hat e-paper
警告我们哪些套件需要更新
red hat update agent
using kickstart to automate installtion使用kickstart自动安装redhat linux
使用kickstart自动安装,需要安装此套件
kickstart %packages
要安装的套件
kickstart %pre %post
安装之前和之后要执行的scripts
network installation server
必须通过网络,可以通过NFS,FTP,HTTP的方式。
必须将redhat的安装光盘全部拷贝到服务器上。
架设好网络安装服务器后,把第一张光盘插入客户端启动,把ks.cfg拷贝到软盘
启动后输入linux ks=floppy
user administration
user policy considerations
有多少人会使用,是不是要限制事件或地点
密码多久要更改一次
是否限制CPU和memory
是否限制硬盘空间
the user account database - /etc/passwd
档案里存储了系统账户资料,每个用户占用一行
less /etc/passwd
按v进入编辑模式
chfn更改用户finger
这个文件权限rw-r–r–
passwd的用户名后面的x去掉后次用户登录就不需要密码了
shell是/sbin/nologin,那么此用户不能登录系统但是可以登录本机的ftp
shell是/bin/false,那么此用户仅可以收发邮件。
adding a new user account
useradd username
系统实际上去编辑
/etc/passwd,/etc/shadow,/etc/group
create and populate home directory
set permission and ownership
set account password using passwd
/etc/skel默认的用户/home文件,文件几乎一样,不同的是ownership不一样
使用newusers建立大量用户,编辑aaa,依照passwd格式填写
vi aaa
user4 user4:503:503::/home/user4:/bin/bash
user5 user5:504:504::/home/user4:/bin/bash
newusers aaa
使用newusers建立用户的时候只会建立home目录而不会复制skel的内容
user private groups(UPG)
在建立账户的同时,为这个账户建立一个同名的私有组,并把这个帐号加入到这个私有组来.所有以此账户建立的文件的组权限都会有这个私有组.防止此账户新增的档案不属于任何一个群组。
group administration
entries added to /etc/group
groupadd
groupmod
groupdel
modifying /deleting accounts
修改用户资料
修改/etc/passwd
使用命令usermod
更改用户home
mkdir /home/test-6
chown test6:test6 /home/test-6
usermod -d /home/test-6 test6
后面跟新的家目录
usermod -G group1 test6 把用户加入到其他群组
usermod -g group2 test6 更改用户主要群组
usermod -L test6 锁定test6账户,实际上是更改/etc/shadow密码字段前加!
如果是!!表示这个用户还未设置密码
usermod -U test6 解除锁定
删除用户
手动方式编辑/etc/passwd,/etc/shadow,/etc/group,/var/spool/mail/username
命令方式userdel -r test6,使用userdel命令不会删除/etc/group里test6组的内容,可以使用groupdel test6
password aging policies
默认情况下,密码永远不会过期
为安全考虑,可以强制多长时间修改一次密码
更改/etc/login.defs设置默认用户密码有效期
也可以使用chage [option] user变更密码时间相关参数
chage -l user6查看账户密码信息
chage -I 3 user6 密码过期几天后锁定用户帐户,默认是-1。
login shell scripts
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
non login shell scripts
~/.bashrc
/etc/bashrc
/etc/profile.d/*.sh
switching account
syntax
su [-] [user]
su [-] [user] -c command 如果只要以某个用户身份执行某个命令
允许暂时切换成别的账户工作,默认情况下,不指定是root
su
su -
[-] 是切换到新的用户,并开启一个login shell,如果不加-,只是切换到新用户,开启一个no login shell
sudo
让一般的用户可以执行只有root才可以执行的指令
可以在/etc/sudoers文件里定义某一个特定的账户可以执行某一个特定的只有root可以执行的指令
an effective user id of 0
group id of root’s group
/etc/sudoers没有定义的账户使用sudo时,会通知root
vi sudoers只读方式
visudo sudoers 编辑
network users
我们可以把用户资料集中存储在网络上一台服务器上,资料包括:UID,default shell,home directory,group memberships,and so on,可以是NIS或LDAP服务器
vi /etc/nsswitch.conf
paaswd
shadow
group
authentication configuration
system-config-authentication GUI界面
如果在命令后加–nox 会开启文字界面
authconfig命令直接使用文字界面
支持一下几种认证服务器:
(local files),NIS,LDAP,Hesiod,Winbind
支持认证方式:
(NSS),Kerberos,LDAP,SMB,winbind(MS AD)
NIS configuration(配置NIS服务器验证用户身份)
Must install ypbind and ypserver and portmap RPMs
run system-config-authentication
enable NIS to provide user information
specify NIS server and NIS domain name
keep default authentication
what does this actually do?
four text-based configuration files are changed
/etc/sysconfig/network NISDOMAIN
/etc/yp.conf NIS server for NIS domain
/etc/nsswitch.conf use NIS
/etc/pam.d/system-auth shadow NIS
LDAP configuration
Must install nss-ldap and openldap RPMs
Run system-config-authentication
enable ldap to provide user information
specify server,the search base DN and TLS
enable LDAP to provide authentication
The purpose for using authentication tool
four text-based configuration files are changed
/etc/ldap.conf
/etc/openldap/ldap.conf
/etc/nsswitch.conf
/etc/pam.d/system-auth
file ownership
every file has both user and group “ownership”
a newly create file will be owned by:
the user who create it
the current primary group of that user
sgid directories may change this behavior
the chown command can be used by root to change ownership
linux file permission
access levels
u user
g group
o other
access modes
w write
r read
x execute
flags indicate access mode for each access level
file mods is a concise collective of flags’values expression
d directory
- file
sudi /sgid executables
默认情况下,用户执行一个可执行文件的时候会以自己的身份执行,但是设置了SUID或SGID的时候,用户分别会以用户所有者身份和所属组身份执行
the sticky bit
如果使用者在一个目录上有write权限的话,那么不论在文件上有哪些权限,也不管文件的所有者是谁,使用者都可以删除掉目录里的档案,但是如果在目上设定了sticky权限后,那么在这个目录里的档案只有档案的所有者可以删除自己的档案.
the setgid access mode
默认情况下,使用者在目录里建立的档案会属于预设的群组,但是如果在这个目录上设置了SGID权限的话,那么,使用者在这个目录里建立的档案都会属于这个目录所属的群组
default file permission
当我们建立文件或目录是,系统会把所有权限放开给所有人,但是还要经过umask的计算
non-system user’s umask 002
files will have permission of 664
directories will have permissionm of 775
support user private groups
system user’s umask 022
/etc/bashrc里定义了umask
有个判断的语句,判断用户与所属组是否一致,一致为022,不一致022
access control lists(ACLs)
Grant RWX access to files to multiple users or groups
ACLs 可以针对某些特定的使用者或者是组来设定对某一个特定文件或一个特定目录的权限
vi fstab
LABEL=/ / ext3 default,acl 0 0
getfacl /opt 查看目录的acl设置
setfacl 设定acl
setfacl -m u:user1:r-x /project1
在project1目录上为user1开放r和x权限
printing and administration tools
CUPS Overview
common unix printing system
支持*.html *.pdf *.jpg…等格式
CUPS configuration files
/etc/cups/cupsd.conf
/etc/cups/printers.conf
lpadmin
system-config-printer
cups web界面形式
CUPS queue management
system-config-printer
system-config-printer-tui
http://localhost:631
cron
可以让系统在指定的时间去做某个工作
man crontab
man 5 crontab
蓝色是一组,红色是一组,中间是or的关系
日期和星期之间是or连接的
crontab的任务是在背景中执行的,比如echo命令也是不会显示在终端上的,执行完毕后会发一封邮件给root
controlling access to cron
/etc/cron.allow
/etc/cron.deny
限制哪些人可以使用cron
system crontab files
/etc/crontab
系统里的crontab文件,系统所使用的crontab存在以上这个文件里。
02 4 * * * root run-parts /etc/cron.hourly
使用root身份执行/etc/cron.hourly目录下所有的脚本
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
system cron job: tmpwatch
/etc/cron.daily/tmpwatch
系统每天都会执行这个scripts
man tmpwatch 清除系统很长时间没有存取的档案
默认情况下tmpwatch会判断文件的atime,查看是否要清除这个文件。
system cron job: logrotate
/etc/cron.daily/logrotate 压缩并邮寄系统的log文件
可以通过/etc/logrotate.conf来设定logrotate
默认情况下每周压缩备份系统log,保存在/var/log/messages
system logging
系统里有2个服务负责系统日志的记录,
syslogd负责记录应用过程序产生的log,
klogd负责记录kernel产生的log
none<debug< info<notice<warning<error<critical<alert<emerg
none :不记录日志
debug:调试信息,系统进行调试时产生的日志,不属于错误日志,不需要过多关注。
info: -般的通知信息,用来反馈系统的当前状态给当前用户。
notice :提醒信息,需要检查一下程序了,不理会可能会出现错误。
warning:警告信息,当出现警告时,你的程序可能已经出现了问题,但不影响程序正常运行,尽快进行处理,以免导致服务宕掉。
error :错误信息,出现这一项时,已经挑明服务出现了问题,服务都无法确认是否能正常运行。
critical :比较严重的错误信息,服务已经宕了,可能已经无法修复。
alert :警报信息,需要立即采取行动,不仅是服务宕了,还会影响系统的正常后动。
emerg :紧急信息,系统可能已经不能使用了,如果不能解决,就重新装机吧。
syslogd和klogd依据/etc/syslog.conf里面的设置来判断是否要记录及记录什么等级的log
系统log在/var/log里分类存储
syslog configuration
/etc/syslog.conf
mail.* - /var/log/mailog “-是现将mail的log存储在ram的buffer里,等到一定数量后再存储到硬盘,通常log档案很大时才使用这样的方式。
*.emerg * 任何程序产生emerg级别的log后显示给所有的用户,*代表所有用户
local7.* /var/log/boot.log 记录系统引导时产生的log
如果想把log传输到其他服务器上去的话,修改/etc/syslog.conf
authpriv.* @server1
还必须在server1上设置可以接受其他服务器传过来的log
vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS=”-r -m 0”
tape drives
(DAT:digital autdio tape DDS:digital date storage DLT:digital linear open)
/dev/stN
如果系统检测到有scsi的tape设备的话,会放到以上的目录。
/dev/[n]stN
没有自动回带的scsi tape设备
man st
/FILES
/dev/st* : the auto-rewind SCSI tape devices
/dev/nst* : the non-rewind SCSI tape devices
man mt
mt是控制磁带机的磁头的
using tar
用来把一个目录或文件打包并压缩成一个档案
man tar
tar -czvf /var/home.tar.gz /home
tar -tf /var/home.tar.gz
tar xzf home.tar.gz
using dump/restore
dump可以备份ext2/3 格式的文件系统,也就是可以备份整个分区
dump 可以不同级别的备份。
A level 0, full backup, guarantees the entire file system is copied (but see also the -h option below).A level number above 0,incremental backup,tells dump to copy all files new or modified since the last dump of a lower level. The default level is 9
0是全备份,incremental backup备份上次备份以来变化的数据,,dump根据levels来判断上次备份时间,备份最近一次比此次level低的数据。
通常会02143来备份,是为了容易恢复文件。
dump -0 -u -f ~/backup /dev/sda1
-f是指定要备份到哪里,如/dev/st0 (a tape drive),/dev/rsd1c (a floppy disk drive), an ordinary file, or - (the standard output)
-u dump的level是靠/etc/dumpdates来记录的,-u是要更新dumplevel里面的记录。
using cpio
可以从打包好的档案里复制里面的内容,也就是解压缩打包好的档案,或者是向打包好的档案里添加内容
-i Run in copy-in mode,copy-in模式是从一个打包好的档案里复制里面包含的内容,也就是解压一个打包好的档案。
-o Run in copy-out mode,copy-out是把其他的答案复制到一个大包好的档案里面去,也就是把档案打包。
-t 列出一个打包好的档案里包含哪些文件。
find /test/ | cpio -o > test.cpio
使用cpio打包test档案。
cpio -it < test.cpio
查看cpio里面的内容
cpio -id < test.cpio
解压档案,必须解压到没有原始档的目录,也就是说没有重名的文件夹。
remote backups
usrname@hostname:/path
tar -czvf root@example1:/var/home.tar.gz /home 把本地的home备份到远程主机
dump -0uf root@example1:/var/home.dump /home把本地的home备份到远程主机
the X window system
Xorg:the X11 server,X是一种协议,用来定义图形化的基本功能和通讯方式 。
X11(binary code)负责和底层的硬件输入输出设备通讯的程序
X Server
X Client
Xorg Server Configuration
通常在安装完成后系统会自动执行x server的设定工具
in runlevel 3:system-config-display可以开启Xserver的设定工具
可以用runlevel确定runlevel
X window in runlevel 3
在runlevel 3中是怎么启动X window
startx
系统先判断有无~/.xinitrc,如有执行这个档案的设置,再执行/etc/X11/xinit/xinitrc.d/*下的脚本;如无则执行/etc/X11/xinit/xinitrc档案设定,默认情况下是没有~/.xinitrc的。当脚本执行完毕后,检查有无~/.Xclients,如有执行里面设置,再执行desktop设定,如无则执行Xclients
X window in runlevel 5
在runlevel 5的环境中怎么启动X window的
remote x sessions
该怎么使用远端X Server的服务
使用ssh -Y 192.168.8.100
root@192.168.8.100’s passwd:
last login:Thu Oct 20 16:39:50 2008 from ns.domain.com
[root@example ~]xterm #在远端提示字符下输入要使用的图形界面程序如xclock或xterm
advanced filesystem management
software RAID configuration
raid5 xor运算得到一个值
software RAID用分区模拟硬盘实现RAID
在硬盘上分相同大小的2个分区,标签为fd,fdisk /dev/sdb 增加2个partition
mdamd -C /dev/md0 -l 0 -n 2 /dev/sdb2 /dev/sdb3
cat /proc/mdstat
mke2fs -j /dev/md0
mkdir /raiddata
ls -l /raiddata
mount /dev/md0 /raiddata/
ls -l /raiddata/
df -h
software RAID recovery
mdamd /dev/md0 -f /dev/sdb2 模拟onsdb2坏掉
mdamd /dev/md0 -a /dev/sdb2 增加一个新的分区到rai里。
converting LVM1 to LVM2
Logical Volume Manager
PV—VG—类似格式化,得到PE(Virtual Disk)—划分LV以后才能存资料
使用lvm的好处是可以动态扩大lv
vgconvert -M2 vg0 把lvm1转化为lvm2
creating logical volumes
新建2个分区,变更分区类型:8e
w退出,提示重启生效,也可以使用partprobe命令
pvcreate /dev/sdb5 #把分区转换成PV
pvcreate /dev/sdb6 #把分区转换成PV
vgcreate vg1 /dev/sdb5 /dev/sdb6 #创建vg1
lvcreate -L 30M -n lv01 vg1 #建立30m的名为lv01的lv。
ls -l /dev/vg1/
mke2fs -j /dev/vg1/lv01 #格式化lv01对应的logic volume
mkdir /lvmdata
ls -l /lvmdata
mount /dev/vg1/lv01 /lvmdata
vi /etc/fstab
resizing logincal volumes
放大LV
lvextend -L +20M /dev/vg1/lv01
df -h
放大后还没有格式化,所以用df -h查看lv01还是30M
ext2online /dev/vg1/lv01 #用ext2online格式挂载的文件系统
df -h
放大VG
建立新的分区,修改分区类型8e,partprobe
pvcreate /dev/sdb7 #创建pv
vgextend vg1 /dev/sdb7 #扩大vg1
vgdisplay vg1 #使用vgdisplay查看是否扩大了vg1
删除VG
先删除掉lv,删除lv先umount,umount /lvmdata
df -h
lvremove /dev/vg1/lv01 #删除lv01
vgremove vg1 #删除vg1
vgdisplay vg1 #提示vg1不存在,证明vg1已经被删除掉了
the linux quota system
磁盘配额
可以在每个文件系统上使用配额,根据用户,组设定限制内容。
必须在挂载文件系统是加上不同的参数:usrquota grpquota
可以限制blocks数量(硬盘空间)和indoes数量(建立文件和目录的数量)
soft limit(临时超过配额)
grace period(多长时间,默认一周)
hard limit #grace period过后就会变成hard limit
必须在fstab里加入相应的参数
在需要加配额的目录后加入defaults后加usrquota或grpquota
vi /etc/fstab
mount -o remount /home
quotacheck -c /home #扫描home目录,并把资料存放到这里。
ls -l /home
目录里多个了aquota.user
quotaon /home
使用user1登录
dd if=/dev/zero of=big bs=1M count=6
ls -lh
使用root
edquota user1
开启user1用户quota的配置
修改后保存退出
su - user1
quota
ls -lh
dd if=/dev/zero of=big1 bs=1M count=3
dd if=/dev/zero of=big2 bs=1M count=3
ls -lh
edquota -p user1 user2
把user1的配置复制给user2
repquota -a
troubleshooting
troubleshooting
排除故障的原则
当出项问题时只会出现症状,而不会告诉我们问题出在哪里
所以尽量收集症状的信息来定义系统发生了什么问题
还要定义好系统里有哪些功能是正常的
相关信息收集完毕后才可能假设问题的原因是什么
我们可以根据log文件来查看到底是不是这个原因造成的问题
如果必须修改设置才能排除问题的话,在修改之前最好把原来的件备份起来
things to check:x(当x window发生问题时)
不要在runlevel 5下排除故障
重启进入runlevel 3下排除
system-config-display看能不能打开x设置的工具,如果不行的话,问题可能在显卡
使用X -probeonly来检查显卡,使用/etc/X11/xorg.conf配置来测试能不能启动x server,并把日志记录在/var/log/Xorg.0.log
如果显卡没有问题的话,看一下/home和/tmp目录是不是满的。
df -h /home
df -h /var
检查xfs服务有没有启动
service xfs status
things to check:networking
hostname resolution
dig hostname
ip configuration
ifconfig
default gateway
route -n
correct kernel modules for NIC
cat /etc/modprobe.conf
device activation 重启
ifdown eth0
ifup eth0
order of the boot process开机发生问题的时候排除故障流程
bootloader configuration
GRUB
kernel
有没有正确的载入内核
panic
开机时发生panic的话则是表示根目录没有挂载成功
检查/sbin/init和/etc/inittab
检查根目录是否损坏
/etc/rc.d/rc.sysinit没有执行成功的话
有可能/bin/bash有损坏或/etc/fstab设置有误
检查/etc/rc.d/rc
及/etc/rc.d/rc?.d/目录里面的scripts有没有问题
filesystem corruption
文件系统故障通常是不正常关机导致的
首先unmount the filesystem
fsck -y
比如/home系统有问题
umount /home
ls /home #目录必须是空的才能确认/home被卸载了
fsck -y /dev/sda2 #/home对应/dev/sda2
mount /dev/sda2 /home
ls /home
recovery run-level
single user mode
runlevel 1 进入方法:a键修改启动菜单,ro root=LABLE/ 1
runlevel S 进入方法:开机出现welcome to red hat enterprise linux es
press ‘I’ to enter interactive startup
会一个一个提示要不要启动某项服务
runlevel emergency 进入方法:/etc/fstab设置错误的时候就会进入或文件系统 损坏。emergency模式下命令要用绝对路径才能找到
some /etc/rc.sysinit也就是nologin模式
rescue mode
当根目录所在的文件系统损坏或boot loader遭到破坏的时候
boot from CDROM
可以使用第一张光盘引导,或把里面的boot.iso烧录到光盘上
或者可以把里面的diskboot.img拷贝到USB key中
使用以上方式启动后才可以使用命令进入到rescue mode
rescue mode会尝试找到根目录所在的文件系统并把根目录挂载到/mnt/simage目录里
模拟MBR损坏的时候:
dd if=/dev/zero of=/dev/sda bs=446 count=1 #破坏MBR,重启后只出现一个光标
修改setup,用光驱启动,放入第一张光盘,在boot:提示符下输入
linux rescue
尝试找到根目录,并挂载到/mnt/sysimage
按照提示完成进入sh-3.00#
输入grub-install /dev/sda
会提示找不到命令,这是因为dev在根目下面,而根目录挂载到/mnt/sysimage目录去了,所以使用chroot /mnt/sysimage/命令在使/mnt/sysimage目录当成根目录
然后使用命令grub-install /dev/sda
exit #退出change root机制
exit #退出 rescue mode
模拟当根目录所在的文件系统出问题的时候:
根目录所在的文件系统损毁不一定是真的文件系统损毁,有可能是系统找不到根目录。
vi /etc/grub/grub.conf破坏grub设置
比如删除kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet这一行,这样系统在开机的时候就找不到根目录