命令行編輯的幾個輔助操做php
用途:用於查找文件或目錄
格式:find [查找範圍] [查找條件]
經常使用查找條件
-name:按文件名稱查找
-size:按文件大小查找
-user:按文件屬主查找
-type:按文件類型查找
-print : 打印查找結果html
Bash的命令歷史
保存用戶曾經執行過的命令操做
存放位置:~/.bash_history 文件
查看歷史命令
history
目錄 文件
文件權限前的第一個字母用來標識文件類型:
-:通常文件
d:目錄文件
b:塊設備文件
c:字符設備文件
l:連接文件
p:人工管道node
文件權限系統,將操做文件的用戶都分紅三類
文件的擁有者(u)
文件所屬組的成員(g)
其餘用戶(o)
讀(r)4 :用戶是否有權力讀文件的內容
寫(w)2 :用戶是否有權利改變文件的內容
執行(x)1 :用戶是否有權利執行文件mysql
目錄權限
目錄的讀權限位意味着能夠列出其中的內容。寫權限位意味着能夠在該目錄中建立文件,若是不但願其餘用戶在你的目錄中建立文件,能夠取消相應的寫權限位。執行權限位則意味着搜索和訪問該目錄。以下圖所示:linux
____________________________________________________________________
| r | w | x |
-------------------------------------------------------------------------------------------------------------
| 可列出目錄中的文件 | 可在目錄中刪除或創建文件 | 可搜索或進入目錄 |
-------------------------------------------------------------------------------------------------------------ios
若是把同組用戶或其餘用戶針對某一目錄的權限設置爲- - x,那麼他們將沒法列出該目錄中的文件。若是該目錄中有一個執行位置位的腳本或程序,只要用戶知道它的路徑和文件名,仍然能夠執行它。用戶不可以進入該目錄並不妨礙他執行該目錄中的文件。nginx
[kevinz@stationXX kevinz] $ ls –il ( 顯示file1和file2的屬性)
4029 -rw-r--r– 2 root root 0 Jul 25 16:13 file1
inode號 權限 硬連接數 文件的擁有者 文件的擁有組 文件大小 最後修改時間 文件名web
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」sql
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
擴展邏輯卷和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
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