1. 程式人生 > >Linux之檔案許可權管理命令

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

在這裡插入圖片描述
新建立檔案:繼承預設許可權
在這裡插入圖片描述
在這裡插入圖片描述