day13
一、第二列結尾的. 是標識selinux的符號
1、selinux是什么?
安全規(guī)則,讓Linux系統(tǒng)更安全的一套規(guī)則。
這個規(guī)則太嚴格了,一般的情況下都會關閉selinux。
自己開啟防火墻啊,用其他手段來實現(xiàn)同樣的安全目的。
2、怎么關掉Selinux?
查看方法:
[root@oldboyedu ~]# getenforce
Enforcing
臨時關掉:
[root@oldboyedu ~]# setenforce
usage:? setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@oldboyedu ~]# setenforce 0
[root@oldboyedu ~]# getenforce
Permissive
永久關閉:
vim /etc/selinux/config
[root@oldboyedu ~]# grep dis /etc/selinux/config
#? ? disabled - No SELinux policy is loaded.
SELINUX=disabled
二、Linux里防火墻C6 iptables? C7 firewalld
作用:防護計算機,防止被入侵。
1、臨時開啟和關閉
systemctl start firewalld.service
systemctl status firewalld.service
2、讓firewalld開機自啟動
systemctl enable firewalld.service
三、什么是硬鏈接?
具有相同inode節(jié)點號的文件互為硬鏈接。
一個文件的兩個入口。
創(chuàng)建硬鏈接:
ln 源文件 硬鏈接文件
作用:備份,防止誤刪。
目錄硬鏈接
不支持人工創(chuàng)建目錄硬鏈接。
四、軟鏈接:
本質是快捷方式,指向源文件實體,本身和源文件是不同的文件。
1、工作中為什么會使用軟鏈接。
第一個用途:
安裝軟件:/application/nginx-1.10
過半年:/application/nginx-1.20
導致一個問題,工作中,開發(fā)等引用/application/nginx-1.10路徑。
安裝軟件:/application/nginx-1.10===>/application/nginx(讓開發(fā)用)
過半年:? /application/nginx-1.20===>/application/nginx(讓開發(fā)用)
第二個用途:
/etc/對應的分區(qū)要滿了,沒法放很多文件,但是程序還想通過/etc/目錄訪問文件。
此時,我們可以把文件放入/opt/oldboy下,然后做一個到/etc/oldboy的軟鏈接。
四、Linux文件刪除原理:
1、靜態(tài)文件:沒有進程或程序正在訪問的文件。
所有的硬鏈接數(shù)為0(i_link),即所有硬鏈接都被干掉了,包括自身。
硬鏈接的數(shù)量的代表變量符號i_link
rm -f oldboy.txt oldboy_hard_link
執(zhí)行完 其實文件也沒刪,關機停止運行。
a.系統(tǒng)定時清理沒有文件名的inode。
b.磁盤檢查會清理。
c.增加新文件時優(yōu)先占用沒有文件名的inode。
恢復的工具:debugfs,ext3grep等等。
2、動態(tài)文件:有程序或進程訪問的文件
刪除原理:
a.所有硬鏈接刪除。i_link為0.
b..i_count是進程調用文件的數(shù)量(引用計數(shù))。所有進程調用都要停止取消。i_count為0
Web服務器磁盤滿故障深入解析,地址為
http://oldboy.blog.51cto.com/2561410/612351
五、通配符知識:
1、基本含義
通配符簡單說就是鍵盤上的一些特殊字符,可以實現(xiàn)某些特殊的功能,
例如,可以用*代表所有,來模糊搜索系統(tǒng)中的文件。
2、范圍:通配符試用范圍是命令行中【普通命令】或腳本編程中。
3、模糊匹配:*匹配所有
? ? ? ? ? ? ? ? ? ? ?匹配單個字符
? ? ? ? ? ? ? ? ? ? [abcd]匹配里面任意一個字符
? ? ? ? ? ? ? ? ? ? [a-d]匹配連續(xù)的任意單個字符
? ? ? ? ? ? ? ? ? ? [!a-d]或[^1-9]取反
? 路徑位置:-? 返回上一次所在目錄
? ? ? ? ? ? ? ? ? ? . 當前目錄
? ? ? ? ? ? ? ? ? .. 上一級目錄
? ? ? ? ? ? ? ? ? ? ~家目錄
? 引號相關:''單引號引用字符 所見即所得
? ? ? ? ? ? ? ? ? “”雙引號 引用字符串 解析變量、命令
? ? ? ? ? ? ? ? ? ``反引號引用命令? 解析命令等價$()
其他字符:;分號? 命令分隔符
? ? ? ? ? ? ? ? ? #管理員提示符? ? 注釋符
? ? ? ? ? ? ? ? ? $普通用戶提示符,也是調用變量使用
? ? ? ? ? ? ? ? ? \轉義字符? 讓字符還原本義
? ? ? ? ? ? ? ? ? {}生成序列,引用變量讓變量變成整體
? ? ? ? ? ? ? ? ? !取反? ? 在vim中表示強制,調用最近符合字符開頭的命令
? ? ? ? ? ? ? ? ? ? |? 管道? 前面的數(shù)據(jù)流交給后面處理
? ? ? ? ? ? ? ? ? ? &&并且? -and
? ? ? ? ? ? ? ? ? ||或者? or
day14
什么是正則表達式?
作用和特殊字符一樣。
正則表達式是為處理大量的字符串及文本而定義的一套規(guī)則和方法。
開發(fā)者
假設"@"代表“I am”,"!"代表“oldboy”,
則執(zhí)行echo "@!"的結果就是輸出“I am oldboy”。
1、基本正則(BRE)
? ^尖角號oldboy 以…開頭,^oldboy,以oldboy開頭
$美元符 以…結尾 oldboy¥ 以oldboy結尾
^$ 空格
. 匹配任意一個且只有一個字符,和通配符?一樣
\讓有意義的字符脫掉馬甲 還原本義
*匹配前面字符0次或者多次
.*表示所有內容
^.*組合符,以任意字符0個多個開頭的內容
。*$組合符,以任意字符0個多個結尾的內容
[abc] 匹配和集合內的任意一個字符a或b或c,[abc]也可寫成[a-c]
[^abc]不 匹配和集合內的任意一個字符a或b或c,[abc]也可寫成[a-c]
2、擴展正則(ERE)egrep
? ? +匹配前一個字符一次或多次以上
? ? [:/]+匹配括號內的:或/字符1次或者1次以上
? ? ?匹配前一個字符0次或1次
? ? | 或者同時過濾多個字符串
? ? ()分組過濾被括起來的表示一個整體
? ? \n引用前面()小括號里的內容
? ? a{n,m} 匹配前一個字符最少n次,最多m次
? ? a{n,} 匹配前一個字符最少n次
? ? a{n} 匹配前一個字符正好n次
? ? a{,m} 匹配前一個字符最多m次
3、特殊中括號
[:digit:]匹配任意一個數(shù)字字符,相當與[0-9]
[:lower:]匹配小寫字母,相當于[a-z]
[:upper:]匹配大寫字母,相當于[A-Z]
4、元字符
\b匹配單詞的邊界 過濾單詞類似grep -w
\d 匹配單個數(shù)字字符? 需用grep -P
5、sed 可以實現(xiàn)增刪改查
sed? 選項? sed內置命令字符? 文件
-n 取消命令的默認輸出
-i 直接修改文件內容 而不是輸出到終端
-e 量號 可以多次編輯
sed內置命令字符
s替換
g全局
p打印
d刪除
day15
一、cut 按列切割
cut? -d指定分隔符“ ”-f指定那一列? 文件
cut? -c按字符去內容? -c1-6 查找1到6列的內容
二、Linux三劍客
? awk? sed? grep
1、sed
Sed是操作、過濾和轉換文本內容的強大工具。
常用功能有對文件實現(xiàn)快速增刪改查(增加、刪除、修改、查詢),
其中查詢的功能中最常用的2大功能是過濾(過濾指定字符串)和取行(取出指定行)。
sed [選項]? [sed內置命令字符]? [文件]
選項:
-n 取消默認sed的輸出,常與sed內置命令的p連用※
-i 直接修改文件內容,而不是輸出到終端。
如果不使用-i選項sed只是修改在內存中的數(shù)據(jù),并不會影響磁盤上的文件※
sed的內置命令字符說明
s 替換
g 全局global
p 打印print
d 刪除delete
2、awk是一門命令行操作也可以作為編程語言,處理字符串
? ? 特長是取列
? ? 語法awk 參數(shù)? 條件? ? 文件
參數(shù):-F指定分隔符
? ? ? ? $0整行 $1第1列? ? ? $NF最后一列 $(NF-1)倒數(shù)第二列? NR行號
? ? ? ? [^r]非r? ^[^r]以非r字符開頭
day16
Linux基礎權限是9個字符。
1、? ? -rw-r--r--? 1
? ? 分3組:
? ? 前三個字符是表示用戶(屬主)權限位? user(用戶) u
? ? 中三個字符是表示用戶組權限位 group(用戶組)? ? g
? ? 后三個字符是其它用戶權限位 others(其他用戶)? ? o
? ? 同一組的三個字符權限也是有位置的:
? ? r-- 第一個字符的位置讀的權限位
? ? 第二個字符的位置寫的權限位
? ? 第三個字符的位置是執(zhí)行的權限位。
? r代表4? ? w代表2? ? x代表1? ? -代表0
2、文件權限詳細說明
? 2.1? ? 可讀r :表示具有讀取、瀏覽文件內容
? ? ? ? ? ? 可寫w:表示具有新增、修改、刪除文件內容的權限
? ? ? ? ? ? 可執(zhí)行x:表示具有執(zhí)行文件的權限。
? 2.2 a、如果沒有可讀r配合,那么使用vi編輯文件時會提示無法編輯
? ? ? ? 可以使用echo等命令進行重定向
? ? ? ? 刪除文件或創(chuàng)建文件的授權是受父目錄(上一級目錄)的權限控制的(因為沒有存放inode),而是在上級目錄的block里存放著的,若修改上級目錄的block,當然會受上級目錄的inode的權限控制)和文件本身的權限無關,因此,文件本身的可寫w權限和文件是否能被刪除和改名無關。
? ? b、首先文件的本身要能夠執(zhí)行(命令或腳本)
? ? 如果是普通用戶,同時還需要具備可讀r的權限才能執(zhí)行文件
? ? ? 而root用戶只要有可執(zhí)行x的權限就能執(zhí)行文件
3、目錄權限詳細說明
? a、可讀r:表示具有瀏覽目錄下面的子目錄內容的權限
b、可寫w表示具有增加、刪除或修改目錄內文件的權限。但是,如果沒有可執(zhí)行x的配合,即使有w權限,也無法刪除或創(chuàng)建文件
c、可執(zhí)行x:表示具有進入如目錄的權限。例如,可以執(zhí)行cd dir 命令切換到目錄下,但是無法列出目錄下的文件及子目錄。
3、Linux權限有兩種表現(xiàn)形式:
1、數(shù)字表示法 稱為8進制權限
r 4
w 2
x 1
- 0
實際的權限表示就是將每3位相加即可。
rwxr-xr-x? 755
rwx 7
r-x 5
r-x 5
2、字符表示法
rw-rw-r-x? 代表的數(shù)字權限為665
--xr-x-wx? 代表的數(shù)字權限為153
-wx--x--x? 代表的數(shù)字權限為311
而以下數(shù)字權限表示的字符權限如下:
755? 代表的字符權限為rwxr-xr-x
644? 代表的字符權限為rw-r--r--
134? 代表的字符權限為--x-wxr--
修改文件屬性的用戶和組
chown 用戶.用戶組 文件? 這里的點可以用:替換。
chown 用戶 文件
chown .用戶組 文件? ====chgrp 用戶組 文件
4、安全權限臨界點:
文件不想被修改被執(zhí)行:644
目錄不想被修改(刪除移動創(chuàng)建)被執(zhí)行(進入):755
5、企業(yè)真實案例:網(wǎng)站文件被惡意修改了。。。。打開網(wǎng)站后有彈窗廣告(不是你網(wǎng)站的)
用戶打開網(wǎng)站,報警。
原因:權限設置不到位。chmod -R 777 目錄 開發(fā)人員習慣
解決方案:
1、備份
tar zcvf /opt/oldboy_$(date +%F).tar.gz ./oldboy/
2、找到被修改的文件
[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
3、批量刪除
[root@oldboyedu /]# find /oldboy -type f |xargs sed -i '/ddddddddddddd/d'
4、找到文件被篡改來源,并優(yōu)化調整。
5、寫總結 故障報告。
六、控制默認權限的東西? umask? 臨時修改
1、創(chuàng)建文件默認最大的權限為666 (-rw-rw-rw-),其默認創(chuàng)建的文件沒有可執(zhí)行權限x位。
666
022 -
2、基于文件:默認權限規(guī)則 了解
從666計算
umask都為偶數(shù) 默認權限用減法
umask有奇數(shù) 默認權限用減法 然后奇數(shù)位加1
基于目錄:默認權限規(guī)則
從777計算
默認權限用減法
day17
一、sgid的作用就是讓普通用戶可以在執(zhí)行某個設置了sgid位的命令時,
擁有和命令對應用戶組(一般為root用戶組)一樣的身份和權限(默認)。
? ? locate搜索內容,默認從updatedb對應的數(shù)據(jù)庫中查找
updatedb 更新locate查找內容對應的數(shù)據(jù)庫。
? sgid基于目錄的作用:
讓不同的人創(chuàng)建文件屬于相同的用戶組,從而可以互相共享文件的權限
二、Linux系統(tǒng)定時任務:
1、什么是定時任務?
周期性的執(zhí)行任務計劃的軟件,Linux定時任務的常用軟件crond。
2、使用定時任務軟件,可以每天,每小時按你需求重復的執(zhí)行一項工作。
例如:備份 都是0點以后,2點爬起來備份,4點以后睡覺。
需要寫一個程序實現(xiàn)自動備份,然后讓定時任務軟件幫你執(zhí)行。
鬧鐘。。。??梢宰放笥?。。。
3、怎么用
(1)系統(tǒng)定時任務計劃
1.不用管理員干預,系統(tǒng)自動執(zhí)行。
2.也可以利用系統(tǒng)任務為管理員服務。
(2)用戶定時任務計劃
在Linux系統(tǒng)中,
cron是定時任務的軟件名,
crond是服務進程名,真正實現(xiàn)定時任務服務。
crontab命令是用來設置定時任務規(guī)則的配置命令。
要想配置定時任務,首先啟動crond服務。
systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
開啟自啟動:
systemctl disable crond.service
systemctl enable crond.service
三、crontab命令是用來設置定時任務規(guī)則的配置命令。
內容存放哪里了。定時任務內容存放的位置/var/spool/cron/
以當前用戶名作為文件名
-l l列表 查看已經設置的定時任務*
-e edit 編輯定時任務*
-u user 查看特定用戶下定時任務
root:
crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
編寫定時任務的語法:
# Example of job definition:
# .---------------- minute (0 - 59)
# |? .------------- hour (0 - 23)
# |? |? .---------- day of month (1 - 31)
# |? |? |? .------- month (1 - 12) OR jan,feb,mar,apr ...
# |? |? |? |? .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |? |? |? |? |
# *? *? *? *? *? (command to be executed)
共六列:
第一列:分 minute (0 - 59)
第二列:時 hour? (0 - 23)
第三列:日 day of month (1 - 31)
第四列:月 month (1 - 12) OR jan,feb,mar,apr ...
第五列:周 day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
第六列:要執(zhí)行的任務命令或程序
特殊符號:
* 表示的 每或每一 的意思
00 23 * * * cmd
- 連續(xù)區(qū)間 1-10
00 8-23 * * * cmd
, 列舉 1,2,3,4,8
00 1,2,3,4,8 * * * cmd
/n n是數(shù)字。
n代表自然數(shù)字,即“每隔n單位時間”,例如:每10分鐘執(zhí)行一次任務可以寫成
*/10 * * * * cmd