1. 程式人生 > >linux 基礎知識(六)

linux 基礎知識(六)

linux 基礎知識

日誌

日誌的作用:
1.解決系統方面的問題
2.解決網絡服務的問題
3.記錄過往事件

/var/log/ //日誌文件保存位置
cron //記錄周期性任務計劃
dmesg //開機核心偵測信息
lastlog //系統所有行好最近一次的登陸信息
maillog //郵件往來
messages //系統錯誤信息
secure //設計輸入系統帳號密碼的程序
wtmp //正確登陸系統的賬戶信息
btmp //錯誤登陸系統的賬戶信息

/var/log/httpd/ //不同的網絡服務會保存在自己的日誌目錄中
/var/log/samba/

日誌類型
1.ASCII類型

2.data類型
last //查看wtmp日誌文件

lastb //查看btmp日誌文件

日誌需要的服務
rsyslogd //主要負責記錄系統運作時的信息和內核信息寫入日誌,日誌的主服務
logrotate //主要負責日誌輪詢

rhel5版本之前日誌的服務syslogd服務,rhel6之後rsyslogd服務

rsyslog
什麽服務 什麽等級 記錄在哪個文件
配置文件:/etc/rsyslog.conf
/etc/rsyslog.d/*

/etc/rsyslog.conf

#### RULES ####
選項 動作 (選項和動作以制表符“Tab”分割)

選項:設施和級別(設施和級別以“.”進行分割)(不同的選項以“;”分割)
*.info;mail.none;authpriv.none;cron.none /var/log/messages

設施
authpriv //認證系統,詢問用戶和口令
cron //周期性計劃任務
daemon //守護進程程序
kern //內核的信息
mail //郵件系統
lpr //打印機
news //新聞系統
user //本地用戶應用程序的信息
uucp //uucp子系統的信息,
local0-7 //本地類型信息

man syslog //查看幫助,裏面有級別的說明
級別
0-7
0 emerg //基本要死機
1 alert //這個問題相當嚴重,比臨界點更嚴重
2 crit //臨界點,這個錯誤已經很嚴重了
3 err //重大錯誤信息

4 waining //警告
5 notice //註意:非錯誤的狀態報告,但應特別處理;比info級別更需要註意
6 info //通報信息
7 debug //調試錯誤

none //帶有該級別的類型長生的信息無需送出
.xxx:表示大於該級別的信息
.=xxx:表示等於該級別的信息
.!xxx:表示在該等級之外的等級信息

動作
/filename 日誌文件,絕對路徑指出文件名,將選項的日誌信息保存在該文件。此文件必須事先建立
@host 遠程主機;@符號後面可以是IP地址,也可以是域名或主機名
username,username 發送給指定的用戶,該用戶必須處於登陸狀態。

  • 所有用戶,用戶必須處於登陸狀態。

例:
1.保存在普通的文件或設備文件中
. /var/log/file.log //記錄到普通文件
. /dev/pts/0 //記錄到設備文件
2.轉發給遠程主機
. @192.168.0.1 //使用UDP協議轉發到192.168.0.1的514(默認)端口
. @@192.168.1.1:10514 //使用TCP協議轉發到192.168.1.1的10514(默認)端口
3.發送給用戶(必須在線才能收到)
. root //發送給用戶root
. root,student,redhat //發送給指定的多個用戶
. //發送給所有用戶
4.忽略,丟棄
local3.
~ //忽略所有local3類型的所有級別的日誌
5.執行腳本
local3.* ^/tmp/shell.sh //“^”後面跟上可執行的腳本或程序的絕對路徑

服務
rhel6
service rsyslog restart //重啟服務
rhel7
systemctl restart rsyslog //重啟服務

註意:如果日誌配置文件進行了修改需要重啟服務使其生效


logrotate //日誌的輪詢

/etc/logrotate.conf //輪詢主配置文件
/etc/logrotate.d/*

vim /etc/logrotate.conf

日誌文件{
規則
}

參數和選項
daily 每天輪詢
weekly 每周輪詢
monthly 每月輪詢
rotate 保留幾個帶時間戳的文件
create 創建新文件(可以規定權限,擁有者,所屬組)
dateext 舊文件以時間為結尾
size 指定大小

logrotate -vf /etc/logrotate.conf

總結
日誌的作用
日誌的主配置文件
日誌的位置
日誌的類型
日誌的輪詢作用
日誌輪詢的主配置文件


計劃任務
一次性的計劃任務
周期性的計劃任務

一次性的計劃任務
atd //一次性計劃任務的服務

命令
at 時間 日期 //創建一次性計劃任務
at>指令 //執行什麽命令
at><EOT> //ctrl+d來提交該計劃任務

at -l //查詢一次性計劃任務
at -d ID //刪除某個一次性計劃任務
at -c ID //查詢某個計劃任務的詳細信息

生成計劃任務後會生成一個文件
保存在/var/spool/at/目錄下,刪除裏面的文件相當於刪除計劃任務

一次性計劃任務的黑名單
vim /etc/at.deny
註意:一行一個用戶名

周期性計劃任務
vim /etc/crontab //周期性計劃任務的配置文件

SHELL=/bin/bash //命令使用bash命令解釋器
PATH=/sbin:/bin:/usr/sbin:/usr/bin //如果沒有使用絕對路徑命令從這幾個目錄中去搜索
MAILTO=root //如果周期性計劃任務出現問題會發送mail給root

連續的時間使用 “-”
間斷的時間使用 “,”
*/5 如果在分鐘段位那麽代表每隔5分鐘

