第 五天 文件權限 文件內容排序
useradd -r -m
r一般配合m使用
文件權限設置 是通過用戶登錄拿到的令牌中(uid,gid ,groups)
與文件本身所有者所屬組想對比,識別順序是從uid 到groups
一旦令牌uid=文件所有者,則可以修改文件所有權限,除了修改文件所有者內容,其他都可以修改,如果令牌uid!=文件所有者,則對比令牌gid=文件所屬組,如果等於有文件所屬組權限,如果令牌gid!=文件所屬組,則對比令牌groups=文件所屬組,如果等於則有文件所屬組權限,如果不等於則為其他人權限
token(uid ,gid,groups)
file uid =read write 先看uid再看權限
想看到最新 file uid =read write excute必須重新登錄
r
w
x
二進制文件一般讀取沒有實際意義 ,不是隨便一個權限賦予讀都有意義
讀和寫一般給文本文件,讀權限對二進制文件不受影響
file r看文件內容 w修改文件內容
reset 重置字符命令
chown wang f1 把f1文件所有者改wang
chgrp rpc f1 把f1文件所屬組改為rpc
usermod -aG g2 wang 把王加入g2組 不帶a的話g2容易丟
普通用戶不能改變用戶所有者,可以改變自己加進去過的所屬組
w
目錄無x執行,對目錄執行不了命令,對目錄不能進行任何操作
目錄無r權限,不能看到文件名,但可以不看文件名對其進行操作
不能進行刪除,因為寫權限對應目錄的block塊block塊放的是文件的i節點和文件名
rm執行刪除的是文件名和本目錄保存的i節點紀錄
可以被刪除,可以執行刪除命令對文件裏的數據塊進行操作
f1 文件訪問三類人1個是所有者 2所屬組 3是其他人
所有者可以賦予文件權限
chmod u=rxw
chmod 授予文件權限
方法1 mode 法
chmod who opt per file
who:u g o a(all)
opt: + - =
per:r w x X
chmd -x f1 = chmod a-x f1
chmod u+x file
chmod u+x,g-w,o= file
只有w權限 可以寫可以追加 >f1 echo >> f1
dir
f1 inode
f2 inode
讀寫權限root不受控制
如果文件沒有執行權限 文件不能運行包括root
讀權限對二進制文件不受影響
如果文件沒有讀權限file 命令就判斷不出來文件類型
用戶對目錄讀權限可看文件列表
如果對目錄沒有執行權限 不能cd進去 不能查看文件內容不能看屬性
用戶獲取文件的權限是按1所有者 ,2所屬組 3是其他人 排列
rm .* 包括 ..
u盤中vfat文件系統不支持linux文件系統 只是兼容按linux系統顯示
linux權限是針對linux文件系統使用
文件系統可以混用,但是linux使用linux文件系統
方法2 參考文件法 參考f1設 f2 f3
chmod --reference=f1 f2 f3
方法3 八進制授權 數字法
rwx rw r--
111 110 100
rwx
7 6 4
r=4
w=2
x=1
---000 0
--x001 1
-w-010 2
-wx011 3
r--100 4
r-x101 5
rw-110 6
rwx111 7
file ;6rw ,4r ,0,1x 有執行權限是奇數肯定有x
dir :7rwx 5r-x ,0
chmod -R a+x dir1 給dir1 文件以下遞歸都給x權限
執行權限意味著危險性
chmod -R +X dir2 大X只針對目錄加執行權限
如果文件有執行權限則加X
如果文件夾只有執行權限,則可以運行文件夾裏的程序
重點
chmod -R 777 dirl / 非常危險不亞於重裝系統 所有文件為777
chown -R wang / 非常危險把所有 把所有文件為wang
遞歸很危險
chown root:root 文件
chown root.root 文件改所有者 所屬組
運維每次執行命令都要有記錄
umaskdefault =file666/dir 777
因為有安全風險所以才給666
文件基數加1 6+1 就是奇數加一
對目錄公式正確
文件如果有基數加1 偶數不變
.bashrc 裏放家目錄umask 每個用戶可以設置每個與自己不同的unmask
umask mask ;掩碼 取消對應的權限 奪1
666 110110110
125 001010101
642 110100010
umask -p 下顯示umask
umask -p >> .bashrc
umask u=rwx,g=r ,o= 直接寫默認權限
0037
SUID ,SGID ,Sticky
當程序有SUID權限 繼承二進制所有者的權限而運行文件
任何人都是以這個suid權限的所有者身份運行文件
變成文件的所有者root的權限對程序進行操作給s權限相當於給root
只適合二進制可執行程序文件,作用在目錄沒有意義
小s是有x+S
大S是大S
chomd u+s
chmod 4755 suid 為4
SUID權限非常危險 任何編輯的程序不能加SUID
SUID只適合於二進制可執行程序上 ,SUID對文件夾沒有效果,既不能繼承所有者權限去做事
su unmount
SGID 繼承二進制程序所屬組的權限而運行文件
SGID做用於目錄,此目錄新建的文件,和文件夾繼承目錄的所屬組
chmod g+s
chomd 2755 sgid 為 2
sticky1 粘滯位 只針對作用於目錄,此文件只能被所有者刪除
生產中有一個項目和項目文檔,目錄有寫權限,如果加粘滯位只能刪自己的
chmod o+t
chmod 1755 sticky1 為1
groupadd opts
usermod -aG opts wang
usermod -aG opts mage
chgrp opts *
SGID做用於目錄,此目錄新建的文件繼承目錄的所屬組
chattr 對特定文件加以保護避免root賬戶修改,刪除 ,只能讀
lsattr 看文件鎖定情況
chattr +i file1 鎖定文件 ,不能修改文件內容
chattr -i file1 去鎖
chattr +a file1 鎖定文件 ,可以追加 文件>>
chattr -a file1 解鎖文件
重點 chattr +A file1 atime鎖定讀時間
鎖定文件讀時間可以大大提升性能如/var/www/html 裏的文件
ACL權限 ext系列支持acl
centos6後來掛載的分區不支持acl
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
一單啟用acl 組權限變成mask權限 group=mask權限
除了其他人和user其他的在這個組的啟動權限mask權限是限高組權限
一旦acl權限開啟則group就是mask限高線
acl執行判斷順序也是getfacl從上到下匹配 ,先看是不是user如果是其他權限不生效
如果用戶有多個組權限則累計權限, 如果都不是則other
自定義用戶,和組 不能都不能超過mask
,默認權限不能
acl權限如果用戶mage 的文件f1 屬g1 g2多個組的話可以累加權限
setfacl -m u:wang:0 f1 set file acl 讓王賬戶不能讀不能寫
setfacl -m u:mage:rw f1 讓mage可以讀寫
setfacl -M acl.txt f1 通過acl.txt文件來設置 f1 文件類型
cat >acl.txt
u:wang:rx
g:g1:rx
g:g2:rx
setfacl -M acl.txt f1
setfacl -x g:g2 f1 刪除組
setfacl -X acl.txt f1 通過acl.txt文件來刪除 f1 文件類型
setfacl -b f1 刪除所有acl 權限
getfacl f1 看f1 裏的權限
getfacl file1 |setfacl --set-file=- file2 根據file1設置file2
cp -a cp -p復制可以保留acl權限,如果新建的分區支持acl權限則保留不住
備份還原acl權限
getfacl -R /tmp/dir > acl.txt
setfacl -R -b /tmp/dir
setfacl -R --set-file=acl.txt /tmp/dir
group:g1:rw-
group:g2:--x
mage屬於 g1 g2 則 馬哥可以rwx
mask 定義除了user 和other 的最高權限
setfacl -m mask::r f1 除了除了user 和other 其他人都是r
一旦設了acl 權限 則chmod g=rw 改的是 mask::rw
centos7以前 默認ext文件系統支持acl 默認手工創建的文件下午acl需手動添加
centos 7都支持
cat用來看文本文件
腳本出錯,多了空格用cat -A 可以看到
cat -n 加行號 所有行號
cat -b 加行號 只加有文字的
cat -s 壓縮空行 將多余空行壓縮一個
cat -A 顯示回車顯示空格所有控制符
tac f1.txt 反向顯示文件
rev f1.txt 反向顯示文件 按一行反向顯示 reverse
more 可以和管道配合
more 空格往下翻 b往上翻
ls -R /etc | more 如果列表特別多可以用分頁顯示就用more
長
less
less less可以分頁顯示
man用的就是less
head -n 2 /etc/passwd 顯示2行
head -c 12 顯示12個字節
openssl rand -base64 100 |tr -dc ‘[:alnum:]’|head -c 12 生成只有字母隨機數
tail 用來查看日誌
tail -f /data/f2.log 跟蹤文件內容如果變化就顯示
如果刪除文件則tail -f 跟蹤還存在 tailf 類似 tail -f
tail -F /data/f1 跟蹤文件名
-F跟中文件名如果把文件刪了則顯示找不到文件,如果創建新的文件名字與舊文件相同則跟蹤新文件內容
[[email protected] etc]# echo {1..10}|tail -c4
10
[[email protected] etc]# echo {1..10}|tail -c5
9 10
ifconfig ens33 |head -n2 |tail -n1
cut 剪切的意思 取出文件的一部分加以顯示cut以列為單位取
取文本文件按列來取必須給分隔符
屬性字段列域
-f #,# -f 指定列 1,3 1和3列
#-# 1-3 是1到3列
cut -d: -f 1,3 /etc/passwd 1,3 以:做分隔符 取1和3列
who |cut -c 1-9 -c取字符 1-9 是1到9個字符
cut -c1-9
--output-delimiter= 指定輸出分隔符
df |cut -c44-46
取ip地址
ifconfig eth0 |head -n2|tail -n1|tr -s " " ":" |cut -d: -f4
rpm -ivh
systemctl restart sshd 重啟sshd
同一執行2個命令關閉防火墻
centos6
service iptables stop 關閉防火墻
chkconfig iptables off 讓防火墻開機不啟動
service network retart
centos7
systemctl stop firwalld
systemctl disable firewalld
systemctl restart network
echo djs > /var/www/html/index.html 網頁文件
/var/log/httpd/access_log 網頁訪問日誌裏的 訪問ip地址
cat /var/log/httpd/access_log | cut -d" " -f1 看訪問ip地址
/var/log/httpd/access_log
172.22.x.y x:學號 y:
paste f1 f2 文件合並 把兩個文件合並進同一個行
1 11
2 12
3 13
4 14
cat f1 f2 縱向合並
1
2
3
4
11
12
13
14
paste -s f1 f2 放1行
1 2 3 4
10 11 12 13
paste -d":" f1 f2 用冒號作文分隔行
wc wordcount簡寫 行 單詞 字節
空格隔開就是單詞
wc 和管道配合
ls |wc
wc -l 多少行
wc -w 單詞 空格後就是單詞 word
wc -c 字節 bytes
wc -m 字符數 有漢字則字節不一樣 chars
wc -L 顯示行最長的
/var/log/httpd/access_log 網站訪問量pv 就是這個日誌
pv page view 訪問頁面數量 有多少行有多少pv
sort -t: -k3 /etc/passwd 給:分隔符 第三列排序
sort 默認按第一行單詞排序
sort -t: -k3 /etc/passwd -n 是數字排序
sort -r 是倒敘
netstat -nt 查詢ip pid 看進程號
tasklist 進程編號 pid 4508 window編號
findstr過濾
netstat -no |findstr 4508
sort -u 把重復的刪掉
sort -f忽略大小寫
sort -R 隨機排序
[[email protected] ~]#cut -d":" -f"1,3" /etc/passwd |sort -t":" -k2 -nr
uniq 支持管道
uniq 把相鄰的重復行合並成一個
uniq -c 顯每行重復出現次數
uniq -u 顯示不曾重復的行
也就是沒有被合並過的行
[[email protected] ~]#cat /var/log/httpd/access_log | cut -d" " -f1|sort |uniq -c|sort -t" " -k1 -nr
rpm -ivh /misc/cd/Packages/lrzsz-0.12.20-27.1.e16.x86_64.rpm
last 顯示日誌 看重新登錄的信息 空地址為本地登錄
root pts/2 172.18.140.77 Sat Mar 9 11:00 still logged in
root pts/1 172.18.140.77 Sat Mar 9 10:23 still logged in
root pts/1 172.18.140.77 Sat Mar 9 09:47 - 10:23 (00:36)
root pts/0 :0 Sat Mar 9 09:46 still logged in
root :0 :0 Sat Mar 9 09:46 still logged in
reboot system boot 3.10.0-957.el7.x Sat Mar 9 09:45 - 14:09 (04:23)
root pts/4 192.168.209.1 Sat Mar 9 09:15 - down (00:30)
root pts/4 192.168.209.1 Fri Mar 8 23:08 - 23:59 (00:51)
mage pts/3 :0 Fri Mar 8 23:06 - 09:45 (10:38)
root pts/2 192.168.209.1 Fri Mar 8 22:46 - down (10:59)
root pts/0 192.168.209.1 Fri Mar 8 22:01 - down (11:44)
root pts/1 192.168.209.1 Fri Mar 8 19:44 - down (14:00)
mage :0 :0 Fri Mar 8 19:30 - down (14:14)
mage tty3 Fri Mar 8 18:36 - 09:45 (15:09)
mage tty3 Fri Mar 8 18:35 - 18:35 (00:00)
root pts/0 192.168.209.1 Fri Mar 8 18:29 - 22:00 (03:31)
root tty2 Fri Mar 8 18:29 - 09:45 (15:16)
reboot system boot 3.10.0-957.el7.x Fri Mar 8 18:28 - 09:45 (15:17)
root pts/2 192.168.209.1 Fri Mar 8 18:24 - crash (00:03)
統計遠程主機登錄次數前三個ip
[[email protected] ~]#last |tr -s " "|cut -d" " -f3|sort|uniq -c|sort -nr|head -n3
diff fstab2 fstab 比較2個文件 區別
diff -u fstab2 fstab 比較2個文件 顯示格式信息 如時間適合用於補丁文件
diff -u 顯示格式信息 如時間
diff只能比較兩個文件 ,如果把其中一個文件刪了另一個文件需要用其文件名並且命令備份
備份操作
diff -u fstab2 fstab >diff.log
rm -f fstab2
patch -b fstab diff.log
新文件是fstab=fstab2 fstab.org
stat /tmp | head -n4 |tail -n1|cut -d" " -f2|cut -c2-5 查看文件權限
第 五天 文件權限 文件內容排序