1. 程式人生 > >第 五天 文件權限 文件內容排序

第 五天 文件權限 文件內容排序

att 網頁 讀寫 用戶 and cut 啟動 文檔 匹配

linux root組 不是管理員角色 root組並不是有root權限

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容易丟

普通用戶不能改變用戶所有者,可以改變自己加進去過的所屬組

rw 6
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 查看文件權限

第 五天 文件權限 文件內容排序