緩存目錄/var/spool/cron/ 擁有和創建者同名的文件
root有權利給任何人創建周期性計劃任務

crontab -e //編輯周期性計劃任務
-l //查看
-u username //使用其他用戶操作(root)
-r //清除所有的周期性計劃任務

crontab -u student -e //為student用戶編輯周期性計劃任務

/etc/cron.deny //周期性計劃任務的黑名單

練習:
每周一到周五早晨9點和下午13點,統計一下當前系統裏有多少用戶登陸著並將結果追加到/tmp/wc.txt
每隔兩小時查看當前進程有幾個,結果追加到/tmp/ps.txt


內核
內核的模塊化

uname -a //查看當前所有的內核版本

內核模塊
/lib/modules/2.6.32-431.el6.x86_64/kernel/ //模塊的存放位置
模塊文件一般是以“.ko”結尾

/lib/modules/2.6.32-431.el6.x86_64/modules.dep //記錄了模塊之間的依賴關系

depmod //更新模塊依賴關系的命令

查看
lsmod //查看當前所加載的所有模塊
modinfo //查看某個模塊的詳細信息

加載
insmod 模塊的位置 //加載一個模塊(無法解決依賴關系)

rmmod 模塊名稱 //卸載一個模塊
-f //強制卸載,不管該模塊是否正在被使用

modprobe //可以加載模塊,自動解決依賴關系
-r //卸載模塊,但和yum一樣會把相應的依賴關系全部卸載,慎用!!!
-f //強制加載
-c //查看

內核參數
管理系統功能的開關

cat /proc/sys/net/ipv4/icmp_echo_ignore_all //該內核參數管理忽略所有的ping包

vim /etc/sysctl.conf //永久生效某個內核參數寫在該配置文件中

sysctl -p //讓內核參數立即生效

掛載

mount //查看掛載信息掛載
df -h //查看掛載信息
1.標準格式
mount -t 文件系統類型 掛載源 掛載點
-o //帶選項的掛載
ro //只讀
rw //讀寫
remount //重新掛載
loop //本地

2.非標準格式
mount 掛載源 掛載點

註意:掛載點最好為空目錄
如果掛載點是非空目錄,掛載完成後;目錄原來的數據會消失(暫時不可用);當卸載時目錄的原始數據才會恢復。
卸載時不要在卸載目錄中

umount 掛載點 //卸載該掛載點

mount的應用
1.掛載大文件,變相的可以控制目錄所使用的空間(磁盤配額)
1)創建大文件
2)格式化大文件 mkfs.ext4 文件名 //格式化某個文件
3)掛載

2.掛載鏡像文件

3.掛載遠程目錄
mount IP地址:/content 掛載點

4.多級目錄快速訪問
mount --bind 舊的目錄 新的目錄
vim /etc/fstab //想永久生效掛載在該配置文件中寫入信息

6個字段
1.掛載源
2.掛載點
3.文件系統類型
4.選項(如果是空選項使用“defaults”)
5.是否需要備份(0代表否 1代表是)
6.是否需要檢測(0代表否 非0代表是並且有優先級,數字越小優先級越高)

mount -a //修改完成後使用此命令立即生效或者重啟計算機


開機啟動流程
1.硬件啟動
MBR:主引導記錄
bootloader引導程序:win ntblr ;rhel6 grub ;rhel7 grub2
DTP:分區表
55AA:校驗

2.軟件啟動

runlevel 0 //是讓init關閉所有的進程並終止系統(關機)
runlevel 1 //用來將系統轉到單用戶模式,用於對系統的緊急救援,單用戶模式只有管理員(root)能進
runlevel 2 //允許使用多用戶模式(不完整),不支持文件的共享等功能,一般很少用
runlevel 3 //真正的多用戶模式(完整),是多數服務器的默認模式
runlevel 4 //一般不被系統使用,用戶可以自己設計及自的系統狀態並將其應用(自定義)
runlevel 5 //圖形化界面,使用X windows終端
runlevel 6 //是讓init關閉所有的進程並重啟系統(重啟)

rhel6
使用單用戶模式更改root密碼
grub---->"e"進行編輯----->選中kernel這項再按“e”來進行編輯----->在最後輸入“ 1”(空格和1)
----“Enter”(回車)-----按“b”來進入單用戶模式------輸入“passwd”來修改密碼-----exit

