Linux实践工程师学习笔记一:用户环境 用户环境
#locale 显示系统语言环境 语言环境参数保存在/etc/sysconfig/i18n文件里
LANG最主要
#locale –a 查看系统对语言的支持情况
#LANG=zh_CN.GB2312 使系统支持以中文形式显示
kudzu 用来检测硬件
services kudzu start 重新检测硬件,让系统自动识别新硬件
硬件信息保存在/etc/sysconfig/hwconf文件
由kudzu产生
修改系统服务启动脚本
chkconfig kudzu –list 检查某个服务状态(包括各个级别0~6的状态)
setup 配置系统服务,一个综合配置工具
chkconfig –list | more 检查系统所有服务的状态
所有服务通过init启动
有些是通过xinetd服务启动的,如rsync
启动rsync
chkconfig rsync on
当执行service xinetd restart时,其实是执行/etc/init.d/xinetd这个脚本
而这个脚本会去检查自己的配置目录/etc/xinetd.d
/etc/rc0.d~/etc/rc6.d 里面的文件连接到../init.d/具体的服务,如/etc/init.d/kudzu
S开头为启动,K为不启动
/etc/rc0.d~/etc/rc6.d ---àrc.d/rc0.d~rc6.d
设置系统服务ntsysv命令(同setup)
如何关闭selinux
/usr/sbin/setenforce 0 关闭
/usr/sbin/setenforce 1 开启
或在/etc/selinux/config中改
SELINUXTYPE=permissive 关闭,disabled也可以
Linux下使用U盘
#ls /dev 确认设备已识别
#mount -o iocharset=gb2312 /dev/sda1
more后ctrl+F向下翻页(或空格)ctrl+b(上滚)
ls -a 显示隐藏文件(以.开头的文件)
文件权限rws s表示执行这个程序的使用者,临时拥有和所有者一样的权力身份来执行该程序
cp -r 源 目的 -r参数表示连子目录一起拷贝
rm -i 确认删除
-r 删除子目录
-f 强制删除
du 磁盘或目录使用了多少空间
df 磁盘或目录剩余可用空间
cat >file1 等价你输入文字,输完后ctrl+C或ctrl+D结束
>>符号表示在文件尾附加,>符号表示创建新文件
less 可上下滚动文件内容
which 在$PATH设置的目录查找文件
2. passwd redhat
3. su –
4. exit
5. df –h 分区情况
6. du –sh /* 统计文件或目录使用空间的大小
7. fdisk –l /dev/sda
8. netconfig 配置网络参数
9. ifconfig 显示网络配置信息
10. service network restart
11. route –n 查看路由信息(默认路由)
12. ping –b 192.168.0.255 扫描整个网段(检查活动主机)
13. ifconfig eth0 10.0.0.254 netmask 255.255.255.0 修改IP地址
14. ifconfig eth0显示指定网卡参数
15. 修改IP信息后会删除默认路由,需手工添加
route add default gw 192.168.0.1
16. ifconfig route 修改过的参数不会保存,重启后会消失
要用service network restart命令把参数保存到文件ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
可以vi直接修改该文件,然后service network restart 重新启用网络服务
17. redhat-config-network-tui是redhat独有的配置工具,当用这个命令配置网络参数后,会写入到/etc/sysconfig/networking/profiles/目录里,并且比network-scripts/ifcfg-eth0优先,所以用过这个工具配置就不要再使用netconfig,或者先将profiles目录清空
格式化文件系统:
mkfs.ext3 –b 4096 –i 8192 –m 5 /dev/sdb4
-b 数据块大小
-i inode节点表示的字节数(或数据块大小)
-m 5 为管理员保留的磁盘管理空间5%
ls –lh /mnt/u
du –sh /mnt/u
df –lh
#tune2fs –l /dev/sdb1 打印文件系统属性
#df
tune2fs 调整ext2/ext3文件系统特性的工具
-l 查看文件系统信息
-m 保留块百分比
-c <count> 设置强制自检的挂载次数
-i <n day> 设置强制自检的间隔时间
-j ext2转成ext3
tune2fs –c -1 /dev/sdb1 不管挂载多小次都不自检
tune2fs –c -1 –i 0 /dev/sdb1 让分区永远不自检
#mkfs.ext2 /dev/sdb4 格式化成ext2
#tune2fs –j /dev/sdb4 转换为ext3
#df –T 查看分区信息
判断间ext2还是ext3:
tune2fs –l /dev/sdb1 | grep features
看Filesystem features: has_journal
是否有has_journal,有则是ext3文件系统
grep –i “name” 不区分大小写
df –T 分区类型
fsck 检查文件系统数据完整性的工具
用法一、fsck –t ext2 /dev/sdb1
二、fsck.ext3 /dev/sdb1
#more /etc/fstab
如发现挂载选项有1或2,那么应该进行自检了
#fsck.ext3 –y /dev/sdb1 自动修复错误
mount /dev/fd0 /mnt/floppy
光驱(IDE) /dev/cdrom (/dev/hdx)
光驱(SCSI)/dev/scdN (N=0,1…)
硬盘(IDE) /dev/hdX (X=a,b,c…)
硬盘(SCSI)/dev/sdX (X=a,b,c…)
U盘 /dev/sdX (X=a,b,c…)
弹出光盘#eject
收回#eject –t
因为USB设备内置USB-SCSI转换接口,所以被认为是SCSI硬盘
#mkdir /mnt/u
#mount /dev/sda1 /mnt/u
默认内核已支持SCSI和USB接口
#modprobe usb-storage 检查usb-storage模块是否已加载,否则无法自动识别USB设备
#mount –t vfat /dev/hda2 /mnt/c
#mount –t ntfs /dev/hda3 /mnt/d 需重新编译内核才能支持NTFS
#mount –t iso9660 /dev/cdrom /mnt/cdrom
#mount –t vfat –o iocharset=gb2312 /dev/sdb1 /mnt/u
常用字符编码有gb2312和utf8
#mount /dev/sdb2 /mmt/d –o iocharset=utf8,ro,uid=redhat,umask=0077
Linux下使用U盘
#ls /dev 确认设备已识别
#mount -o iocharset=gb2312 /dev/sda1
more后ctrl+F向下翻页(或空格)ctrl+b(上滚)
ls -a 显示隐藏文件(以.开头的文件)
文件权限rws s表示执行这个程序的使用者,临时拥有和所有者一样的权力身份来执行该程序
cp -r 源 目的 -r参数表示连子目录一起拷贝
rm -i 确认删除
-r 删除子目录
-f 强制删除
du 磁盘或目录使用了多少空间
df 磁盘或目录剩余可用空间
cat >file1 等价你输入文字,输完后ctrl+C或ctrl+D结束
>>符号表示在文件尾附加,>符号表示创建新文件
less 可上下滚动文件内容
which 在$PATH设置的目录查找文件
mount –o usrquota,grpquota /dev/sdb1 /mnt/d1 或
mount –o remount,usrquota,grpquota /
也可以修改 /etc/fstab文件来启用每个文件系统的配额 ---- 添加选项usrquota,grpquota
例:
将LABEL=/home /home ext3 defaults 1 2
改为
LABEL=/home /home ext3 defaults,usrquota 1 2
#init 1 (进入单用户环境)
#quotacheck –cvuga 或 quotacheck –cvag /dev/sdb1 (a代表all)(g代表用户组)
#quotaon –a 激活
#edquota –u redhat 进VI编缉用户配额
编缉用户可用的字节数,软性的,硬性的,文件数,软件性的,硬性的
quota –u redhat 查看用户磁盘配额
edquota –t 配置过期时间
edquota命令能为一系列用户设置同一配额。假设已为用户ez设立了配额,以下命令将为随后的用户(即mj、jm和tp)复制完全相同的配额限制:
$ sudo /usr/sbin/edquota -up ez mj jm tp
quotaoff /mnt/sdb1 关闭磁盘配额
quotaon /mnt/sdb1 开启
repquota命令按用户(-u)或组(-g)报告配额使用情况。用repquota -a命令可以得到所有文件系统的报告。
如果想检查单个用户(-u)或组(-g),可以使用quota命令。单个用户可以用此命令检查他们自己的配额使用情况。
关于putty 0.58的简单设置
1. 修改语言环境 LANG=zh_CN.utf8
2. 修改传输数据的字符集translationàUTF8
3. 修改外观appearance字体font为新宋体
ls –ld 显示文件属主,详细信息
Fedora core/Redhat Linux提供的软件包
samba samba服务器软件包
samba-client samba客户端工具
samba-common 通用工具和库
安装rpmdb-fedora/rpmdb-redhat软件包(一般在第三张光盘)
但在FC5已找不到这个软件包
安装了rpmdb可以解决依赖性问题
#rpm –ivh rpmdb-fedora*.rpm
#rpm –ivh --aid samba*.rpm 装了rpmdb才有效
1.#rpm –ivh cups-libs*.rpm 第一张光盘
2.#rpm –ivh samba*.rpm 第一张光盘(client,common)
3.#rpm –ivh samba*.rpm 第二张光盘
#rpm –qa |grep samba 查看所有软件包列表
#rpm –ql samba | more 查讯某个软件列表
samba客户端工具
smbtree
作用:显示局域网中的所有共享主机和目录列表(默认使用当前用户登录)
用法:smbtree [-b] [-D] [-U username%password]
-D 表示只显示工作组名,不显示主机
-b 使用广播查询列表,不用WINS服务器
-D和-U 不能共用,因为不可能用同一个用户登录域上所有主机
nmblookup
作用:显示一台主机的nethios主机名
nmblookup my-server 查询服务器的IP
nmblookup \* 查询所有活动的主机的IP
smbclient
作用:显示/登录局域网中的共享文件夹
用法:smbclient –L host
smbclient //host/share
smbclient –L 192.168.0.22 –U redhat%redhat 以redhat用户登录并显示共享目录
smbclient //192.168.0.22/linux –U redhat%redhat
登入目录,查看目录内容,通过put,get上下载文件
smbtar(先要修改/usr/bin/smbtar命令,把最后一行的参数-N匿名登陆删掉)
远程备份网上邻居中的文件
smbtar –s win2000 –u redhat –p redhat –x chinalab –t itlab.tar
将共享目录挂载到本地目录,然后再访问
mount.cifs //192.168.0.22/linux /mnt –o username=redhat%redhat
tar tvf lab.tar 显示备份包里的文件
samba服务器配置
1.修改配置文件/etc/samba/smb.conf
workgroup = WORKGROUP
security = share
[docs]
path = /usr/share/doc
comment = share documents #说明共享目录
public = yes
2.重启smb服务器
#service smb restart
#chkconfig smb on 让smb每次自动启动
3.测试
#smbclient –L localhost
chkconfig smb –list 查看服务的启动状态
SMB 提供名称解释服务
NMB 提供数据传输服务
两个总是一起工作的
samba文件服务器
(WINS)在网上邻居看不到主机列表,可以在地址栏直接输入IP如\\192.168.0.1查看共享目录
网上邻居看到的主机列表,主要有三个来源,一是配置文件lmhosts,主机名与IP的对应关系
二是通过浏览服务器 三是通过广播方式获取主机列表
linux访问网上邻居
1.挂载方法
#mount –t smbfs //192.168.0.1/linux /mnt
或 #mount.cifs //192.168.0.1/linux /mnt
2.#smbclient //192.168.0.1/linux –U redhat%123
访问控制
public = yes 允许所有人访问
= no 不允许匿名访问
1.共享目录设置有效用户
[redhat]
path = /var/redhat
comment = redhat’s files
valid users = <username> <@groupname>
2.创建samba用户
#useradd username 新建一个系统用户
#smbpasswd –a username 将用户加入到samba中
3.用户账号映射
[global]
username map = /etc/samba/smbusers
4.修改上面指定的smbusers文件,添加虚拟用户名
redhat = tom jack
也可以直接用以下命令:
#smbuseradd unixname:mapname
5.需重启smb服务读取映射文件
HOME目录(用于用户访问用户自己的主目录)
[global]
[homes]
comment = Home Directories
validusers = %S %S目录属主
browseable = no 默认不允许浏览home目录
writable = yes 允许写
valid users = 有效用户列表
write list = 可写用户列表
create mask = 0660 定义创建文件的默认权限
directory mask = 0770 定义创建目录的默认权限
chown redhat /var/redhat 改变目录属主
ls –lh 显示目录里各个文件的详细信息
ls –ld /usr/redhat 只显示目录本身的详细信息
#testparm 测试配置默认文件smb.conf的正确性
#testparm /etc/samba/smb.conf my-server 192.168.0.1
测试客户机能访问服务器的哪些目录
[redhat]
path = /var/redhat
comment = redhat’s files
public = no
valid users = <username> <@groupname>
write list = <username> <@groupname>
create mask = 0660
directory mask = 0770
注意:客户端所有请求访问身份在服务器端都会映射成登录账号的身份
samba配置文件
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP 组或域名
server string = samba server 服务器描述
netbios name = redhat 指定samba服务器名
security = share/user/server share不需验证用户,user要验证
;password server = <server>
需与security=server配合使用
log file = /var/log/samba/log.%m %m指客户机的netbios名,日志按客户机名分类
encrypt passwords = yes
加密密码,windows客户机一般使用加密密码,所以为yes.如果不加密直接用明文密码,可改为no,但windows客户机需修改注册表指定不加密
smb passwd file = /etc/samba/smbpasswd
上面两句要一起使用!
include = /etc/samba/smb.conf.%m 包含外部配置文件,如根据不同的客户机名称,定义不同的共享资源
;interfaces = 192.168.0.0/24 samba应用在哪个接口上,默认是在所有网卡,所有接口上
;name resolve order = wins lmhosts bcaast 名称解释顺序
;wins support = yes 自己作为WINS服务器,并提供给客户机查询
;wins server = w.x..y.z 与WINS配合使用,作为WINS服务器,请求会发送到w.x.y.z
/etc/samba/lmhosts文件(保存客户机IP与名称的对应关系)
左边IP 右边名称
127.0.0.1 localhost
wins support,wins server 不能同时使用
wins server 说明本身作为客户机,而指定一台wins服务器的IP
samba的安全级别
[global]
security = <level>
1.share
windows用户不需要认证就能访问共享列表
2.user
windows客户机需输入用户才能访问共享名列表,服务器上需建立用户账号
3.server
客户端需输入合法用户帮能访问,但认证过程在另一服务器进行,用户账号保存在认证的那台服务器上。
share,user只对windows客户机有效,linux客户机在user级别不用密码也能访问共享名列表。security只保护主机的共享名列表,具体到目录的访问则由目录的规则决定。
#hostname 查看主机名
#nmblookup my-server 查询主机IP(与samba netbios name有关)
#man smb.conf 查看相关帮助
vi搜索技巧:
/%m 先输入”/”再输入要查找的字符串
/redhat 如查找”redhat”字符串
shift+G 跳到文件尾
默认服务器名与机器DNS的第一部分相同
如Fedora.cyrich.com则这台samba服务器的名称就是Fedora
访问控制
一、全局控制
[global]
hosts deny = ALL
hosts allow = 192.168.0.
二、局部访问控制
[docs]
hosts deny = 192.168.0.
hosts allow = 192.168.0.1
[redhat]
hosts allow = 192.168.0.
host deny = 192.168.0.1 (失效)
允许优先!!
hosts 后面的格式语法,可以通过man 5 host.access查看帮助
1.点开头 .edu.cn
2.点结尾 192.168.0.
3.192.168.0.0/255.255.255.0
192.168.0.0/24
4.ALL LOCAL UNKNOWN DNS不能解析的
5./开头 指定一个文件
6.hosts allow = 192.168.0.0 EXCEPT 192.168.0.1
允许192.168.0网段主机访问,但192.168.0.1除外
技巧:
#tail /etc/samba/smb.conf
显示文件最后的十行
应用案例
要求:
1.所有员工都能够在公司内流动办公,但不管在哪台电脑上工作,都要把自己的文件数据保存在samba文件服务器上。
2.市场部,技术部都各有自己的目录,同一个部门的人共同拥有一个共享目录,其他部门的人都只能访问在服务器上自己个人的home目录
3.所有用户都不允许使用服务器上的shell
分析:
1.需要samba作为文件服务器,为所有用户创建账号和目录,用户默认都 在服务器上有一个home目录,只有认证通过才能看到。
2.需为市场部和技术部创建不同的组sales和tech,并且分配目录,把所有市场部员工加入sales组,技术部员工加入tech组,通过samba共享sales和tect
3.建立用户账号时,不分配shell
案例实施:
1.为所有用户创建账号和目录,不分配shell,假设市场部有tom,jack,技术部有red,blue,总经理ceo,财务finance
2.建组sales和tech,把所有市场部员工加入sales组,技术部员工加入tect组
3.创建两个目录/home/sales和/home/tech,并修改两个目录的权限,分别属于sales组和tect组
4.通过samba共享/home/sales和/home/tect
5.测试
如有错误,检查
/etc/samba/smbpasswd 确定账户
/etc/samba/smbusers 查看映射文件
tail /var/log/samba/redhat.log 查看/var/log/samba/目录下的日志
具体操作:
#vi /etc/samba/smb.conf 安全级别为user
#groupadd sales
#groupadd tech
#useradd –g sales –s /bin/false tom
#useradd –g sales –s /bin/false jack
#smbpasswd –a tom
#smbpasswd –a jack
#for user in red blue 批量添加用户red,blue
>do
> useradd –g tech –s /bin/false $user
> smbpasswd –a $user
> done
#useradd ceo
#useradd finance
#smbpasswd –a ceo
#smbpasswd –a finance
#mkdir /home/sales /home/tech
#chgrp sales /home/sales
#chgrp tech /home/tech
#chmod 770 /home/sales
#chmod 770 /home/tech
#chmod g+s /home/sales 防止权限发生混乱
#chmod g+s /home/tech
#vi /etc/samba/smb.conf
[sales]
path = /home/sales
comment = sales
public = no
valid users = @sales
write list = @sales
create mask = 0770 其实效果就是0760,因为samba服务器会自动把可执行权限拿掉
directory mask = 0770
[tech]
path = /home/tech
comment = tech
public = no
valid users = @tech
write list = @tech
create mask = 0770
directory mask = 0770
linux测试
1.smbclient –L 192.168.0.22 –U tom%tom
2.mount.cifs //192.168.0.22/ceo –o username=ceo%ceo
windows客户机映射网络驱动器,再设定“我的文档”位置,就可随时随地将文件保存在samba服务器
linux内核可以模拟RAID控制器,用来管理硬盘,但只支持级别0,1,4,5
RAID0 又称striping
把连续的数据访问分散到多个磁盘上来提高存储性能,速度最快,但最危险。
RAID1 又称Mirror或Mirroring
最大限度的保证用户数据的可用性和可修复性,用户数据100%自动复制到另外一个硬盘上,速度稍慢,因为要同时写多个硬盘。
RAID5 最少需三个硬盘
不对存储的数据时行备份,而把数据和对应的奇偶校验信息分别存储在不同的磁盘上,当一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
RAID0+1 也称RAID10
结合RAID0和RAID1的优点,很多公司在应用
Linux中的软件RAID
1.默认内核已支持软件RAID控制器
2.需安装raidtools工具来创建管理RAID设备,raidtools包含有RAID创建管理工具和默认的示范性配置文件,安装完后编辑/etc/raidtab这配置文件,它可以从raidtools中的示范配置文件里(在/usr/share/doc/raid-~/目录下)复制。最后用以下命令创建RAID设备:
#mkraid /dev/md0
#mkraid -f /dev/md0
#mkraid -R /dev/md0
后两个命令是强制创建,覆盖以前建的超级块。
但Fedora Core5不使用这个,而用mdadm工具。
3.软件RAID设备文件名:/dev/mdN (N=0,1,2…)
4.软件RAID设备可以当分区看待,需格式化后挂载
#mkfs.ext3 /dev/md1
#mount /dev/md1 /opt
5.停止RAID设备
#umount /opt
#raidstop /dev/md0
要永久删除RAID设备,还需删除raidtab文件,否则重启后RAID仍起作用。
6.显示RAID设备信息
#lsraid -A -a /dev/md1
7.RAID1故障模拟
假设sdb1与sdc1两个磁盘做RAID1,sdb1磁盘坏了,加入新一块磁盘sdd1。
#raidsetfaulty /dev/md1 /dev/sdb1
#raidhotadd /dev/md1 /dev/sdd1
#more /proc/mdstat 查看磁盘修复过程
#raidhotremove /dev/sdb1
最后还要修改raidtab文件。
使用mdadm来创建和管理RAID
RAID0
添加硬盘
RAID设备的成员是硬盘分区,需先对硬盘分区,分区不能在同一物理硬盘上
#fdisk /dev/sdb
n创建主分区,t分区类型fd,w写保存
#fdisk /dev/sdc
#mdadm –Cv /dev/md0 –l0 –n2 /dev/sdb1 /dev/sdc1
-C,--create 创建一个新的阵列
-v,verbose 显示细节
/dev/md0 阵列设备的名称
-l,--level= 阵列级别,如0,1,4,5,6
-n,--raid-devices= 阵列活动数目
/dev/sd[bc]1 阵列包含的设备列表
#more /proc/mdstat 查看阵列状态
#mkfs.ext3 /dev/md0 创建文件系统
#mount /dev/md0 /mnt/raid
让系统自动挂载,修改/etc/fstab,添加
/dev/md0 /mnt/raid ext3 defaults 0 0
RAID5 故障模拟
前面已创建了一个RAID5设备md0
#mdadm –Cv /dev/md0 –l5 –n3 –x1 –c128 /dev/sd[b,c,d,e]1
1.将/dev/sdb1标记为已损坏的设备
#mdadm /dev/md0 –f /dev/sdb1
这时阵列开始重构和恢复数据
2.移除损坏的设备
#mdadm /dev/md0 –r /dev/sdb1
3.将新设备添加到阵列
注意,一:对硬盘正确分区,二:添加设备名要与被移除的一致,如sdb1
#mdadm /dev/md0 –a /dev/sdb1
生成配置文件/etc/mdadm.conf
格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 ARRAY /dev/md10 level=raid10 num-devices=4 UUID=12334343dkfj
其中UUID信息通过#mdadm –D /dev/md10得到
#mdadm –Ds 扫描该文件信息
常用阵列维护命令
1.启用阵列
#mdadm –As /dev/md0
-A 启用已存在的阵列
-s 以/etc/mdadm.conf为依据
没有创建mdadm.conf文件,则采用如下方法启用
#mdadm –A /dev/md0 /dev/sd[bc]1
2.停止阵列
#mdadm –S /dev/md0
3.显示阵列详细信息
#mdadm –D /dev/md0
VG (Volume Group)卷组
LV (Logical Volume)逻辑卷
1.fdisk /dev/sdb
分区sdb1,sdb2,sdb3
分区类型8e(Linux LVM)
如果系统在使用sdb,需要重启,以便系统重新读取sdb的分区表信息
2.#pvcreate /dev/sdb[1-3] 初始化物理卷
3.#vgscan 扫描物理卷,创建卷组数据库,第一次创建lvm必须运行此命令
4.#vgcreate vg0 /dev/sdb1 /dev/sdb2 用sdb1,sdb2创建卷组vg0
#vgdisplay vg0 查看卷组vg0的信息
5.#lvcreate –n data –L 10M vg0 从vg0中创建一个新的名为data,大小10M的逻辑卷
6.#mkfs.ext3 /dev/vg0/data 格式化
7.#mount /dev/vg0/data /mnt
#lvdisplay /dev/vg0/data 查看逻辑卷data的分区情况
#lvcreate –n test –l 5 vg0 创建逻辑卷用-l指定块数,默认块大小4MB,即分配逻辑卷20MB大小,这个默认的物理扩展块的大小可以通过命令vgdispaly vg0查看PE SIZE的值而知道。
创建完逻辑卷一定要mkfs.ext3格式化才能使用
#lvscan 扫描逻辑卷,看它们的活动情况
#umount /mnt
#lvextend –L +20M /dev/vg0/data 扩大逻辑卷20M,要先umount分区,再扩大
#e2fsck –f /dev/vg0/data 强行检查data逻辑卷
#resize2fs /dev/vg0/data 重新定义分区大小
以上三步要按顺序进行,用以下一条命令可以达到上面三条命令相同的效果:
#e2fsadm –L +20M /dev/vg0/data
#pvscan 查看系统目前的物理卷情况
#vgextend vg0 /dev/sdb3 扩大卷组vg0,将分区sdb3加入卷组
#pvmove /dev/sdb1 移除物理卷
#vgreduce vg0 /dev/sdb1 从卷组中删除sdb1
pvmove将数据移走,但sdb1还在vg0内,还是属于卷组分区,vgreduce将sdb1从vg0中删除
创建卷组时,默认的PE大小4MB,允许的LV最大256G
#vgcreate –s 8M vg1 /dev/sdb1
-s 指定PE块大小
通过改变PE块大小,从而改变卷组允许支持的逻辑卷最大容量
技巧:
#clear 清屏
#df –lh 显示系统现在的分区挂载情况
建立快照(备份数据)
#lvcreate –s –L 52M –n snap /dev/vg0/data
-s 表示快照
-L 快照大小要大于或等于被创建的逻辑卷data
-n 快照名称
快照不用格式化即可使用
删除逻辑卷步骤
1.umount所有LV
2.lvremove /dev/vg0/data (通过lvscan查看)如有快照,先移除快照再移除逻辑卷。
3.#vgchange -an /dev/vg0 休眠vg以便删除,vgchange -ay /dev/vg0此命令可以激活vg。
4.#vgremove vg0
使用过程中,如有错误,可查看系统日志
#tail /var/log/message
如果要使根分区使用LVM设备,需先创建好LVM设备,再用lvmcreate-initrd命令在boot分区创建支持lvm功能的虚拟磁盘镜像文件,最后修改grub.conf加载此镜像文件即可。
设备sdb sdc sdd
1.将三个硬盘组成RAID5,实现安全性
2.在阵列md0上创建物理卷,卷组,逻辑卷
3.将数据转移到逻辑卷
具体操作:
1.fdisk 三个硬盘,分区类型fd,最后得到sdb1,sdc1,sdd1
2.创建raid设备
#mdadm –Cv /dev/md0 –l5 –n3 /dev/sd[b,c,d]1
3.#pvcreate /dev/md0 在阵列上初始化物理卷
4.#vgcreate vg /dev/md0
5.#lvcreate –n home –L 100M vg
#lvcreate –n var –L 100M vg
#mkfs.ext3 /dev/vg/home
#mkfs.ext3 /dev/vg/var
#mkdir /mnt/home
#mkdir /mnt/var
#mount /dev/vg/home /mnt/home
#mount /dev/vg/var /mnt/var
#cp –a /home/* /mnt/home
#cp –a /var/* /mnt/var
#df –lh
6.#vi /etc/fstab 添加
/dev/vg/home /home ext3 defaults 0 0
/dev/vg/var /var ext3 defaults 0 0
7.#vi /etc/mdadm.conf 创建文件,以便系统启动时能够自动识别raid设备,内容如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 ARRAY /dev/md0 level=raid5 num-devices=3 UUID=123545:erdfj3:dkf3jd
(UUID具体通过mdadm –D /dev/md0获取)
或者#vi /etc/rc.sysinit 修改此文件,搜索raid,在它下面添加条命令:raidstart /dev/md0
8.reboot
上面已正确地将数据移植到LVM上,下面将/分区移植到LVM上
#lvcreate –n root –L 200M vg
#mkfs.ext3 /dev/vg/root
#mount /dev/vg/root /mnt
#cd /mnt
#mkdir proc tmp var home opt cdrom media mnt srv selinux
#cd /
#cp –a bin dev etc lib sbin root usr sys /mnt &
当操作的过程时间太长,可按ctrl+z,再输入bg,让它后台运行
技巧:
#rm –rf /mnt/bin 强行删除目录
#\ls 不高亮显示
RAID5的磁盘容量利用率为2/3
利用mkinitrd创建一个虚拟的磁盘映像文件
#mkdir /boot/test
#mkinitrd –v –preload raid5 –preload lvm-m0d /boot/test/initrd-lvm-$(uname-r)img $(uname –r)
在里面添加加载根分区所需的raid设备文件,驱动程序,命令mdadm等
#cd /boot/test
#mv initrd-lvm-2.6.15-1.2054_FC.img initrd-lvm-2.6.15-1.2054_FC.img.gz
#gunzip init-lvm-2.6.15-1.2054_FC.img.gz
#cpio –idv < init-lvm-2.6.15-1.2054_FC.img
#rm initrd-lvm-2.6.15-1.2054_FC.img
添加设备文件,复制文件时要注意-a参数
#cp –a /dev/vg dev
#cp –a /dev/mapper dev
#cp –a /dev/md0 dev
#cp –a /dev/sd[abcd] dev
#cp –a /dev/sd[abcd]1 dev
#vi init 添加,一定要在mkblkders后面添加,系统启动后执行的第一个脚本,自动激活磁盘阵列
mdadm –As
vgscan
vgchange –a y
修改加载的root分区
mount –o defaults --ro -t ext3 /dev/vg/root /sysroot
#cp /sbin/vgscan bin
#cp /sbin/vgchange bin
#cp /sbin/mdadm bin
#ldd bin/mdadm 查看该命令所需的库文件
#cp /lib/libc.so.6 lib (字母o)添加命令所需库文件
#cp /lib/ld-linux.so.1 lib
上面的mdadm -As会根据配置文件mdadm.conf激活阵列,所以将/etc/mdadm.conf拷过来
#cp /etc/mdadm.conf etc (之前已经手工创建了mdadm.conf),添加配置文件
最后确认/boot/test目录里的文件准备打包
#cd /boot/test
#find -print | cpio -oc > /boot/initrd-lvm-$(uname -r).img
#cd /boot
#gzip initrd-lvm-2.6.15-1.2054_FC.img -c > init-lvm-2.6.15-1.2054_FC.img.gz
这样将文件恢复成一个虚拟磁盘映像文件
修改引导配置
#vi /boot/grub/grub.conf
修改defaults=1
添加
title Fedora LVM
root (hd0,0)
kernel /boot/vmlinuxz-2.6.15-1.2054_FC ro root=/dev/vg/root
和/boot目录里的vmlinuxz对应,注意root=/dev/vg/root的修改
initrd /boot/initrd-lvm-2.6.15-1.2054_FC.img.gz
保存退出
#mount /dev/vg/root /mnt
#cd /mnt
#vi etc/fstab 修改
/dev/vg/root / ext3 defaults 1 1
这样系统启动就会将/dev/vg/root 作为主分区使用
完成所有修改
#reboot
从启后ls /boot应该没有东西,因为物理boot在sda1分区里
可以#mount /dev/sda1 /mnt 再看看里面的boot内容
证明已经成功的转移了根分区,完成了案例提出的要求。
在进行这个实验时,主要是对磁盘映像文件的修改,修改init文件时,要注意加载模块的顺序,先创建块设备,才能使用块文件。
使用mkinitrd创建文件后,要注意用file命令查看文件类型,从而进一步对映像文件进行解压,提取等操作。当修改完磁盘映像文件initrd后,要知道如何打包、压缩。注意如何使用cpio命令。
21端口传输控制信息
20端口传输数据
验证信息采用明文传输
匿名用户anonymous
binary模式传输程序、图片等二进制文件
ascii模式舆文本文件
安装vsftpd
1.下载源代码vsftpd-2.0.5.tar.gz
2.编译源程序,可参考帮助文件INSTALL
#tar zxvf vsftpd-2.0.5.tar.gz
#cd vsftpd-2.0.5
#make
#make install
3.安装配置文件
#cp vsftpd.conf /etc
#cp RedHat/vsftpd.pam /etc/pam.d/ftp
4.编缉配置文件/etc/vsftpd.conf
5.启动服务器
#/usr/local/sbin/vsftpd &
配置文件
listen=YES 服务器独立运行
服务器默认配置文件,不允许其他用户登录,只能匿名登录,匿名登录需要先建/var/ftp目录
finger 用户信息查看工具
finger ftp 确认是否有ftp这个用户
为匿名用户可登录,要创建ftp用户和/var/ftp目录
#mkdir /var/ftp
#chown root.root /var/ftp
#chmod og-w /var/ftp
为使vsftpd开机自动进行,在/etc/rc.local添加/usr/local/sbin/vsftpd &
#netstat -tnl 查看本地已启动的服务
vsftpd可以以两种方式运行
让vsftpd独立运行,关闭xinetd的方式
#chkconfig vsftpd off
vsftpd的配置文件
anonymous_enabled=YES #允许匿名登录
local_enable=YES #允许本地用户登录
write_enable=YES #允许客户端写
local_umask=022 #本地用户新建文件的umask值
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
dirmessage_enable=YES #允许使用目录的消息
ftpd_banner=Welcome to redhat #登录欢迎词
ls_recure_enable=YES #允许客户端使用ls -R命令
listen=YES #监听模式
修改配置文件后,重新启动vsftpd服务
#killall -9 vsftpd 强行终止
#/usr/local/sbin/vsftpd & 启动
#id redhat 查看redhat用户信息(组id,所属组)
#mkdir /var/ftp/incoming #为匿名用户开放上传incoming目录
#chgrp ftp incoming
#chmod g+w incoming
chroot环境 (用户不能改变主目录,不能查看主目录外的其他目录,可以隐藏主目录的位置)
/etc/vsftpd.conf:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
如果把chroot_local_user=YES,则本地所有的用户都变成chroot环境,它的默认值为NO。
/etc/vsftpd.chroot_list: (锁定主目录的用户列表)
redhat
chiaitlab
#killall -HUP vsftpd
用户控制
#vi /etc/vsftpd.conf添加
userlist_enable=YES 启用用户列表
userlist_file=/etc/ftpusers 定义用户列表文件位置
userlist_deny =YES 拒绝列表的用户
=NO 只允许列表的用户登录
要达到上面同样的效果,还可以修改/etc/pam.d/vsftpd文件。默认为拒绝列表的用户:
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
只要把上面的deny改成allow就可以允许列表的用户。
#vi /etc/ftpusers
编缉用户列表,将要进行控制的用户添加进去,一行一个用户
#ldd vsftpd 显示依赖的共享库
默认编译安装没有支持PAM模块,通过ldd /usr/sbin/vsftpd看是否在依赖于libpam.so.0,如果有证明服务支持PAM。
通过光盘RPM安装(第二张)
#rpm -ivh vsftpd-2.0.4-1.2.i386.rpm
配置文件及用户列表在/etc/vsftpd目录下
pam服务名 /etc/pam.d/vsftpd
vsftpd在/usr/sbin/vsftpd
ftp默认拒绝id 500以下的用户登录
虚拟账号
对于用DB库存储用户及密码,先看系统是否有相应软件包
#rpm -qa | grep db4
db4-devel 第三张盘
db4 第一张盘
db4-utils 第4张盘
1.建虚拟账号users.txt
tom
123
jack
123
用户密码各占一行
#db_load -T -t hash -f users.txt /etc/vsftpd/vsftpd_login.db
#chmod 600 /etc/vsftpd/vsftpd_login.db
2.修改/etc/pam.d/vsftpd 增加(将其他注释掉,否则有可能会出现虚拟用户无法登陆的错误)
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
3.建虚拟账号目录
#useradd vuser
!!注意,编译安装vsftpd时,首先检查是否安装了pam-devel(FC5在第4张盘),否则编译选项定义了pam,但依然无法使用pam服务,最好用ldd确定一下
4.编缉/etc/vsftpd/vsftpd.conf
anonymous_enable = NO
local_enable =YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
guest_enable=YES
guest_username=vuser
anon_world_readable_only=NO (用于获得目录列表,安全起见不推荐)
如果登录时出现
500 OOPS: priv_sock_get_result
Connection closed by remote host.
这样的错误。需要升级pam
运行
#yum update pam
Proftpd
#tar jxvf proftpd-1.2.9.tar.gz2
#cd proftpd-1.2.9
#./configure 生成与系统有关的配置文件
#make 编译把源程序编译成二进制文件
#make install
#/usr/local/sbin/proftpd
配置文件:/etc/local/etc/proftpd.conf
vi使用技巧:
yy 复制当前行
p 粘贴
/ 查找
n 查找下一个
查找与查找下一个配合使用
shift+D 在当前行删除光标后的所有字符
#netstat -tnlp 显示进程及ID
为Grub设置密码,防止用户修改或编缉Grub的引导菜单
#grub-md5-crypt 产生一个md5加密的字符串
#grub-md5-crypt >> /etc/grub.conf
#vi /etc/grub.conf
password --md5 $1#123abckdfj343k $1#123abckdfj343k为上面生成的加密字符串
这样在启动时,要编缉引导菜单必须输入密码,在引导菜单最后加上 s ,可进入单用户模式。
find / -perm -002 查找文件权限中其他人具有写权限的文件,0表示用户,组不管
find / -perm +6000 查找文件,不管用户,组其他,只要权限中含有6(读写)即满足要求。
- 表示权限位必须具有的
+ 表示权限位可能有或无
当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,最后根据服务文件的内容选择具体的PAM模块进行处理。
通过ldd查看服务程序在编译时是否使用了libpam.so,决定服务程序是否支持PAM认证。
具体的pam文件放在/lib/security目录下,服务文件放在/etc/pam.d目录下
PAM服务文件格式
eg:
auth required pam_security.so
auth required pam_stack.so service=system-auth
service表示调用子服务文件
Module-type:
auth 检查用户和密码,分配权限
account 检查账号是否过期,是否有权登录
session 从用户登录成功到退出的会话控制
password 控制用户改密码的过程
control-flag:
required 要求矣须通过,否则结束退出
requisite 如果不通过还可继续向下认证,后面有一通过即可。
sufficient 通过则不需要向下认证
optional 可选项
常用PAM服务文件
login -------/etc/pam.d/login
ipop3d -------/etc/pam.d/pop
vsftpd -------/etc/pam.d/ftp(编译安装)或/etc/pam.d/vsftpd(rpm安装)
sshd -------/etc/pam.d/sshd
su -------/etc/pam.d/su
imap -------/etc/pam.d/imap
/lib/security目录下,各个pam模块的作用,可参考/usr/share/doc/pam-0.99.3.0下的帮助文件。
相同类型Module-type组成一个堆栈。
常用PAM模块
pam_access.so 控制访问者地址与账号名称
pam_listfile.so 控制访问者的账号名称或登录位置
pam_limits.so 控制为用户分配的资源
pam_rootok.so 对管理员(uid=0)无条件允许通过
pam_userdb.so 设定独立用户账号数据库认证
pam_access.so模块的使用―――控制访问sshd服务的主机和用户
1.修改需使用这个模块的服务文件,如sshd: /etc/pam.d/sshd添加
account required pam_access.so
2.修改模块的配置文件
/etc/security/access.conf
- : redhat : ALL EXCEPT 192.168.0. (格式)
3.测试
ssh redhat@192.168.0.22
ssh redhat@127.0.0.1
pam_access.so根据主机、IP、用户、拒绝或允许访问。
pam_listfile.so的应用 (比pam_access.so更加详细控制)
1.首先查看它的帮助文件,看它的具体格式,参数如何
#less /usr/share/doc/pam-0.99.3.0/txts/README.pam_listfile
item user,tty,group 说明列表文件中的内容
sense allow,deny 拒绝或允许文件中的用户
file 指定一个文件,内容根据item项来添加
onerr succeed,fail 当模块本身产生错误时,返回的值,如无法打开file指定的文件,一般设为succeed
2.将模块应用到sshd服务
将上面添加的pam_access.so清掉,然后在/etc/pam.d/sshd中添加(第一行)
auth required pam_listfile.so item=user sense=deny file=/etc/denyuser onerr=succeed
注意添加的位置顺序,否则看不到效果
3.创建编缉列表文件
#echo “redhat” >/etc/denyuser
4.测试
#ssh -l redhat 192.168.0.22 失败
#ssh -l chinaitlab 192.168.0.22 成功
#w 显示已登录的用户及最近的一次操作
pam_limits.so的应用
1.查看帮助文件,确认它的配置文件位置,参数模式
#less /usr/share/doc/pam-0.99.3.0/txt/README.pam_limits
<domain> <type> <item> <value>
<domain> 用户名或组名
<type> soft软限制
hard硬限制(不能达到的)
<item> 限制的内容,fsize文件大小,nproc最大进程数,maxlogins用户登录次数
2.将模块应用到sshd服务,修改服务文件
#vi /etc/pam.d/sshd 添加:
session required pam_limits.so
session 控制用户进程的登录次数,文件大小,通过控制用户的会话进程来限制用户使用的资源
3.编缉pam_limits.so的配置文件/etc/security/limits.conf
redhat hard maxlogins 2
限制redhat登录到sshd服务的次数,不能达到2。
4.测试
#ssh -l redhat 192.168.0.22 第1个
#ssh -l redhat 192.168.0.22 第2个
表示同时最多可以有1个redhat用户登录
pam_rootok.so的应用
#chfn 改变用户的finger信息
普通用户使用这个命令修改信息时,需要输入密码才能使用,而root用户则不需要。
分析:
#more /etc/pam.d/chfn
第一行为auth sufficient pam_rootok.so
因为chfn的pam服务文件的第一行应用了pam_rootok.so模块,所以当root用户使用chfn时不需验证,不需要再往下,直接通过。
pam_userdb.so模块需要一个db数据库储存用户信息,具体如何使用可参考前面的vsftpd虚拟用户。
在使用PAM模块时,注意参考README.pam帮助。
1、寻找samba官方网站,找到最快的镜象服务器
2、下载最新软件包和数字签名
3、校验数字签名
#wget http://us1.smaba.org/samba/ftp/smaba_3.0.6.tar.asc 下载数字签名
#wget http://us1.samba.org/samba/ftp/samba-pubkey.asc 下载公钥文件
#gpg --import samba-pubkey.asc 导入公钥文件
#gzip -d samba-3.0.0.tar.gz 解压缩软件包
#gpg --verify samba-3.0.0.tar.asc 校验数字签名
4.编译安装升级
#tar xvf samba-3.0.0.tar
#cd samba-3.0.6
#cd source
#./configure
#make
#make install
原文不需保密的数字签名名实现方法
1.发方A对原文进行哈希运算,得到数字摘要MD
2.发方A用自己的私钥对MD加密,得到数字签名DS
3.将原文与DS一起发送到接收方B
4.接收方B使用A的公钥解密DS得到MD,并对原文进行Hash运算
5.将运算得出的MD值与解密得出的MD值比较,匹配即成功。
原文保密的数字签名及实现方法
1.发方对原文进行哈希运算,得到数字摘要MD
2.发方A用自己的私钥对MD加密得到DS
3.发方用IDES对称算法的对称密钥SK对原文SD、A的公钥进行加密,得到加密信息E
4.发方A用收方B的公钥加密对称密钥SK,形成数字信封DE
5.发送方A将加密信息E和信封DE发送到接收方B
6.接收方B用自己的私钥解密信封DE取得SK
7.接收方B用SK解密信息E,得到原文、SD、A的公钥
8.使用A的公钥解密SD得到原文的MD
9.接收方B对原文进行Hash运算得到MD’
10.如MD与MD’相等,说明数据没被篡改,签名真实。
示范二:为Kernel打补丁
1.准备好2.4.26版本的内核文件linux-2.4.26.tar.bz2
2.下载2.4.27版本的补丁patch-2.4.27.bz2和md5校验文件
3.打补丁
#tar xvjf linux-2.4.26.tar.bz2
#bzcat patch-2.4.27.bz2|patch -p0 -p0指使用原始路径
#mv linux-2.4.26 linux-2.4.27
4.编译新内核替换旧内核
#cd linux-2.4.27;make menuconfig
#make dep bzImage modules modules_install install
#nmap 192.168.0.22 默认扫描TCP端口
#nmap -sU -sR -sS 192.168.0.22
-sU UDP扫描
-sR RPC扫描
-sS TCP SYN扫描
可扫描单个主机或IP段192.168.0.0/24
#grep syslog /etc/services 搜索文件中含有syslog字符串的行,搜索文件中的字符串。
嗅探器tcpdump
#tcpdump -i eth0 -X dst 192.168.0.22
-i eth0 指定监听的接口
-X 以十六进制显示包头信息
dst 指定目标主机地址或端口
#tcpdump -I eth0 -X dst 192.168.0.22 and dst port 21
监听数据包目标为192.168.0.22并且端口为21的数据
日志服务器syslog
配置文件/etc/syslog.conf
左边指定消息类型 右边指定消息记录位置
*.info;mail.none;authpriv.none;cron.none /var/log/messages
任何程序的信息,只要是info级别以上都记录在/var/log/messages,但不记录mail,authpriv,cron的消息
mail.* /var/log/maillog
邮件的所有消息都记录在/var/log/maillog文件中
如修改了配置文件需从新启动服务
#service syslog restart
#vi /etc/syslog.conf
*.* @192.168.0.22
将所有程序的所有消息发送给192.168.0.22主机处理,但同时192.168.0.22要开启允许远程消息
#vi /etc/sysconfig/syslog 修改
SYSLOGD_OPTIONS=”-m 0 -r -x”
#service syslog restart
日志服务端口默认514/udp
#netstat -unl | grep :514 显示日志服务是否运行
-u UDP协议
-t TCP协议
-n 用数值表示主机地址、端口号
-l 仅显示正在监听的进程
-p 显示进程名及PID
日志系统
1.编缉/etc/syslog.conf
2.重启日志服务器
#service syslog restart
3.检查日志/var/log/*
安全信息放在/var/log/secure里
邮件信息放在/var/log/maillog
计划任务信息/var/log/cron
大部分信息放在/var/log/messages
#tail -f messages 监视系统信息的变化
推荐日志分析软件SWATCH