1. 程式人生 > >檔案(目錄)屬性,檔案許可權,特殊許可權(強制位,冒險位)

檔案(目錄)屬性,檔案許可權,特殊許可權(強制位,冒險位)

1.檔案屬性檢視:

ls -l filename 

 -    rw-rw-r--   1     kiosk   kiosk    0    Oct 2 17:05   file 
[1]    [2]       [3]     [4]     [5]    [6]       [7]        [8]

 註釋: 
[1]檔案型別    
	 -           # 普通檔案    
	 d           # 目錄    
	 s           # socket套接字,程式對外開放的介面,可以通過介面進入程式    
	 l           # 軟連結,就是快捷方式    
	 p           # 管道    
	 c           # 字元裝置,顯示字元的裝置即終端    
	 b           # 塊裝置,可以進行終極儲存,類似U盤
	 
[2]讀寫許可權 
rw-     rw-     r--  
@        $       *    

        @	        # 檔案所有人對檔案能做的動作    
 	$	        # 檔案所在組的組成員能對檔案做的動作    
 	*	        # 其他人對與檔案能做的動作 [3]檔案內容被系統記錄的次數 
 	
[4]檔案擁有者 

[5]檔案所在組 

[6]檔案大小 

[7]檔案最後一次被更改的時間 

[8]檔名稱

在這裡插入圖片描述

2.檢視目錄屬性

ls -ld  westos
 d      rwxr-xr-x    2     root   root    6    Sep 28 08:18   westos
[1]        [2]      [3]    [4]    [5]    [6]       [7]          [8] 
  
註釋: 

  [1]型別(同文件),元資料,控管資料可以被誰看
  [2]許可權
  [3]子目錄個數
  [4]目錄擁有者
  [5]目錄所在組
  [6]目錄中內容的屬性的大小
  [7]目錄中檔案增加或減少或被更名的時間
  [8]目錄名稱	  

在這裡插入圖片描述

3.檔案使用者組的更改

(1)chown
chown  [使用者名稱稱]  [檔案]      # 更改檔案所有人,只有超級使用者才可以執行

[[email protected] Desktop]# chown student file
[[email protected] Desktop]# ls -l file
-rw-r--r-- 1 student root 16900 Sep 26 09:12 file

在這裡插入圖片描述

chown -R   [使用者]   [目錄]	       # 更改目錄本身以及目錄中的子檔案的所有人 	

[[email protected] Desktop]# ll -ld westos/
	drwxr-xr-x 2 root root 6 Sep 28 08:18 westos/
[
[email protected]
Desktop]# chown student westos/ [[email protected] Desktop]# ll -ld westos/ drwxr-xr-x 2 student root 6 Sep 28 08:18 westos/

在這裡插入圖片描述

chown -R  []:[]    [檔名]      # 檔案使用者名稱和組名一起改

[[email protected] Desktop]# ls -l file
	-rw-r--r-- 1 student root 16900 Sep 26 09:12 file
[[email protected] Desktop]# chown root:student file
[[email protected] Desktop]# ls -l file
	-rw-r--r-- 1 root student 16900 Sep 26 09:12 file

在這裡插入圖片描述

(2) chgrp
chgrp  [組名稱]  [檔案]       # 更改檔案所有組

在這裡插入圖片描述

chgrp   -R   [組名] 	[目錄]	      # 改目錄本身以及目錄中的子檔案的所有組

在這裡插入圖片描述

4.許可權

(1)識別許可權
 rwx	                    r-x	           	r-x 
使用者許可權(u)              組成員許可權(g)	    其他使用者許可權(o)   
(2)許可權種類
r  
  	r許可權針對檔案時,表示可以檢視檔案內容   
  	r許可權針對目錄時,表示可以ls 檢視目錄中存在的檔名稱   
w  
  	 w許可權針對檔案時,表示可以更改檔案的內容   
  	 w許可權針對目錄時,表示是否可以刪除目錄中的子檔案或者子目錄   	x   
  	 x許可權對於檔案時,表示是否可以開啟檔案當中記錄的程式   
  	 x許可權對於目錄時,表示是否可以進入目錄中 
(3)改許可權
chmod格式:
      
chmod [u/g/o]   [+/-/=]    [r/w/x]   [檔名] 或者  chmod  [許可權數字]  [檔名] 
u=rwx=7	  g=rwx=7    o=rwx=7         777 
u=rw-=6   g=r--=4    o=r--=4         644 
r = 4     w = 2      x = 1    - = 0 
7=rwx,
6=rw-,
5=r-x,
4=r--,
3=-wx,
2=-w-,
1=--x,
0=---

[[email protected] Desktop]# ll file
	-rw-r--r-- 1 root student 16900 Sep 26 09:12 file
[[email protected] Desktop]# chmod 777 file
[[email protected] Desktop]# ll file
	-rwxrwxrwx 1 root student 16900 Sep 26 09:12 file