vim /boot/grub/grub.conf
default=0 //默認的grub菜單
timeout=30 //默認時間30後自動進入系統
splashimage=(hd0,0)/grub/splash.xpm.gz //grub菜單的背景圖片
hiddenmenu //默認不顯示grub菜單
password --md5 $1$UwQm4/$8h/VGdOXDLf3NuvoOAOS40 //在說明信息上方的password,對grub菜單進行加密
title windows 7 //說明信息
password --md5 $1$ogRm4/$5dQmC.gvXAzmvKhiGsgwl/ //在說明信息下方的password,進入系統時需要密碼
root (hd0,0) //將boot成為根(/)
kernel /vmlinuz-2.6.32-431.el6.x86_64 //加載kernel,驅動,硬盤分區,語言格式編碼等
initrd /initramfs-2.6.32-431.el6.x86_64.img //啟用虛擬文件系統

grub-md5-crypt //用於生成加密密碼的命令

rhel6

chkconfig 服務名 on/off //設定服務是否開機啟動
chkconfig --list //查看服務是否開機啟動的狀態
chkconfig --level 35 sshd off //在啟動等級3和5的時候不啟動sshd


rhel7
1.stage1和stage2文件名稱有所變化
stage1變成/boot/grub2/i386-pc/boot.img
stage2變成/boot/grub2/i386-pc/core.img

2.grub2版本的grub.cfg配置文件中的分區命名方式有所改變
(hd0,0)改成‘hd0,msdos1‘

3.改變了引導菜單外觀主配置文件的位置
/etc/default/grub

4.可以通過命令 grub2-mkconfig -o /boot/grub2/grub.cfg 來重新生成配置文件或更新配置文件

  1. init變成systemd

6./etc/inittab 變成的說明文件

啟動級別
systemctl get-default //查看默認的啟動級別
systemctl set-default 啟動級別的名字 //設置啟動級別
例:systemctl set-default multi-user.target //設置啟動級別為3等級

啟動等級相應的配置文件/lib/systemd/system/<target name>.target

vim /usr/lib/systemd/system/multi-user.target //查看3級別的配置文件
AllowIsolate=yes //該級別是否可以被臨時切換,修改完成後重啟生效

啟動服務
該服務是否開機啟動,分到了各個服務中
systemctl status sshd //查看sshd服務的狀態
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled) //代表是否開機啟動disabled代表關閉enable代表開啟
Active: active (running) since Wed 2016-12-07 21:24:35 EST; 5h 3min ago //當前服務的運行狀態

設置開機啟動的服務
systemctl enable 服務名 //設置開機啟動
systemctl disabled 服務名 //設置開機不啟動

systemctl isolate rescue.target //臨時切換到救援模式,rescue.target救援模式的名稱

rhel7修改密碼
第一種方式
1.找到linux16開始的那一行,從後面開始刪除,刪除到第一個root,在最後追加rd.break,然後按Ctrl-x重啟即可進入單人模式
2.mount -o remount,rw /sysroot
3.chroot /sysroot
4.passwd
5.touch /.autorelabel
6.exit
7.exit

第二種方式
1.找到linux16開始的那一行,在這一行中找到ro 並將ro更改為 “rw init=/sysroot/bin/sh",然後按Ctrl-x重啟即可進入單人模式
2.chroot /sysroot
3.passwd
4.touch /.autorelabel
5.Ctrl+Alt+del

rhel7給grub2菜單進行加密

vim /etc/grub.d/40_custom
set superusers=‘root‘
password root 123
配置完成後
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件
以上就是明文加密,用戶名可以是任意的(可以是系統沒有的用戶)

密文加密
grub2-mkpasswd-pbkdf2 //生成加密密碼,註意取加密密碼是取is後面的
vim /etc/grub.d/40_custom
set superusers=‘root‘
password_pbkdf2 root grub.pbkdf2.sha512.10000.0862D41B5F0BBF76090C2BDB710
配置完成後
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件


selinux

selinux屬於一種權限

/etc/selinux/config

getenforce //查看selinux的狀態

setenforce 1或0 //設置selinux的狀態

selinux限制兩個方面
1.布爾值
2.安全上下文

1.布爾值
getsebool -a //查看當前所有限制方面的布爾值
setsebool -P 布爾值名 on或off //調整布爾值
例:setsebool -P samba_share_nfs on //調整布爾值

2.安全上下文
主體(進程)和目標的安全上下文必須一致才能夠順利訪問

查看安全上下文
ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

system_u:object_r:admin_home_t //安全上下文
身份標示 : 角色: 類型

ps -efZ | grep httpd //查看主題安全上下文
unconfined_u:system_r:httpd_t:s0 apache 1951 1944 0 10:35 ? 00:00:00 /usr/sbin/httpd

修改安全上下文
1.chcon -t 安全上下文的類型 文件
例:chcon -t httpd_t /var/www/html/index.html

2.restorecon 文件或目錄 //同步安全上下文
-R //遞歸修改
-v //顯示過程

selinux日誌分析工具
yum install -y setroubleshoot-server //如果沒有下面的命令,安全此軟件包

sealert -a /var/log/audit/audit.log //使用selinux日誌分析工具來分析日誌,會把解決方案分析出來

linux 基礎知識(六)