UGO權限linux
1) 文件對於擁有者的權限 Uservim
2) 文件對於所屬組裏面的用戶的權限 Group服務器
3) 文件對於其餘人的權限 Othersui
對於文件的權限spa
1)對於文件可讀 r操作系統
2)對於文件可寫 w排序
3)可執行文件 x繼承
權限體如今什麼地方?ip
[root@jenny ~]# ll /usr/sbin/useraddci
-rwxr-x---. 1 root root 118232 Oct 31 00:33 /usr/sbin/useradd
1位 顯示了文件的類型
- 普通文件
d 目錄文件
l 連接文件
c 字符設備文件
b 塊設備文件
s 套接字文件
p 管道文件
2-4位 表明的是User的權限
5-7位 表明的是Group的權限
8-10位 表明的是Others的權限
修改權限相關指令
1) chown 修改文件的擁有者
chown jenny file 將文件擁有者修改成jenny用戶
chown :testgroup file 將文件所屬組變動爲testgroup
chown root:root file 同時將文件擁有者和所屬組修改成root
2) chgrp 修改文件的所屬組
chgrp GROUP FILENAME
3) chmod 修改文件的權限值
經過字符表達方式修改文件權限:
chmod u + r file
g - w
o = x
經過數字表達方式修改文件權限:
r-- = 100 = 4
-w- = 010 = 2
--x = 001 = 1
rw- = 4+2 = 6
r-x = 4+1 = 5
rwx =7
[root@jenny srv]# chmod 645 file
[root@jenny srv]# ls
file
[root@jenny srv]# ll
total 0
-rw-r--r-x. 1 root root 0 Apr 20 09:55 file
練習:
1.添加用戶carol,jenny,ivy
2.建立文件/tmp/file
3.要求
1) carol用戶可以vim file文件,並正常保存退出 將文件擁有者變動爲carol,rw-
2) jenny用戶可以看到file文件的內容,不容許修改 r--
3) ivy用戶也可以看到file文件的內容,不容許修改 r--
4) 其餘剩餘用戶對於文件沒有任何權限 ---
答案:
[root@jenny tmp]# ll /tmp/file
-rw-r-----. 1 carol testgroup 23 Apr 20 10:21 /tmp/file
55 chown carol file
64 groupadd testgroup
65 usermod -aG testgroup ivy
66 usermod -aG testgroup jenny
67 id ivy
68 id jenny
69 ll
70 chown :testgroup file
對於文件的權限
1)對於文件可讀 r
2)對於文件可寫 w
3)可執行文件 x
對於目錄的權限
- r: 可讀取目錄結構和權限
- w: 可更改目錄結構列表、新建 / 刪除 / 重命名 / 轉移子文件 / 目錄。
- x: 表示用戶可進入到該目錄中
目錄/testdir:
carol: r-x
ivy|jenny: rwx
others: r-x
86 mkdir /testdir
87 ll -d /testdir/
88 chown carol:testgroup /testdir/
89 ll -d /testdir/
90 chmod 575 /testdir/
91 ll -d /testdir/
文件testfile:
carol:rw-
ivy|jenny: r--
others: ---
建立文件、目錄默認權限和umask值有關
公式: 最大權限值-umask=默認權限值
目錄: 777 - 022 = 755
文件默認權限: 666 - 022 = 644
權限分類
1) UGO 基礎權限 - 控制文件、目錄的用戶行爲
root 用戶是不受UGO權限限制的
2) ACL 權限 - UGO權限的補充
alice r--
bob rw-
jenny rwx
ivy r-x
設置的方式
setfacl -m u:user:permission file
setfacl -m g:group:permission file
刪除某一條規則
setfacl -x u:user file
setfacl -x g:group file
羅列ACL規則
getfacl file
3) 特殊權限
SUID: 文件,任何人在執行指定文件的時候,臨時擁有文件擁有者用戶的權限 /usr/bin/passwd
設置方式 chmod u+s filename
SGID: 目錄,繼承目錄所屬組
設置方式 chmod g+s dirname
STICKY: 目錄, 只有 root 用戶和文件擁有者有權刪除目錄中的文件
設置方式 chmod +t dirname
4) ATTR權限(隱藏權限)
設置命令:
chattr +權限值 file
查看:
lsattr file
權限的含義:
i: 文件不可被刪,不可被改變(root也不行)
a: 文件僅可被追加內容,不可被修改
A: 不修改文件的訪問時間
5) selinux
通常狀況下,在生產環境中,關閉selinux
查看selinux
[root@jenny tmp]# getenforce
Enforcing
設置的方式
1. [root@jenny tmp]# setenforce 0
Permissive
注意:上述針對當前環境有效,服務器重啓後無效
2. vim /etc/selinux/config
SELINUX=disabled
注意:重啓服務器後生效
回家做業
1. man chattr查看attr具備哪些權限,分別對應的含義
二、權限相關做業:
題目
建立用戶carol,ivy,jenny,kevin,alice
建立/test目錄,並在目錄下建立testfile1,testfile2,testfile3
要求:
1) 全部用戶可以查看testfile1的內容。
usermod -aG testgroup carol
usermod -aG testgroup ivy
usermod -aG testgroup jenny
usermod -aG testgroup jenny
usermod -aG testgroup alice
chown :testgroup /test/testfiel1
chmod g+r /test/testfiel1
2) carol、ivy、jenny可以修改testfile1
setfacl -m u:carol:rw /test/testfiel1
setfacl -m u:ivy:rw /test/testfiel1
setfacl -m u:jenny:rw /test/testfiel1
3) kevin、alice可以修改testfile2
setfacl -m u:kevin:rw /test/testfiel2
setfacl -m u:alice:rw /test/testfiel2
4) kevin、alice可以管理目錄下的建立、刪除文件操做
setfacl -m u:kevin:rwx /test
setfacl -m u:alice:rwx /test
5) carol、ivy、jenny不可以刪除、也不能建立文件
setfacl -x u:carol /test
setfacl -x u:ivy /test
setfacl -x u:jenny /test
6) testfile3 僅容許追加內容,不容許修改
chattr +a /test/testfiel3
7) 建立/tmp/testdir目錄,要求該目錄下建立的全部文件所屬組都爲testgroup這個組
sgid權限
mkdir /tmp/testdir
chgrp testgroup /tmp/testdir
chmod g+s /tmp/testdir
查找
whereis 查找命令絕對路徑(及其幫助文檔)對應的指令
which 查找命令絕對路徑所在位置
locate 基於文件名尋找文件路徑 (安裝locate程序:yum -y install mlocate.x86_64)
1. locate 運行機制
每隔一天,遍歷操做系統文件,並將遍歷的結果存放至/var/lib/mlocate/mlocate.db
當搜索的時候,直接讀取/var/lib/mlocate/mlocate.db,將結果顯示出來
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
能夠經過執行updatedb,遍歷操做系統文件
2. locate 特色
1)搜索的速度是相對較快的
2)不是實時的
3)模糊匹配
4)不是全系統掃描
/etc/updatedb.conf
5)查找條件比較單一
find 全方位搜索
1. 特色
1)實時查找 --> 慢
2)查找條件豐富 權限、大小、時間、文件類型
3)能夠指定查找後動做
2. find命令格式
find [路徑] 查找條件 [執行動做]
一個條件一個參數,一個find命令能夠有多個條件
例子:
1. 查找系統中名稱爲useradd的文件
find / -name useradd
查找系統中/usr/sbin目錄下,文件名稱不叫useradd的文件
find /tmp ! -name test
2. 查找系統中佔用大小大於7M的文件
find / -size +7M
du -sh * 查看當前目錄下全部文件大小
查找系統中文件大小在7M到10M之間的文件
find / -size +7M -size -10M
find / -size +7M -size -10M 2> /dev/null
3. 查找系統中的塊設備文件
find / -type b
4. 基於用戶和組的查找
-user -group
-uid -gid
5. 查找7天內內容修改過的文件名
find / -mtime 7
6. 基於權限查找
find / -perm 644 表明徹底匹配644
find / -perm -644 表明需知足的最小權限
找jenny用戶可寫的文件,且jenny用戶是文件的擁有者
find / -user jenny -perm -200
執行動做, {}替代找到的文件 \;表明語句結束符
-ok 交互式的執行方式
find /tmp -name test -ok ls -l {} \;
-exec 非交互的執行方式
find /tmp -name test -exec ls -l {} \;
做業:
1) 查找系統中文件名爲wtmp的文件
find / -name wtmp
2) 查找系統中文件大小超過10M的文件名
find / -size +10M
3) 查找access time比/etc/fstab更新的文件
4) 查找系統中擁有者是root,而且所屬組是input的文件
find / -user root -group input
5) 查找文件類型是連接文件的名稱
find / -type l
6) 將查找文件名爲test的文件移動到/srv目錄
find / -name '*test*' -exec mv {} /srv \;
打包、壓縮
1. zip程序
yum -y install zip
壓縮
zip [zipfile] [file]
zip -r test2.zip test # 壓縮目錄加-r選項
解壓
yum -y install unzip
unzip [zipfile] # 默認狀況下,解壓到當前目錄
unzip test2.zip -d /opt/ # 指定解壓到/opt目錄
2. gzip 程序 、bzip2程序、xz程序
命令的用法
gzip 壓縮 gunzip 解壓
bzip2 壓縮 bunzip2 解壓
xz 壓縮 unxz 解壓
特色
1)壓縮時,源文件會自動被壓縮程序處理,源文件會不存在
2)解壓時,壓縮文件會消失,源文件出現
3)不可以壓縮目錄
4)沒法將多個文件壓縮至一個壓縮包
3. tar ---> 打包
用法:
打包 tar -cf /tmp/test.tar [file]
解包 tar -xf /tmp/test.tar
打包並壓縮 tar -czf /tmp/test.tar.gz [file] # 調用gzip程序完成壓縮
tar -cjf /tmp/test.tar.bz2 [file] # 調用的bzip2 程序完成壓縮
tar -cJf /tmp/test.tar.xz [file] # 調用xz程序完成壓縮
解壓並解包
tar -xzf test.tar.gz test #調用gzip完成解壓
tar -xjf test.tar.bz2 test #調用bzip2完成解壓
tar -xJf test.tar.xz test #調用xz程序完成解壓
指定位置解壓:
tar -xzf test.tar.gz -C /srv/
實驗:
1. 在/tmp/建立 test目錄,壓縮包名爲/tmp/test.tar.xz 對該目錄調用xz方式進行壓縮
tar -cJf /tmp/test.tar.xz /tmp/test
2. 將/tmp/test.tar.xz解壓,解壓到/opt目錄
tar -xJf /tmp/test.tar.xz /tmp/test
注意: tar路徑問題
若是被打包的文件是絕對路徑,tar會自動將其變爲相對路徑。
tar -czf /tmp/efg /srv/file1 /srv/file2
tar: Removing leading `/' from member names
[root@jenny srv]# tar -xzf /tmp/efg.tgz -C /opt/
[root@jenny srv]# cd /opt/
[root@jenny opt]# ls
srv
[root@jenny opt]# cd srv/
[root@jenny srv]# ls
file1 file2
重定向做業:
1. 將uid最大的一個用戶名字顯示出來
sort -t: -k 3 -n /etc/passwd | tail -n1 | cut -d: -f1
2. 將/var/log目錄下的文件根據文件大小排序
ll | sort -k5 -n -r
3. 將/etc/fstab文件中非註釋行(以#開頭的行爲註釋行) 寫入/tmp/fstab文件中
grep -v ^# /etc/fstab > /tmp/fstab
4. 將boot目錄下的vmlinuz文件的擁有者截取出來
ll /boot/vmlinuz-* | cut -d' ' -f3