[[email protected] Desktop]# chmod ug-w file
[[email protected] Desktop]# ll file
	-r-xr-xrwx 1 root student 16900 Sep 26 09:12 file

在這裡插入圖片描述

5.檔案的預設許可權

<1>檢視預設許可權
umask	             # 顯示系統預留許可權值
[[email protected] Desktop]# umask
0022   

umask 077	         # 臨時修改umask值
[[email protected] Desktop]# umask 077
[[email protected] Desktop]# umask
0077 
<2>永久修改預設許可權
[[email protected] Desktop]# vim /etc/bashrc      
	70     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
	71        umask 002     # 普通使用者的更改 
	72     else 
	73        umask 022     # 超級使用者的更改 
	74     fi 
[[email protected] Desktop]# vim /etc/profile      
	59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
	60     umask 002    # 普通使用者的更改 
	61 else 
	62     umask 022    # 超級使用者的更改  
	63 fi 
	

# 修改完後需要重新整理配置
[[email protected] Desktop]#source /etc/bashrc           # 重新整理bash配置 
[[email protected] Desktop]#source /etc/profile            # 刷新系統配置

6.特殊許可權

<1>stickyid 強制位
o+t(t=1)	只針對目錄,當一個目錄上有t許可權時,這個目錄中的檔案只能被檔案擁有者刪除 

chmod o+t/1---  directroy  

  [[email protected] Desktop]# mkdir /westos
  [[email protected] Desktop]# ls -ld /westos/
 	drwx------ 2 root root 6 Sep 28 11:52 /westos/
  [[email protected] Desktop]# chmod 777 /westos/    # 給westos目錄賦予最大許可權
  [[email protected] Desktop]# ls -ld /westos/
	drwxrwxrwx 2 root root 6 Sep 28 11:52 /westos/
  [[email protected] Desktop]# su - student
  	Last login: Fri Sep 28 11:52:20 EDT 2018 on pts/0
  [[email protected] ~]$ cd /westos/
  [[email protected] westos]$ ls 
  [[email protected] westos]$ touch studentfile    # 以student使用者身份在westos目錄下建立檔案
  [[email protected] westos]$ ls
  	studentfile
  [[email protected] westos]$ logout
  [[email protected] Desktop]# su - haha
 	 Last login: Fri Sep 28 11:49:21 EDT 2018 on pts/0
  [[email protected] ~]$ cd /westos/
  [[email protected] westos]$ lsstudentfile
  [[email protected] westos]$ touch westosfile    # 以haha使用者身份在westos目錄下建立檔案
  [[email protected] westos]$ ls /westos/studentfile  westosfile
  [[email protected] westos]$ rm -fr studentfile  # 無論在什麼使用者下都可以刪除不屬於自己建立的檔案 
  [[email protected] westos]$ ls  
 	 westosfile
  [[email protected] westos]$ rm -fr westosfile 
  [[email protected] westos]$ ls
  [[email protected] westos]$ logout
  [[email protected] Desktop]# chmod 1777 /westos/  # 給目錄賦予t許可權
  [[email protected] Desktop]# su - student
 	 Last login: Fri Sep 28 11:53:02 EDT 2018 on pts/0
  [[email protected] ~]$ cd /westos/
  [[email protected] westos]$ ls
  [[email protected] westos]$ touch studentfile
  [[email protected] westos]$ ls
	studentfile
  [[email protected] westos]$ logout
  [[email protected] Desktop]# su - haha
  	Last login: Fri Sep 28 11:53:58 EDT 2018 on pts/0
  [[email protected] ~]$ cd /westos/
  [[email protected] westos]$ ls
 	studentfile
  [[email protected] westos]$ touch westosfile
  [[email protected] westos]$ ls
  	studentfile  westosfile
  [[email protected] westos]$ rm -fr studentfile     # 其他使用者不能刪除不屬於自己建立的檔案
  	rm: cannot remove ‘studentfile’: Operation not permitted
  [[email protected] westos]$ rm -fr westosfile   # 可以刪除自己建立的檔案
  [[email protected] westos]$ ls
  	studentfile
<2>sgid粘制位
g+s(s=2)	針對目錄,在目錄中建立的檔案都自動歸屬到目錄所在組,針對二進位制檔案,檔案內記錄的程式在執行時和執行者的組身份沒有關係,而是以二進位制檔案的所有組的身份執行的 


chmod g+s/2--- file/directory

[[email protected] ~]# cd Desktop/
[[email protected] Desktop]# ls -ld /westos/
	drwxrwxrwt 2 root root 24 Sep 28 11:56 /westos/
[[email protected] Desktop]# groupadd linux
[[email protected] Desktop]# chgrp linux /westos/    # 更改/westos目錄的組為linux
[[email protected] Desktop]# ls -ld /westos/
	drwxrwxrwt 2 root linux 24 Sep 28 11:56 /westos/
