1. 程式人生 > >Linux平臺下的檔案許可權安全基本管理

Linux平臺下的檔案許可權安全基本管理

Linux平臺下的檔案許可權安全基本管理

1.檔案許可權存在的意義

1.檔案許可權是系統最底層的安全設定方式之一;

2.保證檔案可以被可用的使用者來進行相應的操作。

2.檔案許可權的檢視

對於檔案:

ls -l file
ll file

對於目錄:

ls -ld dir
ll -d dir

                            

對於一個大目錄下的所有子目錄和檔案,我們可以採用遞迴的方法來檢視檔案許可權:

ls -lR /mnt/
ll -R /mnt/

為了驗證命令我們新建使用者,並完成實驗:

                                

3.檔案許可權的讀取

以file的檔案許可權資訊為例,我們對檔案的許可權作以解讀:

                                               

        標   號                                                                   含                義
           [1]

檔案的型別:“-”——空檔案或者文字、“d”——目錄、“l”——軟連結、

                     “s”——socket套接字、“b”——block快裝置、“c”——字元裝置

           [2]

檔案許可權:  rw- |  r--  | r--

                     1      2     3

    1.[u]檔案擁有者對檔案能做什麼操作

    2.[g]檔案所有組對檔案能做什麼操作

    3.[o]其他人能對檔案做什麼操作

           [3]

對檔案:檔案硬連結的個數(檔案內容被記錄的次數)

對目錄:目錄中子目錄的個數

           [4]

檔案的所有人
           [5] 檔案的所有組
           [6]

對檔案:檔案大小

對目錄:目錄中,子檔案的元資料(matedate可以理解為檔案的屬性)大小

           [7] 檔案的內容被最後一次修改的時間
           [8] 檔案、目錄名稱

4.如何改變檔案的所有人

改變所有人:chmod

改變所有組:chgrp

我們以改變/mnt/file1的所有組和所有人為例:

注意:改變所有人和所有組的前提是所有組和所有人必須已經存在

                                 

同時改變所有人和所有組:chmod    wen:renshi  /mnt/file1

                                  

對於目錄來說,上述指令只改變目錄本身:

我們在/mnt/test1/下新建hello1和hello2,以此驗證實驗。

                              

如果想要連同目錄下的子目錄和檔案一起更改所有人和所有組,可以用chown -R 來更改:

                              

5.如何改變檔案的許可權

1.對許可權的理解:

            r

對檔案:是否可以檢視檔案中的內容                --->cat file

對目錄:是否可以檢視目錄中有什麼子檔案或者子目錄    -------> ls dir

           w

對檔案:是否可以改變檔案裡面記錄的字元

對目錄:是否可以對目錄中子目錄或子檔案的元資料進行更改

           x

對檔案:是否可以通過檔名稱呼叫檔案內記錄的程式

對目錄:是否可以進入目錄

2.更改方式:

chmod <u|g|o><+|-|=><r|w|x> file||dir
##例如:
chmod u-r file    ##去除檔案所有人讀的許可權  
chmod g+w file    ##給檔案所有組寫的許可權
chmod o=x dir     ##指定其他人對dir目錄的許可權為執行
chmod o=rwx dir   ##指定其他人對dir目錄的許可權為rwx

我們對/mnt/file1進行許可權更改實驗:

                              

對於所有人、所有組、其他人,我們可以通過數字來定義三者的許可權:

 r      w     x
2^2    2^1   2^0
 4      2     1
rwx rwx rwx
 7   7   7
7:rwx
6:rw-
5:r-x
4:r--
3:-wx
2:-w-
1:--x
0:---
chmod 541 file  ---->   r-x|r--|--r

例如:給/mnt/file2的許可權為rw-r-x-w-:

chmod 652 /mnt/file2

                           

6.umask

umask  系統建立檔案時預設保留的許可權

1.臨時更改系統預設許可權

umask 為022時,保留的許可權為--- -w- -w-  所以新建目錄的許可權為 rwx r-x r-x  即755=777-022

新建檔案的許可權為777-755-111=644   即為rw- r-- r--

注:減111是檔案系統所決定的。

umask        ##檢視當前的umask值
umask  077   ##臨時更改系統預設保留許可權

                         

用umask只能臨時更改系統預設保留許可權,當關閉shell重開一個時,就會重置

2.永久更改系統預設保留許可權

(1)系統配置

系統配置檔案:/etc/profile

vim /etc/profile     ##開啟配置檔案

                    

60行的為普通使用者的預設保留許可權;62行為超級使用者的預設保留許可權

更改62行的umask值為077(我們用超級使用者建立檔案和目錄來完成實驗),:wq退出儲存

(2)shell配置

shell配置檔案:/etc/bashrc

                       

71行的為普通使用者的預設保留許可權;73行為超級使用者的預設保留許可權

更改73行的umask值為077(我們用超級使用者建立檔案和目錄來完成實驗),:wq退出儲存

source /etc/profile  ##讓檔案立即生效
source /etc/bashrc   ##讓檔案立即生效

                                      

7.特殊許可權

1.sticky  粘滯位

