命令行编辑的几个辅助操作
用途:用于查找文件或目录
格式:find [查找范围] [查找条件]
常用查找条件
-name:按文件名称查找
-size:按文件大小查找
-user:按文件属主查找
-type:按文件类型查找
-print : 打印查找结果
Bash的命令历史
保存用户曾经执行过的命令操作
存放位置:~/.bash_history 文件
查看历史命令
history
目录 文件
文件权限前的第一个字母用来标识文件类型:
-:一般文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
p:人工管道
文件权限系统,将操作文件的用户都分成三类
文件的拥有者(u)
文件所属组的成员(g)
其他用户(o)
读(r)4 :用户是否有权力读文件的内容
写(w)2 :用户是否有权利改变文件的内容
执行(x)1 :用户是否有权利执行文件
目录权限
目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录。如下图所示:
____________________________________________________________________
| r | w | x |
-------------------------------------------------------------------------------------------------------------
| 可列出目录中的文件 | 可在目录中删除或建立文件 | 可搜索或进入目录 |
-------------------------------------------------------------------------------------------------------------
如果把同组用户或其他用户针对某一目录的权限设置为- - x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目录并不妨碍他执行该目录中的文件。
[kevinz@stationXX kevinz] $ ls –il ( 显示file1和file2的属性)
4029 -rw-r--r– 2 root root 0 Jul 25 16:13 file1
inode号 权限 硬链接数 文件的拥有者 文件的拥有组 文件大小 最后修改时间 文件名
find
find 是我们最常用的文件查找工具,相比slocat 而言它有纪实性的优点,语法如下:
find [路径] [参数] [表达式] 例如:
[kevinz@stationXX kevinz] $ find /usr/share/doc -name filename
命令 路径 参数 表达式
find的常用find参数如下:
-user:根据文件拥有者寻找文件
-group:根据文件所属组寻找文件
-name:根据文件名寻找文件
-perm:根据文件权限寻找文件
-size:根据文件大小寻找文件
-size +1M 大于1M的文件
-size -10M 小于10M的文件
-type:根据文件类型寻找文件,参数对应c、b、l、f、d
f 查找的文件类型为文件
d 目录
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
find的表达式使用通配符时需要使用“”圈界。例如:
[kevinz@stationXX kevinz] $ find . –name “*.html”
find 操作找到的文件
当使用-exec 指令时,{} \ ; 必须一同添加 例如:
[kevinz@stationXX kevinz] $find . –exec ls {} \;
当操作指令需要征询用户意见,可以添加-ok自动回答‘是’ 例如:
[kevinz@stationXX kevinz] $find . –ok rm {} \;
添加用户帐号
useradd命令
格式:useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
用户帐号的初始配置文件
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
修改用户帐号的属性
usermod命令
格式:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
删除用户帐号
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
useradd 增加用户
userdel 删除用户
usermod 修改用户
groupadd 增加组
groupdel 删除组
groupmod 修改组
passwd 设置密码
chpasswd 用文件配置修改密码
更该文件的所有权
改变文件的所有权命令chown
改变用户分组命令chgrp
改变文件属性命令chmod
修改密码的有效期
chage命令
格式:chage [选项]... 用户帐号名
常用命令选项
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
文件的权限和SetUID,SetGID
文件是通过SetUID位和SetGID位来控制访问权限的。
SetUID位的作用是通过二进制位进行设置的方法使程序按照其所有者的访问权限运行,不再受运行它的用户的访问权限的限制。
当用户运行一个应用程序的时候,这个程序将继承该用户所具有的全部权利(或者限制)。用户不能够读取这个文件,那么他运行的程序也不能读取该文件。这个权限可能会与该程序文件(通常叫做二进制文件)所有者所具有的权限有所不同。
例如:ls程序是归根用户所有的,它的访问权限被设置为每一个用户都能够执行,某用户young运行了ls命令,限制这份ls命令的是分配给用户young的访问权限而不是根用户。
如果把一个执行程序的SetUID位设置为on,并且让这个命令的二进制文件归属于根用户,那么就意味着如果用户young运行这个命令,这命令就是以根用户的访问权限运行的,不再受到用户young访问权限的限制。
SetGID位的是作用于文件用户分组的设置情况
如果SGID是设定在目录上面,则在该目录内所建立的文件或目录的所属组,将会自动 成为此目录的所属组。
如果想激活SetUID或者SetGID位,需要使用chmod命令
如果想把某个程序设置为SetUID状态,在打算分配给它的访问权限数值前面加上一个数字4 , 或者把所有者的可执行权限x改为s. chmod u+s ./file
如果想把某个程序设置为SetGID状态,在打算分配给它的访问权限数值前面加上一个数字2 , 或者把所属组的可执行权限x改为s. chmod g+s ./file
# chmod 4755 /bin/ls
文件的粘滞位(Sticky bit)
-t
作用:
为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件
chmod a+t aa.bat
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。
文件ACL权限 用于针对单一使用者,单一文件或目录来进行r,w,x的权限规范.
查看:
$ getfacl filename
修改 :
$ setfacl -m u:username:rw filename
$ setfacl -m g:groupname:rw filename
删除 :
$ setfacl -x u:username filename
启动服务(httpd, vsfptd等)
service XXX start 启动服务
stop 停止服务
restart 重启服务
实现服务开机启动
chkconfig XXX on/off
设置文件系统的自动挂载
/etc/fstab配置文件
包含了需要开机后自动挂载的文件系统记录
[root@localhost ~]# vi /etc/fstab
设备位置 挂载点 文件系统类型 开机是否检测 优先级
磁盘错误 (默认为0)
(1:检测 0:不检测)
/dev/VolGroup00/LogVol00 / ext4 defaults 0 0
UUID=硬盘的UUID号 /boot
(设备位置建议使用UUID号)
Linux 定时任务
命令: at
用于在制定的时间点一次性的执行命令.
打开at服务:
service atd start
at 23:45
at> shutdown -h now 此处输入要执行的命令
完成按ctrl + d 结束
命令: crontab
使用权限: root用户和crontab文件的所有者
crontab格式语法:
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;
命令行中-l选项的作用是显示用户crontab文件的内容。
使用命令crontab -e命令编辑当前用户user的cron(c)作业。
使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。
执行命令crontab -u user -r即可删除当前用户的所有的cron作业。
用户crontab文件的基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
Find命令的使用
exec选项:
-exec:对搜索的结构指令指定的shell命令。注意格式要正确:"-exec 命令 {} \;"
在}和\之间一定要有空格才行;
{}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。
find命令指令实例:
find . - name ‘main*’ - exec more {} \;
文件内容操作命令—— grep
用途:在文件中查找并显示包含指定字符串的行
格式:grep [选项]... 查找条件 目标文件
常用命令选项
-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行
查找条件设置
要查找的字符串以双引号括起来
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
基本的正则表达式
d | 文字:字母 “d” | dog |
* | 修饰符:前一个字符出现零次或多次 | hel*o |
. | 通配符:任意单个字符 | test.txt |
[] | 通配符:集合中的任意单个字符 | file[1234] |
[^] | 通配符:不在集合中的任意单个字符 | file[^0-9] |
^ | 定位点:行首 | ^test |
$ | 定位点:行尾 | test$ |
.* | .(任一字符)与*(零或以上)的组合 | ^test.*123 |
\ | 将下一个字符视为文字 | test\.$ |
\< | 锚定单词的开始 | \<love lovea lover |
\> | 锚定单词的结束 | love\> alove glove |
归档及压缩命令 —— tar
tar命令
用途:制作归档文件、释放归档文件
格式:tar [选项]... 归档文件名 源文件或目录
tar [选项]... 归档文件名 [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
制作压缩包文件
tar jcf test.tar.bz2 /etc/httpd/
释放压缩包文件
tar jxf test.tar.bz2 -C /
系统监视
uname:显示系统信息
hostname:显示主机名
last:列出最近的用户登录
lastlog:列出每一个用户的最近登录情况
free:显示内存使用状况
top:系统监视器
查询进程的指令:
ps [option]
pstree可以用来以树状的方式表现进程的父子关系
top是一个常用的系统监视工具。
规划硬盘中的分区
fdisk命令
用途:在交互式的操作环境中管理磁盘分区
格式:fdisk [磁盘设备]
fdisk -cu /dev/sdb
交互模式中的常用指令
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出
在分区中创建文件系统
将新硬盘分好区以后,还需要对分区进行格式化(即创建文件系统),并挂载到Linux系统中的指定目录下,然后才能用于存储文件、目录等数据
mkfs命令
用途:Make Filesystem,创建文件系统(格式化)
格式:mkfs -t 文件系统类型 分区设备
-t 的参数如下
ext4 ext3 ...
查看RHEL支持的分区类型,可以输入 mkfs. 再两次tab查看.
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.vfat
mkfs.ext2 mkfs.ext4 mkfs.msdos
去掉 mkfs.就是 -t 的参数
mkswap命令
用途:Make Swap,创建交换文件系统
格式:mkswap 分区设备
格式化交换分区 mkswap <分区设备>
[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 2006929 kB
启用交换分区 swapon <分区设备>
[root@localhost ~]# swapon /dev/sdb6
[root@localhost ~]# free | grep -i swap
Swap: 3008456 0 3008456
停用交换分区 swapoff <分区设备>
[root@localhost ~]# swapoff /dev/sdb6
查看交换空间 swapon -s
[root@localhost ~]# swapon -s
free命令 查看内存
功能说明:显示内存状态。
语 法: free [-bkmotV][-s <间隔秒数>]
补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参 数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
光盘制作iso镜像
cp /dev/cdrom /aaa.iso
挂载光盘镜像
mount -o loop ISO镜像文件 挂载点目录
通过分区加密启用数据保密
1.使用fdisk创建新分区
2. cryptsetup luksFormat /dev/sda7 对新分区进行加密,并设置解密密钥.
Are you sure Type Uppercase yes :YES
ENTER LUKS PASSPHRASE:123
VERIFY PASSPHASE:123
3. cryptsetup luksOpen /dev/sda7 test 会将加密的卷/dev/sda7解锁为/dev/mapper/test
4. 在解密的卷上创建ext4文件系统:
mkfs –t ext4 /dev/mapper/test
5. 创建目录挂载点,并挂载文件系统:
mkdir /test
mount /dev/mapper/test /test
6. 配置自动挂载
在.etc/fstab加入如下行
/dev/mapper/secret /mnt/testsecret ext4 defaults 0 0
逻辑卷LVM
/boot分区用于存放引导文件,不能应用LVM机制
LVM机制的基本概念
PV(Physical Volume,物理卷)
整个硬盘,或使用fdisk等工具建立的普通分区.包括许多默认4MB大小的PE(Physical Extent,基本单元)
VG(Volume Group,卷组)
一个或多个物理卷组合而成的整体
LV(Logical Volume,逻辑卷)
从卷组中分割出的一块空间,用于建立文件系统
LVM的管理命令
功能 物理卷管理 卷组管理 逻辑卷管理
Scan 扫描 pvscan vgscan lvscan
Create 建立 pvcreate vgcreate lvcreate
Display 显示 pvdisplay vgdisplay lvdisplay
Remove 删除 pvremove vgremove lvremove
Reduce 缩减 vgreduce lvreduce
Extend 扩展 vgextend lvextend
主要命令的用法
pvcreate 设备名
vgcreate -s 8M 卷组名 物理卷名1 物理卷名2
vgextend 卷组名 物理卷名1 物理卷名2
vgreduce 卷组名 物理卷名1 物理卷名2
lvcreate -L 大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名
lvreduce –L +大小 /dev/卷组名/逻辑卷名
准备物理卷
1.fdisk (type 0x8e linux LVM)
2.pvcreate /dev/sdb5
pvcreate /dev/sdb6
pvcreate /dev/sdb7
1.lvcreate –n testlv –l 100 /dev/testvg
挂载逻辑卷
mkdir /testlv
mount /dev/testvg/testlv /testlv
扩展逻辑卷和ext4文件系统
ping 查看网络连通性
traceroute 测试当前主机到目标主机之间经过的所有网络节点.
hostname 显示当前主机名称.
nslookup 可以进行域名的查询.
ip配置命令
ifconfig eth0 192.268.0.1
设置网关
route add default gw 192.168.0.154
主机名设置命令
hostname server2.example.com
以上命令即时生效, 重启后丢失
配置文件设置网络参数
网络接口的文件位于目录“/etc/sysconfig/network-scripts/”中
网络接口eth0的配置文件是ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 设备名
ONBOOT=yes 设置网络接口是否在启动时启用
BOOTPROTO=static BOOTPROTO用于设置网络接口是配置为静态地址(static)或是配
置为使用DHCP(dhcp)获得地址
IPADDR=192.168.152.133 IPADDR用于设置网络接口的ip地址
NETMASK=255.255.255.0 NETMASK用于设置网络接口的子网掩码
GATEWAY=192.168.152.2 GATEWAY用于设置网络接口的缺省网关地址
DNS1=192.168.0.254
主机名称配置文件
network文件位于“/etc/sysconfig/”目录中,其中保存了主机的名称配置
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
在文件“/etc/sysconfig/network”中对HOSTNAME配置项进行配置后,需要重新启动计算机使新设置的主机名生效
本地主机名称解析文件
“/etc/hosts”文件保存本地的主机名与ip地址的对应记录
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
hosts文件和DNS服务器功能的比较
在hosts文件中设置主机名称的解析更加灵活,可以立即生效
hosts文件中的设置内容只在当前的Linux主机中有效,无法作用于整个网络
hosts文件无法完全取代DNS服务器的作用,只能完成辅助的本地主机名称解析
域名服务器配置文件
系统使用的DNS服务器的ip地址保存在“resolv.conf”文件中
# cat /etc/resolv.conf
nameserver 192.168.152.2
文件中最多可以有3个“nameserver”配置记录
系统会优先使用文件中前面的“nameserver”配置记录
当前面的DNS服务器无效时系统会自动使用后面的DNS服务器进行域名解析
查看ip地址和子网掩码: ip addr(ifconfig)
/etc/sysconfig/network-scripts/ifcfg-eth0
查看路由和默认网关:ip route(route)
/etc/sysconfig/network-scripts/ifcfg-eth0
查看系统主机名:hostname
/etc/sysconfig/network
查看DNS服务器地址:nslookup(host)
/etc/resolv.conf
挂载网络文件系统
NFS( Network File System)
showmount –e nfsserver.domain
查询远程主机上共享的目录
mkdir /remote1
创建本地挂载点目录
mount nfsserver.domain:/exported/path /remote1
挂载远程主机的目录
开机自动挂载, 在/etc/fstab文件添加
nfsserver.domain:/exported/path /remote1 nfs default 0 0
文件系统类型为nfs
自动挂载
修改/etc/auto.master
添加
/server /etc/auto.server
挂载点的本地位置
创建 /etc/auto.server文件
public -ro 192.168.0.254:/exported/path
远程文件(目录)映射到本地的名称 权限 远程文件(目录)的位置
直接访问/server/public目录
LDAP网络用户配置
1.服务器的完全限定主机名
Instructor.example.com
2.基础DN,用于搜索用户定义
dc=example, dc=com
3.认证机构CA证书,用于签署LDAP服务器的SSL证书
http://instructor.example.com/pub/EXAMPLE-CA
安装directory-client软件包,包括sssd、authconfig-gtk、oddjob-mkhomedir
使用getent passwd username 验证正在使用的账户信息
4.网络挂载主目录
1.showmount –e nfsserver.domain获取导出的路径
2.getent passwd username获取所需主目录挂载点
3.vim /etc/auto.master 配置间接映射
/home/guests /etc/auto.guests
创建/etc/auto.guests 文件,配置共享目录
ldapuser1 –rw instructor:/home/guests/ldapuser1
ldapuser2 –rw instructor:/home/guests/ldapuser2
or
* -rw instructor:/home/guests/&
重新启动服务
service autofs stop
service autofs start
检查硬盘空间
df 检查硬盘的剩余硬盘空间
df 文件名
检查文件所在的磁盘分区的剩余空间
-h 参数可以使数据更容易阅读.
du 检查目录下所有子目录的使用空间.
用法同df
ls -i 参数可以检视没一个文件所对应的inode 数量
ln -s 源文件 目标文件 建立软连接.
ln 源文件 目标文件 建立硬链接.
VI编辑器进阶
VI中指令模式下按G切换到最后一行,nG切换到第n行,1G切换到第一行
<ctrl + d> go down half a screen
<ctrl + u> go up half a screen
H go to first line on the screen
M go to middle line on the screen
L go to last line on the screen
z<enter> make current line first line
z- make current line last line
!}fmt -w60 从文件输入再输出到.文件.
linux中extend mode:search and replace
sed search and replace
替换当前行
s/<要替换的内容>/<替换成>
ex: s/this/that
这种方式只能替换每行的第一个目标,要替换每行的所有目标用 g;
ex: s/this/that g
1,10 替换从第一行到第十行的内容
ex: 1,10s/this/that
1,$(or %) 替换从第一行到最后的内容 ,用来区隔从哪里到哪里 $表示到最后
ex: 1,$s/this/that
. 表示当前行 .+10表示当前行之后的第十行 .-10表示当前行之前的第十行
ex: .,.+3s/this/that/g
advanced reading and saving
:r file1 read file1 into current file
:1,20w file2 write line 1through 20 to the file2
:1,$w file3 write entire file to the file3
:1,20w>>file4 append lines 1 through 20 to the file4
vi testvi1 testvi2 testvi3 同时打开3个文件
多文件操作
:n move to the next file
:rew move to the first file
:n# jump to the prevous file
vi Configure
:set impotant settings
:set all detailed settings
13 字符串操作
head tail wc 命令
uniq \
vimtutor 关于vim的使用教程.
NTP服务
NTP配置文件
#/etc/ntp .conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default ignore
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer
restrict 192.168.0.101 kod nomodify notrap
restrict 192.168.0.2
server 192.168.0.2
server 192.168.0.3
peer 192.168.0.101
修改配置文件后, 执行
service ntpd restart
重启ntp服务
ssh服务
主要软件包:openssh-server、openssh-clients
服务名:sshd
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
登录
ssh student@192.168.0.100
ssh -l student 192.168.0.100
构建密钥对验证的SSH登录体系
生成公钥私钥对
ssh-keygen -t rsa
生成的文件
~/.ssh/id_rsa 私钥
~/.ssh/id_rsa.pub 公钥
将公钥文件上传至服务器
ssh-copy-id –i id_rsa.pub user@remote
配置 VNC 服务
1.下载tigervnc软件
yum install tigervnc-server
2.设置VNC用户密码
vncpasswd
3.设置配置文件
/etc/sysconfig/vncservers
VNCSERVERS="1:root 2:student" 此行为连接vnc的用户序号
VNCSERVERARGS[1]='-grometry 800x600 -nolisten tcp'
VNCSERVERARGS[2]='-grometry 800x600 -nolisten tcp' 连接用户的参数
客户端用vnc viewer 软件连接
CentOS6环境 安装pixman, pixman-devel, LibXFtot软件包.
INIT进程
由Linux内核加载运行 /sbin/init 程序
是系统中第一个进程,PID(进程标记)号永远为1
配置文件:/etc/inittab
/etc/rc.d/rc.sysinit
由init进程调用执行
完成设置网络、主机名、加载文件系统等初始化工作
/etc/rc.d/rc脚本文件
由init进程调用执行
根据指定的运行级别, 加载或终止相应的系统服务
/etc/rc.local脚本文件
由rc脚本调用执行
保存用户定义的需开机后自动执行的命令
rc.sysinit脚本:是init进程所调用的系统初始化脚本,文件全称是/etc/rc.d/rc.sysinit,rc.sysinit脚本主要完成包括设置网络、主机名、加载文件系统、设置时钟等一系列初始化工作(例如检查并启用磁盘配额功能就是在该脚本中完成的) 。
rc脚本:同样由init进程进行调用,文件全称是/etc/rc.d/rc。rc脚本通过指定不同的级别参数分别加载及终止不同的系统服务,进入到相应的系统运行级别。
rc.local脚本:是一个额外的启动控制文件, 文件全称是/etc/rc.d/rc.local。rc.local脚本通常由rc脚本在最后进行加载,其作用主要是为管理员自行设置启动命令提供一种途径,通常都将一些需要随系统启动的命令和脚本添加到该文件中。
GRUB启动设置
/boot/grub/grub.conf:主文件,改grub配置文件,最好直接改该文件。
常用参数
default
这个参数决定了GRUB引导时光标默认停留的引导标签。
timeout
这个参数设置的是GRUB的等待时间。
splashimage
当进入GRUB引导界面的背景图片,
title
其实title就是一个引导标签,可以对title后的文字部分进行修改,使它更加符合我们的使用习惯。
password
password参数可以对GRUB设置密码。GRUB的密码设置可分为全局密码和菜单密码。
使用 grub-md5-crypt 命令可以生成一个MD5加密的密码,使用–md5 选项可以包含这个加密的密码指令
SELinux 设置
配置文件: /etc/selinux/config
SELINUX有「disabled」「permissive」,「enforcing」3种选择。
Disabled就是禁用SELinux
permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。在我们开发策略的时候非常的有用。
相当于Debug模式。
Enforcing就是你违反了策略,你就无法继续操作下去。
SELINUXTYPE呢,现在主要有2大类,一类就是红帽子开发的targeted,它只是对于,主要的网络服务进行保护,比如 apache ,sendmail, bind,postgresql等,不属于那些domain的就都让他们在unconfined_t里,可导入性高,可用性好但是不能对整体进行保护。
另一类是Strict,是NAS开发的,能对整个系统进行保护,但是设定复杂,我认为虽然它复杂,但是一些基本的会了,还是可以玩得动的
常用服务配置
Web服务器
Package name = httpd
Service name = httpd
Config file = /etc/httpd/conf/httpd.conf
Document root = /var/www/html
Home page = index.html
MySQL的配置
[root@www ~]# yum install mysql mysql-server
[root@www ~]# service mysqld start
[root@www ~]# chkconfig mysqld on
登录到数据库
mysql -u root
更改数据库管理员密码
mysqladmin -u root password "123456"
httpd 基于域名的虚拟主机
在一个物理主机上配置多个www网站
配置文件: /etc/httpd/conf/httpd.conf 也就是httpd的配置文件
NameVirtualHost [ip地址]
<Virtualhost [ip地址]>
DocumentRoot 网站文件目录
ServerName url目录位置
</VirtualHost>
可以更改 /etc/hosts 文件修改dns解析.
httpd服务的访问控制
基于客户端地址的访问控制
Order配置项,定义控制顺序
先允许后拒绝,默认拒绝所有:Order allow,deny
先拒绝后允许,默认允许所有:Order deny,allow
Allow、Deny配置项,设置允许或拒绝的地址
Deny from address1 address2 …
Allow from address1 address2 …
httpd配置文件中添加以下内容
<Directory /var/www/html/redhatcom>
Order allow,deny
Allow from 192.168.0.0/24
Deny from 192.168.0.100
</Directory>
注意: 如果设置的是虚拟主机, 那么<Directly>必须写到虚拟主机的目录里
<VirtualHost 192.168.0.155>
<Directory /var/www/html/redhatcom>
Order allow,deny
Allow from 192.168.0.0/24
Deny from 192.168.0.100
</Directory>
</VirtualHost>
不是虚拟主机的话,可以在任意位置添加
使用awstats分析Web日志
awstats安装步骤
1. 解包至 /usr/local/ 目录
2. 执行安装脚本 awstats_configure.pl
3. 修改 awstats.XXX.conf 配置文件,确认日志位置 (XXX代指域名)
虚拟主机的日志位置在httpd配置文件中
默认的日志文件在/var/log/httpd/
4. 创建数据库存放目录,并更新分析数据
5. 设置cron计划任务,以便定时运行日志分析程序
6. 在网页浏览器中查看分析报告
linux默认的日志分析软件
webalizer
配置文件:/etc/webalizer.conf
测试httpd服务器的性能
ab命令
Apache Benchmark,Apache基准测试工具
格式:ab [-q] -c 并发请求数 -n 总的请求数 [http://]域名[:端口]/路径
应用示例:
[root@www ~]# ulimit -n 3600
[root@www bin]# ab -q -c 2000 -n 4000 http://www.example.com/
ab测试工具为httpd服务自带的工具,结合使用-q选项时,将不显示测试进度信息
当测试的目标是Web站点的根路径时,注意最后的“/”符号不能省略。指定的并发请求数不能小于总的请求数
测试目标最后的路径(例如“/”)不能少,否则执行将出错
切换到虚拟机环境演示如何使用ab命令进行测试,并简单讲解输出结果:
在RHEL5系统中,默认允许打开的最大文件数为1024。由于使用ab测试工具时可能需要同时打开更多的文件,因此需要使用ulimit命令突破这个限制,如果不更改最大文件数限制,在使用ab工具时可能会出现“socket: Too many open files (24)”的错误提示信息,导致测试无法进行
FTP服务
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers 禁止登录的用户列表
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf
常用的全局配置项
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.4.1:设置监听的IP地址
listen_port=21:设置监听FTP服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用user_list列表文件
userlist_deny=YES:是否禁用user_list中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一IP地址的并发连接数
write_enable=YES 启用任何形式的写入权限(如上传、删除文件等)都需要开启此项。
download_enable=YES 是否允许下载文件(建立仅限于上传的FTP服务器时可将其设为NO)。
dirmessage_enable=YES 用户切换进入目录时显示.message文件(如果存在)的内容。
xferlog_enable=YES 启用xferlog日志,默认记录到/var/log/xferlog文件。
xferlog_std_format=YES 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式。
connect_from_port_20=YES 允许服务器主动模式(从20端口建立数据连接)。
pasv_enable=YES 允许被动模式连接
pasv_max_port=24600 设置用于被动模式的服务器最大端口号
pasv_min_port=24500 设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd 设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)。
userlist_enable=YES 是否启用user_list用户列表文件。
userlist_deny=YES 是否禁止user_list列表文件中的用户帐号。
max_clients=0 最多允许多少个客户端同时连接(0为无限制)。
max_per_ip=0 对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)。
tcp_wrappers=YES 是否启用TCP_Wrappers主机访问控制(TCP Wrappers出其用途,只要稍微理解一下其英文含义就很容易记住了
listen=YES 是否以独立运行的方式监听服务
listen_port=21 设置监听FTP服务的端口号。
write_enable=YES 启用任何形式的写入权限(如上传、删除文件等)都需要开启此项。
download_enable=YES 是否允许下载文件(建立仅限于上传的FTP服务器时可将其设为NO)。
dirmessage_enable=YES 用户切换进入目录时显示.message文件(如果存在)的内容。
xferlog_enable=YES 启用xferlog日志,默认记录到/var/log/xferlog文件。
xferlog_std_format=YES 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式。
connect_from_port_20=YES 允许服务器主动模式(从20端口建立数据连接)。
pasv_enable=YES 允许被动模式连接
pasv_max_port=24600 设置用于被动模式的服务器最大端口号
pasv_min_port=24500 设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd 设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)。
userlist_enable=YES 是否启用user_list用户列表文件。
userlist_deny=YES 是否禁止user_list列表文件中的用户帐号。
max_clients=0 最多允许多少个客户端同时连接(0为无限制)。
max_per_ip=0 对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)。
tcp_wrappers=YES 是否启用TCP_Wrappers主机访问控制(TCP Wrappers的应用将在后续课程中讲解)。
常用的匿名FTP配置项
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的FTP根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率,单位为字节
常用的本地用户FTP配置项
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的FTP根目录
chroot_local_user=YES:是否将用户禁锢在主目录
local_max_rate=0:限制最大传输速率(字节/秒)
电子邮件系统
邮件应用协议
SMTP,简单邮件传输协议,TCP 25端口
POP3,第3版邮局协议,TCP 110端口
POP3协议用于收取电子邮件,通常需要将邮件内容全部下载后才能进行阅读
IMAP4,第4版因特网消息访问协议,TCP 143端口
IMAP4协议用于收取、管理电子邮件,可以在下载邮件之前先查看对应的邮件 头,以确定需要下载还是删除等操作,更适合用于电子邮件的远程管理
linux软件包
Postfix:提供邮件发送服务(SMTP)
Dovecot:提供邮件收取服务(POP3)
安装Postfix
[root@mail ~]# yum install postfix
[root@mail ~]# service postfix restart
[root@mail ~]#chkconfig postfix on
Postfix的主要目录
配置文件目录:/etc/postfix/
邮件队列目录:/var/spool/postfix/*
incoming、active、deferred
hold、corrupt
邮件管理程序目录:/usr/sbin/*
postalias、postmap、
postconf、postfix
postqueue、postsuper
Postfix的配置文件
/etc/postfix/master.cf
master主程序的配置文件
/etc/postfix/main.cf
postfix 配置文件修改
[root@mail ~]# vi /etc/postfix/main.cf
inet_interfaces = all
myhostname =serverX.example.com
mydomain = example.com
mydestination = $mydomain, $myhostname ,localhost
设置邮件存储位置
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
……
mail_location = mbox:~/mail:INBOX=/var/mail/%u
……
重新加载配置:postfix reload
构建dovecot服务器
修改配置文件
vi /etc/dovecot/dovecot.conf
protocols = pop3 imap 支持的邮局协议
login_trusted_networks = 192.168.0.0/24 指定允许登录的网段地址
vi /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u…… 邮件存储格式及位置
设置邮件别名和邮件群发功能
修改aliases文件
/etc/aliases
aliases文件的记录格式
name: addr_1, addr_2, addr_3, . . .
设置邮件别名
admin: mike
设置邮件群发
testgroup: mike,john
修改aliases文件后更新aliases.db文件
newaliases
Samba服务
Samba服务器的主要程序
smbd:提供对服务器中文件、打印资源的共享访问
nmbd:提供基于NetBIOS主机名称的解析
安装
yum install samba
启动服务
service smb start
Samba的配置文件
/etc/samba/smb.conf
创建samba用户
从系统用户创建samba用户
smbpasswd管理命令,常用的选项:
-a:添加指定的Samba帐号
-d:禁用指定的Samba帐号
-e:启用指定的Samba帐号
-x:删除指定的Samba帐号
-h:显示帮助信息
不指定选项时可以修改指定Samba帐号的密码
samba配置文件构成
[global] 全局设置:这部分配置项的内容对整个Samba服务器有效
workgroup设置服务器所在的工作组名称,例如“WORKGROUP”(Windows主机默认工作组名)
server string 设置服务器的说明文字,用于描述Samba服务器
security 设置服务器的安全级别,可设为以下4个值中的一个:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(由另一台服务器验证用户名及密码)、domain(由Windows域控制器验证用户名及密码)
log file 设置Samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,表示日志文件保存到/var/log/samba/目录中,按每个客户机建立一个日志文件,“%m”变量表示客户端主机名或IP地址
max log size 设置日志文件的最大容量,默认为50,表示50KB(默认单位为KB)
[homes] 用户目录共享设置:设置对应Samba用户宿主目录的默认共享,即当用户访问服务器中与自己用户名同名的共享文件夹时,默认会映射到自己的宿主目录
[printers] 打印机共享设置:如果需要共享打印机,则在这部分配置
在文件末尾用户可以自定义新的共享目录设置,自定义目录共享的名称可以随便起,其中的配置可以参考“[homes]”、“[printers]”中的部分配置项
配置共享目录项
[name] 共享目录名
comment:对共享目录的注释、说明信息
path:共享目录在服务器中对应的实际路径
browseable:该共享目录在“网上邻居”中是否可见
guest ok:是否允许所有人访问,等效于“public”
writable:是否可写,与read only的作用相反 Samba服务设置的读取、写入权限,优先级要低于文件系统中设置的权限
如果远程登录可以看到目录无法打开是由于SELinux拒绝.
输入 chcon -t samba_share_t /path 解决
详细参照samba配置文件
NFS的基本概念
NFS是系统间进行文件共享的一种网络协议
在NFS的应用结构中有服务器和客户机两种角色
NFS客户端通过挂载NFS文件系统的方式访问NFS服务器中输出的共享目录
在同一台主机中即可以是NFS服务器也可以作为NFS客户机
软件包: nfs-utils
NFS服务器的配置文件
/etc/exports
“exports”文件用于配置NFS服务器中输出的共享目录
/home/share *(sync,ro)
nfs共享目录名 客户端主机地址(设置选项)
查询某一主机的共享目录
showmount -e 192.168.0.111
nfs服务进程名: nfs
查询服务器的状态
为了保证NFS服务器能够正常工作,系统中需要运行portmap和nfs两个服务程序
# service nfs status
启动服务器
# service nfs start
停止服务器运行
# service nfs stop
Linux 防火墙
iptables 命令
设置即时生效
使用service iptables save保存防火墙配置.
iptables的规则表、链结构
规则是防火墙的基本构成元素,规则链是规则的集合, 规则表是规则链的集合.
规则链
规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中
规则链是防火墙规则/策略的集合
默认的5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
规则表
具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中
规则表是规则链的集合
默认的4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
iptables -t 表名 -[APLDFXN] 链名 规则 -j 处理方式
-A 添加一条规则 [ACCPCT, DROP, REJECT, LOG, SNAT. DNTA]
-P 默认处理
-L 列出规则链的规则
-D 删除指定位置或内容的规则
-F 清空规则链的所有规则
-N 创建一条新的规则链
-X 删除自定义的规则链
设置匹配数据包的条件
通用条件匹配
可直接使用,不依赖于其他的条件或扩展模块
包括网络协议、IP地址、网络接口等匹配方式
协议匹配
使用“-p 协议名”的形式
协议名可使用在“/etc/protocols”文件中定义的名称
常用的协议包括tcp、udp、icmp等
地址匹配
使用“-s 源地址”、 “-d 目标地址”的形式
地址可以是单个IP地址、网络地址(带掩码长度)
接口匹配
使用“-i 网络接口名”、 “-o 网络接口名”的形式,分别对应接收、发送数据包的网络接口
示例:
[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
[root@localhost ~]# iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP
隐含条件匹配
端口匹配
使用“--sport 源端口”、“--dport 目标端口”的形式
采用“端口1:端口2”的形式可以指定一个范围的端口
TCP标记匹配
使用“--tcp-flags 检查范围 被设置的标记”的形式
如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
ICMP类型匹配
使用“--icmp-type ICMP类型”的形式
ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply
示例:
[root@localhost ~]# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
LINUX端口定义文件
/etc/services
linux启动
INIT进程
由Linux内核加载运行 /sbin/init 程序
是系统中第一个进程,PID(进程标记)号永远为1
配置文件:/etc/inittab
这个文件可定义系统的运行级别
/etc/rc.d/rc.sysinit
由init进程调用执行
完成设置网络、主机名、加载文件系统等初始化工作
/etc/rc.d/rc脚本文件
由init进程调用执行
根据指定的运行级别, 加载或终止相应的系统服务
/etc/rc.local脚本文件
由rc脚本调用执行
保存用户定义的需开机后自动执行的命令
默认的7种运行级别
0:关机状态
1:单用户模式
2:字符界面的多用户模式(不支持网络)
3:字符界面的完整多用户模式
4:未分配使用
5:图形界面的多用户模式
6:重新启动
更改运行级别
1. 改配置文件
2. init 命令更改
GRUB常用参数
default
这个参数决定了GRUB引导时光标默认停留的引导标签。
timeout
这个参数设置的是GRUB的等待时间。
splashimage
当进入GRUB引导界面的背景图片,
title
其实title就是一个引导标签,可以对title后的文字部分进行修改,使它更加符合我们的使用习惯。
password
password参数可以对GRUB设置密码。GRUB的密码设置可分为全局密码和菜单密码。
使用 grub-md5-crypt 命令可以生成一个MD5加密的密码,使用–-md5 选项可以包含这个加密的密码指令
password=123456 密码行如果放在title行上面为菜单密码, 保护的是grub选项.输入正确的密码才能修改启动项
如果放在title行下面为全局密码, 保护的是启动项.输入正确的密码才能启动对应的系统
支持的体系和内核标识
1.cat /etc/redhat-release
2.uname –r
3.yum list installed kernel\*
4.uname –a or arch
linux内核文件
/boot/vmlinuz*
linux内核映像文件
/boot/initramfs*.img
内核组件
/sys/module
管理内核模块
/boot/vmlinuz-VERSION 引导时加载的核心内核映像
/lib/modules/VERSION/ 动态加载的模块
lsmod 列出当前加载的模块
modprobe MODULENAME 手工加载模块
modprobe –r MODULENAME 手工删除模块
模块参数
modinfo 列出模块支持的参数
modprobe ecryptfs ecryptfs_verbosity=1 指定参数
/etc/modprobe.d/local.conf 自动应用参数
options ecryptfs ecryptfs_verbosity=1
修改内核命令行
1. 将参数 max_Ioop=32 添加到/boot/grub/grub.conf中的内核命令行。
2. 重新引导服务器
3. 确认内核
cat /proc/cmdline
另一种方法是修改/etc/sysctl.conf 文件
故障排除
1.fstab文件被修改,根分区无法挂载
重新以可写方式挂载根分区
mount -o remount,rw /
RHEL开启ip转发
打开配置文件 /etc/sysctl.conf
修改 net.ipv4.ip_forward = 1
验证命令: sysctl -p
net.ipv4.ip_forward = 1 时成功
ISCSI =internet SCSI (SCSI over TCP)
IQN =iSCSI 限定名称
Format:iqn-yyyy-mm.com.example:lable
Iscsi服务使用默认端口:port 3260/tcp
挂载iSCSI磁盘
配置ip地址和hostname.
isciadm 程序挂载
具体参考man手册example
isciadm --mode discoverydb --type sendtargers --portal 192.168.0.254 --discover
系统监控和日志管理
1.df :创建磁盘空间使用情况报告
2.iostat :创建磁盘I/O使用情况报告
3.vmstat :创建交换分区使用情况报告
使用aide验证系统完整性
1.安装aide软件:yum install aide
2.修改配置文件:/etc/aide.conf
3.初始化数据库 :/usr/sbin/aide --init
4.将 /var/lib/aide/aide.db.new.gz复制到/var/lib/aide/aide.db.gz
5.运行 /usr/sbin/aide --check 检查系统
使用sar监控系统
sar –A 显示今天收集的所有信息
sar –u 2 5 显示间隔2秒的5个系统cpu使用情况
tmpwatch :linux tmp 文件清理系统使用时间长后会产生临时文件(/tmp下),使用tmpwatch命令清理文件。
logrotate logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。
配置远程日志服务
修改配置文件/etc/rsyslog.conf,启动远程日志服务
启动 UDP or TCP的514端口
$ModLoad imudp.so
$UDPServerRun 514
$ModLoad imtcp.so
$INPUTTCPServerRun 514
配置远程主机,发送日志到日志服务器
*.info @remote.hostname
Bash 编程
Shell 变量
FRUIT=apple
$FRUIT ${FRUIT}
命令替换
$(… some shell command…)
touch datafile.$(id -un)
TODAY=$(date+%Y-%m-%d)
引用和转义
弱引用 “” 保留扩展
强引用 ‘’ 禁用扩展
转义 \
循环
for i in item1 item2;
do
cmd1; cmd2;
done
条件分支
if cmd;
then
cmd1;
cmd2;
else
cmd3;
fi
在远程计算机上运行命令
ssh user@host ‘cmd1;cmd2’ > log.local
ssh user@host ‘cmd1;cmd2 > log.remote’
反引号代表运行其中的命令并返回值
DAY=`date +%Y%m%d`
case VariableName in
value1)
instruction
;;
value2)
instruction
;;
*)
default
;;
esac
DNS服务器配置
DNS系统的作用
正向解析:根据主机名称(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机域名
DNS查询方式:
递归查询
大多数客户机向DNS服务器解析域名的方式
迭代查询
大多数DNS服务器向其他DNS服务器解析域名的方式
DNS服务器的类型(角色)
缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
NDS服务器
软件: bind
服务名: named
主配置文件: /etc/named.conf
保存DNS解析记录的数据文件位于: /var/named/
主配置文件named.conf
修改部分:
options { listen-on port 53 { 173.16.16.1; }; 监听的IP地址和端口 directory "/var/named"; allow-query { 192.168.1.0/24; 173.16.16.0/24; }; 允许DNS查询的客户机地址 recursion yes; }; zone " " IN { 设置要解析的域名 type hint; 类型: hint表示根区域、master表示主区域、slave表示辅助区域 file "named.ca"; 区域数据配置文件 };
配置样例:
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; dnssec-enable yes; dnssec-validation no; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "example.com" IN { type master; file "example.com.zone"; }; include "/etc/named.rfc1912.zones";
文件example.com.zone
$TTL 3H @ IN SOA www.example.com. root.exampel.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS www.example.com. www A 192.168.0.119 ftp A 192.168.0.119 mail A 192.168.0.119 AAAA ::1
区域数据配置文件
域名解析记录
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address)记录,只用在正向解析的区域数据文件中
CNAME别名(Canonical Name)记录
@ IN SOA [该DNS区域的地址] [该DNS区域管理员的邮箱地址] ( 2009021901 ;更新序列号 3H ;刷新时间 15M ;重试延时 1W ;失效时间 1D ;无效地址解析记录的默认缓存时间 )
NS [该DNS区域的地址]
[主机名] A [主机IP地址]
[主机名] A [主机IP地址]
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address)记录,只用在正向解析的区域数据文件中
CNAME别名(Canonical Name)记录
反向解析:
named.conf zone "16.16.173.in-addr.arpa" IN { 反向写IP地址 type master; file "173.16.16.arpa"; };
173.16.16.arpa文件
前面和正向解析一样
IN NS ns2.benet.com.
[ip地址 主机号] IN PTR [完整主机名]
DHCP
0.0.0.0代表本地主机
255.255.255.255
服务名: dhcp
配置文件
主配置文件: /etc/dhcp/dhcpd.conf
配置样例:
# # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see 'man 5 dhcpd.conf' # ddns-update-style none; default-lease-time 3600; max-lease-time 7200; option domain-name-servers 192.168.0.119; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option routers 192.168.0.254; option subnet-mask 255.255.255.0; }
/etc/sysconfig/dhcpd
定义哪个端口启用dhcp.
DHCPDARGS="eth0"
TCPwrapper
允许或禁止服务的启动
配置文件
/etc/hosts.allow
/etc/hosts.deny
格式
服务:网段
sshd:192.168.0.0/255.255.255.0
可以使用通配符?(代表一个数字), *(代表任意数字)
代理服务器
linux上squid
端口: 3128
软件包: sqiud
服务名: squid
配置文件: /etc/squid/squid.conf
默认访问日志文件:/var/log/squid/access.log
windows上ISA
端口: 8080
传统代理
每台客户机都设置代理服务器
透明代理
反向代理
提供负载均衡
nginx
透明代理
iptables 防火墙
语法
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
不指定表名时,默认表示filter表
不指定链名时,默认表示该表内所有链
除非设置规则链的缺省策略,否则需要指定匹配条件
脚本格式
#!/bin/bash iptables -F iptables -X iptables -Z iptables -t nat -F iptables -P INPUT DROP //更改INPUT链的默认规则为DROP iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT (允许ping其他的主机)
数据包状态匹配
使用“-m state”结合“--state 状态类型”的形式
同时表示多种状态时以逗号“,”分隔
常见的数据包状态包括:NEW、ESTABLISHED、RELATED
常用服务端口:
ssh 22(tcp)
ftp 20(tcp) 20(udp) 21(tcp) 21(udp)
smtp 25(tcp) 25(udp)
pop3 110(tcp) 110(udp)
name-server(dns解析) 53(tcp) 53(udp)
dhcp 67(tcp) 67(udp) 68(tcp) 68(udp)
snmp 161(tcp) 161(udp) 162(tcp) 162(udp)
vnc 5900:5(tcp) 5900:5(udp)
第一个用户端口为5901, 第二个为5902, 以此类推
DNAT: 将局域网内主机发布到外网.
iptables -t nat -A PREROUTING -i [外网接口eth0] -d [网关的公网IP地址] -p tcp --dport [目标主机端口] -j DNAT --to-destination [内网服务器地址]
SNAT: 局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源IP地址
iptables -t nat -A POSTROUTING -s [来自特定局域网段的数据包] -o [需要从接口eth0外出的数据包] -j SNAT --to-source [网关主机外网接口的IP地址]
NAT配置实例
#!/bin/bash iptables -F iptables -X iptables -Z iptables -t nat -F iptables -t nat -A PREROUTING -i eth1 -d 61.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.119:80 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 61.1.1.1
远程连接 vnc服务
软件包: tigervnc-server (服务器端)
tigervnc (客户端)
服务名: vncserver
配置文件: /etc/sysconfig/vncservers
VNCSERVERS="1:root" //设置用户名对应的登录序号
//登录时用192.168.0.192:1
为当前用户设置VNC用户密码: vncpasswd
访问远程主机命令vncviewer
vncviewer –via user@host localhost:display
user:远程主机用户
host:远程主机
display:远程VNC或X窗口显示
网络监控
构建Cacti
配置被监测端
安装net-snmp软件包
调整snmpd.conf配置文件
配置文件: /etc/snmp/snmpd.conf
修改内容:
41行 com2sec notConfigUser 192.168.4.4(将default改为允许向本机查询监测数据的Cacti服务端主机地址) publicsvr(SNMP的组识别字串,作用类似于密码)
62行 access notConfigGroup "" any noauth exact all(将systemview改为all,提供所有的SNMP访问权) none none
85行 view all included .1 80 (去掉此行开头的# 注释符号)
启动snmpd服务 “service snmpd start”
配置监测服务端
安装依赖软件
AMP平台,中安装下列软件包
httpd、mysql、mysql-server、mysql-connector-odbc
php、php-mysql、php-common、php-pdo、php-gd
SNMP数据采集工具
lm_sensors、net-snmp、net-snmp-utils
RRDTool引擎
rrdtool、rrdtool-devel
安装Cacti程序套件
解压文件包至网页目录,并调整权限
./log 和 ./rra目录
建立监测数据库
create database cactidb default character set utf8;
注意字符集设定为utf8(中文版)
mysql -u root -p cactidb < cacti/cacti.sql
创建数据表
调整Cacti系统的配置
修改cacti目录中的include/config.php配置文件
[root@localhost ~]# vi /var/www/html/cacti/include/config.php
<?php $database_type = "mysql"; $database_default = "cactidb"; $database_hostname = "localhost"; $database_username = “root"; $database_password = "1234"; $database_port = "3306"; ?>
需要确认httpd服务的字符集支持为” AddDefaultCharset utf-8“,否则有可能导致访问Cacti界面时网页显示为空白
添加cron计划任务,以定期采集数据
以cactiuser用户身份采集数据
执行命令:php /var/www/html/cacti/poller.php
通过crontab设置每5分钟采集一次监测数据
crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php