Linux之檔案許可權管理命令
一、檢視檔案屬性。
1、命令ls -l filename 檢視長格式形式檢視檔案詳細屬性。
ls -l file1 ##檢視檔案file1的詳細屬性
結果:
- |rw-r--r--| 1 |kiosk| kiosk| 0| Jul 21 09:18 | file1
[1] [2] [3] [4] [5] [6] [7] [8]
[1] 檔案的型別
— | ##空檔案,或者文字 |
---|---|
d | ##目錄 |
l | ##軟連結 |
s | ##socket 套接字 |
b | ##block 塊裝置 |
c | ##字元裝置 |
[2]檔案的許可權
rw- | r- - | r- - |
---|---|---|
1 | 2 | 3 |
1、[u] 檔案擁有者對檔案有什麼權利
2、[g] 檔案所有組對檔案有什麼權力
3、[o] 其他人對檔案能做什麼操作
[3]
(1)對檔案:檔案硬連結個數(檔案內容被記錄的次數)
(2)對目錄:目錄中子目錄的個數
[4]
檔案的所有人
[5]
檔案的所有組
[6]
(1)對檔案:檔案的大小
(2)對目錄:目錄中子檔案的元資料(可以理解為檔案的屬性)大小
[7]
檔案的內容被修改的時間
[8]
檔案的名稱
二、如何改變一個檔案或者目錄的所有者及所屬組呢?
chown yan 檔名/目錄名 ##改變一個檔案/目錄的所有者 chgrp student 檔名/目錄名 ##改變一個檔案/目錄的所屬組 chown yan:student 檔名/目錄名 ##同時改變一個檔案/目錄的所有者為yan,所屬組為student。 chown -R yan 目錄名 ##遞迴改變一個目錄及目錄下檔案或者目錄的遞迴改變所有者 chgrp -R student 目錄名 ##遞迴改變改變一個目錄及其子目錄或者子檔案的改變所屬組 chown -R yan:student 目錄名 ##同時改變一個目錄及其子檔案的所有者為yan,所屬組為student。
1、改變檔案的所有人,所屬組。
準備工作:
用root使用者建立一個file檔案並檢視其所有者所屬組均為root。
改變file檔案的所有者及所屬組。
chown yan file ##改變一個檔案/目錄的所有者
chgrp yan file ##改變一個檔案/目錄的所屬組
chown yan:student 檔名/目錄名 ##同時改變一個檔案/目錄的所有者為yan,所屬組為student。
結果:
同時改變檔案所有人及所屬組:
2、改變目錄的所有人,所屬組。
準備工作:用root使用者遞迴建立目錄dir,及dir1。
如圖所示:
使用命令:
chown -R yan dir ##遞迴改變dir目錄及目錄下檔案或者目錄的遞迴改變所有者
chgrp -R student dir ##遞迴改變dir目錄及其子目錄或者子檔案的改變所屬組
chown -R yan:student dir1 ##同時改變dir1目錄及其子檔案的所有者為yan,所屬組為student。
結果如圖所示:
三、如何改變檔案的許可權?
1.對許可權的理解
r
對檔案:是否可以檢視檔案中的內容 —>cat file
對目錄:是否可以檢視目錄中有什麼子檔案或者子目錄 ----> ls dir
w
對檔案:是否可以改變檔案裡面記錄的字元
對目錄:是否可以對目錄中子目錄或子檔案的元資料進行更改
x
對檔案:是否可以通過檔名稱呼叫檔案內記錄的程式
對目錄:是否可以進入目錄
2.更改方式
1、用r,w,x來改變檔案許可權。
格式:chmod 所有人|所屬組|其他人 + 讀|寫|執行許可權 檔案|目錄
chmod <u|g|o><+|-|=><r|w|x> file|dir
chmod u+x file1
chmod g-r file2
chmod o+w file3
chmod -r file4 ##刪除所有使用者的讀許可權
如圖所示:
注意:也可以用chmod o=r-w file 來設定其他人使用者的讀,執行許可權。
2、用數值的方法設定檔案和目錄的許可權。
r w x
4 2 1 #r取4,w取2,x取1
範例:
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
示例程式碼:
chmod 777 file2
效果圖:
四、系統預設許可權umask
umask:可以理解為系統收回的許可權
umask #系統建立檔案是預設保留的權力
umask 077 #臨時設定系統預留許可權為077
圖示:
PS:系統預設收回了所有使用者的執行許可權。
永久更改umask
vim /etc/profile ##此為系統配置檔案
59 if [ $UID -gt 199 ] && ["`id -gn`"="`id -un`" ]; then
60 umask 002 ##普通使用者的umask
61 else
62 umask 077 ##超級使用者的umask
63 fi
vim /etc/bashrc ##shell配置檔案
70 if [ $UID -gt 199 ] && [ "`id -gn`"="`id -un`" ]; then
71 umask 002
72 else
73 umask 077
74 fi
source /etc/profile ##讓更改立即生效
source /etc/bashrc
五、特殊許可權
特殊許可權是用於彌補一般許可權不能實現的功能,是針對檔案設定的一種特殊功能。
1.sticky ##粘制位
作用:
只針對目錄生效,當一個目錄上有sticky許可權時
在這個目錄中的檔案只能被檔案的所有者刪除
設定方式:
chomd o+t dir
chmod 1XXX dir
示例:
沒有加sticky許可權,一個公共目錄使用者可以刪除其他使用者建立的檔案。
給dir目錄加sticky許可權後:
2.sgid ##強制位
作用
對檔案: 只針對與二進位制可執行檔案
當檔案上有sgid時任何人執行此檔案產生的程序都屬於檔案的組
對目錄:
當目錄上有sgid許可權時任何人在此目錄建立的檔案都屬於目錄的所有組
設定方式:
chmod g+s file|dir
chmod 2XXX file|dir
對檔案設定sgid許可權:
準備工作:
設定/bin/watch檔案的所有組為student
用root使用者執行/bin/watch檔案:
用ps命令檢視
ps ax -o comm,user,group | grep watch
對目錄設定sgid許可權:
3.suid ##冒險位
只針對於二進位制可執行檔案
當檔案上有suid時任何人執行這個檔案中記的程式產生的程序都屬於檔案的所有人
設定方式
chmod u+s file
chmod 4XXX file
準備工作:
用root使用者執行/bin/watch 檔案
查詢系統的watch程序:
六、acl許可權列表
1.作用
讓特定的使用者對特定的檔案擁有特定的許可權
2.acl列表檢視
ls -l file
-rw-rwxr--+ 1 root root 0 Jul 21 15:45 file
#+表示acl開啟
getfacl file ##檢視acl開啟的檔案的許可權
## file: file ##檔案的名稱
## owner: root ##檔案的所有者
## group: root ##檔案的所有組
user::rw- ##檔案所有者的許可權
user:kiosk:rwx ##指定使用者的許可權
group::r-- ##檔案所有組的權力
mask::rwx ##能賦予使用者的最大權力
other::r-- ##其他人的許可權
示例:
3.acl列表的管理
getfacl file
setfacl -m u:username:rwx file ##設定username對file擁有rwx許可權
setfacl -m g:group:rwx file ##設定group對file擁有許可權
setfacl -x u:username file ##從acl列表中刪除username
setfacl -x g:group file ##從acl列表中刪除group
setfacl -b file ##關閉file上的acl列表
設定acl許可權:
刪除acl許可權:
關閉acl列表:
注意:開啟acl許可權後,用ls -l 查詢到的檔案許可權是假的,真實的檔案許可權需要用getfacl filename檢視,如果使用chmod g-w file 會減去mask裡面的許可權,重置用 setfacl -m m:rwx file
4.mask值
在許可權列表中mask表示能生效的權力值
當用chmod減小開啟acl的檔案許可權時mask值會發生改變
chmod g-x file2
如果要恢復mask值
setfacl -m m:rwx file
5、acl的預設許可權設定
acl預設許可權只針對目錄設定
“acl許可權只針對設定完成之後新建立的檔案或目錄生效,而已經存在的檔案是不會繼承預設許可權”
setfacl -m d:u:student:rwx /mnt/dir
setfacl -k /mnt/dir
新建立檔案:繼承預設許可權