[[email protected] Desktop]# touch /westos/file1     # 新建檔案file1
[[email protected] Desktop]# ls -l /westos/file1     # /westos裡檔案的組沒有改變
	-rw-r--r-- 1 root root 0 Sep 28 20:46 /westos/file1
[[email protected] Desktop]# chmod 2777 /westos/     # 賦予/westos目錄2777的許可權
[[email protected] Desktop]# touch /westos/file2     # 再新建檔案時,組名就會和所在目錄統一[
[email protected] Desktop]# ls -l /westos/file2
	-rw-r--r-- 1 root linux 0 Sep 28 20:47 /westos/file2 

在這裡插入圖片描述

<3>suid 冒險位
u+s(s=4)	針對檔案,檔案記錄動作在執行時是以檔案所有人身份執行的,與是誰發起的無關 

chmod u+s/4--- file 

7.許可權列表

setfacl	            # 指定特定的使用者對特定的檔案擁有特殊權力          
那麼這個檔案的普通許可權也在許可權列表中識別,但ls -l看到的許可權是不準確的,此時需要用getfacl檢視 

注:acl列表的預設許可權是針對與目錄生效,當對目錄設定普通的許可權列表後,是不能取定特定使用者對在目錄中新建的檔案由指定許可權的 

[[email protected] Desktop]# touch file2
[[email protected] Desktop]# ls -l file2
	-rw-r--r-- 1 root root 0 Sep 29 11:15 file2
[[email protected] Desktop]# setfacl -m u:student:rw file2
[[email protected] Desktop]# ls -l file2   #  '+'表示許可權列表開啟
	-rw-rw-r--+ 1 root root 0 Sep 29 11:15 file2
[[email protected] Desktop]# getfacl file2
	#file: file2              # 檔名稱
	# owner: root             # 檔案的組
	# group: root             # 檔案擁有者的許可權
	user::rw-                 # 特殊指定使用者的許可權u
	ser:student:rw-           # 檔案組的許可權
	group::r--                # 特殊指定組的許可權
	mask::rw-                 # 許可權最大值
	other::r--                # 其他人的
(1)設定許可權
-m   {u:,g:,d:(設定預設許可權使之對student某個目錄所有新建目錄或檔案進行讀寫)}             
# 修改 
注:如果需要許可權自動新增到新建檔案上那麼要設定目錄的預設許可權  
-x   {u:,g:}           # 刪除 
-b                     # 退出此操作

setfacl -m d:u:student:rwx /mnt/westos     # 設定在westos目錄中 新建檔案對student使用者有rwx許可權,對已經存在的檔案無效,對目錄本身無效 
setfacl -m u:haha:rwx  file	           # 設定haha使用者對file檔案可以讀寫執行 
setfacl -m g:student:rwx    file           # 設定student組對檔案可以讀寫執行 
setfacl -m d:u:student:rwx file            # 設定預設許可權使之對student的file進行讀寫,新建檔案對student使用者有rwx許可權,對已經存在的檔案無效,對目錄本身也無效 
setfacl -x u:lee file2                     # 在許可權列表中刪除使用者lee的資訊 
setfacl -x g:student	file2              # 在許可權列表中刪除student組的資訊 
setfacl -b   file2	                   # 關閉許可權列,即"+"消失
(2)mask值
mask值是能夠賦予使用者許可權的最大值,當設定acl列表後,如果用chmod命令縮小檔案的許可權,那麼mask值會被更改  
[[email protected] Desktop]# setfacl -m u:student:rwx  file2  # 先賦予最大許可權,方便後邊改許可權的時候效果更明顯  [
[email protected] Desktop]# setfacl -m u:haha:rwx  file2
[[email protected] Desktop]# getfacl file2
# file: file2
# owner: root
# group: root
user::rw-
user:student:rwx
user:haha:rwx
group::r--
mask::rwx                                           # 更改前的許可權
other::r-- 
[[email protected] Desktop]# chmod 644 file2             # 此時mask值會發生改變
[[email protected] Desktop]# getfacl file2
	# file: file2
	# owner: root
	# group: root
	user::rw-
	user:student:rwx		#effective:r--      #此位置表示有效的權力
	user:haha:rwx			#effective:r--
	roup::r--
	mask::r--                                           # 更改後的許可權
	other::r--
	
[[email protected] Desktop]# setfacl -m m:rwx file2  # 恢復許可權,m:rwx中m代表mask
[[email protected] Desktop]# getfacl file2
# file: file2
# owner: root
# group: root
user::rw-
user:student:rwx
user:haha:rwx
group::r--
mask::rwx
other::r--
(3)defult
只對目錄中新出現的檔案生效,對已經存在的檔案和目錄本身不生效。

 想要對已經出現或目錄本身生效,可執行操作: 
 setfacl -Rm u:student:rwx  /mnt/test 
 
 注:想看具體的區別,可以切換到student使用者下的test中進行檔案的編輯,具體檢視defult的功效