作用:只針對目錄生效,當一個目錄上有sticky許可權時,在這個目錄中的檔案只能被檔案的所有者刪除

設定方式:

chmod  o+t  dir
chmod  1xxx  dir

驗證sticky粘滯位的作用:

1)在/mnt/下建立/pub目錄,並且在/pub目錄中新建file1、file2、file3,給它們滿許可權

                                         

2)切換到student使用者,刪除/mnt/pub/file3

                                        

                                        刪除成功!

3)給/mnt/pub目錄設定粘滯位

                                             

                                       可以看到/pub的o位許可權變成了rwt,表示設定成功。

4)再次切換到student使用者,刪除/mnt/pub/file2

                                       

                                        刪除不成功,提示沒有許可權。

2.sgid  強制位

設定方法:

chmod g+s  file|dir
chmod 2xxx  file|dir

作用:  (1)對檔案:指標對於二進位制可執行檔案,當檔案上有sgid許可權時,任何人使用此檔案產生的程序都屬於檔案的所有組

  驗證sgid  強制位對檔案的作用:

1)ls -l /bin/watch,檢視檔案屬性

                             

2)執行watch date命令,使用ps檢視程序

watch date
ps ax -o comm,user,group | grep watch

                              

3)修改/bin/watch的所有組為student,對/bin/watch設定sgid強制位,再次執行watch date,使用ps檢視程序

                              

 

作用:(2)對目錄:當目錄上有sgid許可權時,任何人在此目錄中建立的子檔案都屬於目錄的所有組

驗證sgid  強制位對目錄的作用:

1)在/mnt目錄下新建目錄/jishu,給它滿許可權

                               

2)切換使用者為student,在/mnt/jishu下新建檔案,檢視檔案屬性

                              

3)對目錄/mnt/jishu設定強制位sgid許可權,檢視目錄屬性,'s'已經表示設定成功

                                   

4)再次切換使用者為student,在/mnt/jishu下新建檔案,檢視檔案屬性

                              

3.suid  冒險位

作用:只針對於二進位制可執行檔案,當檔案上有suid許可權的時候,任何人執行這個檔案程式產生的程序都屬於檔案的所有人

設定方式:

chmod  u+s  file
chmod  4xxx  file

驗證suid許可權:

1)執行watch命令,檢視watch程序

                                 

2)修改/bin/watch檔案的所有人為student,然後在對/bin/watch檔案設定suid許可權

                                    

3)再次執行watch命令,檢視watch程序

                                   

 

注意:設定特殊許可權後清除特殊許可權:

chmod  0xxx  file|dir

8.acl 許可權列表

1.作用:讓特定的使用者對特定的檔案擁有特定許可權。

2.acl列表檢視

- rw- rwx r-- +  1  root  root  0 Jan 3 02:01  file
                  “+”: acl開啟標誌
getfacl file           ## 檢視acl開啟的檔案的許可權

#file: file  ## 檔名稱
# owner: root  ## 檔案擁有人
# group: root  ## 檔案擁有組
user::rw-   ## 檔案擁有人的許可權
user:student:rwx ## 指定使用者的許可權
group::r--    ## 檔案擁有組的許可權
mask::rwx    ## 能賦予使用者最大的許可權閥值
other::r--    ## 其他人的許可權

                                                       

3.acl列表的管理

setfacl -m  u:username:rwx file            ## 設定username對file擁有rwx許可權
setfacl -m  g:groupname:rwx   file         ## 設定group組成員對file擁有rwx許可權
setfacl -x  u:username  file               ## 從acl列表中刪除username
setfacl -b  file                           ## 刪除file上的acl許可權列表

1)設定wen對/mnt/file有r和x的許可權

                                 

2)設定shengchan使用者組對/mnt/file1有r和w的能力,並驗證:

                                

3)從/mnt/file的acl列表中刪除wen

                                 

4)刪除/mnt/file1的acl許可權列表

                                   

4.mask值

      1.在許可權列表中mask標示能生效的權力值。

      2.當用chmod減小開啟acl的檔案許可權時,mask值會發生改變:

chmod g-w /mnt/file1

                          

      3.恢復mask值:

                          

5.acl的預設許可權設定

   acl預設許可權只針對目錄設定。
   acl許可權只針對設定完成之後新建立的檔案或目錄生效,而已經存在的檔案是不會繼承預設許可權。

setfacl  -m  d:u:wen:rwx  /mnt/test

以例子說明acl預設許可權列表的設定:

1)首先在/mnt下建立test目錄,然後在test目錄下建立hello目錄和file1檔案,進入wen使用者,在test目錄下的hello目錄下新建文 件file2, 並且對/mnt/test/file1進行寫入操作:

                              

                               均不被允許,請求被拒絕。

2)使用acl預設許可權許可權設定wen對/mnt/test/目錄的滿許可權,設定後在test目錄下建立目錄hello1和檔案file2 :

                                  

3)切換使用者為wen,對設定前的/mnt/test中原有的子檔案和子目錄進行操作:

                                    

       對於在設定預設許可權之前的已有的檔案和目錄,依舊沒有操作許可權

4)切換使用者為wen,對設定後的/mnt/test中新建的子檔案和子目錄進行操作: