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中新建的子檔案和子目錄進行操作: