檔案權限存在的意義
檔案權限的存在是系統最底層安全設定方法之一,保證檔案可以被可用的使用者做相應操作
檔案權限的檢視
ls -l file 檢視檔案資訊
ls -ld dir 檢視目錄本身資訊
ll file 相當于ls –l file
ll -d dir 相當于ls -ld dir
ls –LR dir 遞歸顯示子目錄
(1) ls -l file ##使用此指令檢視檔案的屬性以及權限
(2) ls -ld dir ##使用此指令檢視目錄的屬性以及權限
(3) ll file ##檢視檔案的屬性
(4) ll -d dir ##檢視目錄的屬性
(5) ls –LR dir ##遞歸顯示子目錄
(6) ls –lR dir 可以遞歸檢視目錄下的所有目錄、檔案以及目錄下的檔案
檔案屬性的檢視
- | rw-r--r--|1|root|root| 32 |Oct 8 02:48 |filename
1 2 3 4 5 6 7 8
(1)檔案類型
- 空檔案,或者文本
d 目錄
l 軟連結,相當于快捷方式
s socket套接字(一個程式對外開放的門)
b block塊裝置
c 字元裝置
s 表示套接字(socket) 是程式的一扇門 ,進入這扇門内部才能進入程式内部和程式交流
b 表示塊裝置(block)
c表示字元裝置
(2) 檔案的權限:(檔案權限共9位,分為3部分)
| rw- |rw- | r–| 三位為一位,分别代表的是user,group,other(簡寫為u,g,o)
u:檔案擁有者對檔案能做什麼操作(所有人)
g:檔案所有組對檔案能做什麼操作(所有組)
o:其他人對檔案能做什麼操作(其它人)
(3)檔案内容被系統記錄的次數:“1”(硬連結)
對檔案 | 檔案内容被系統記錄的次數(檔案硬連結個數) |
---|---|
對目錄 | 目錄中檔案屬性的位元組數(目錄中子目錄的個數) |
硬連結是有着相同 inode 号僅檔案名不同的檔案
(4) 使用者名字:“root”(檔案的所有人)
(5) 使用者組名字:“root”(檔案的所有組)
(6) 檔案内容的大小
對檔案 | 檔案内容大小 |
---|---|
對目錄 | 目錄中子檔案中繼資料(檔案屬性)大小 |
(7)檔案最後一次被修改的時間
(8)檔案的名稱
改變檔案的所有組和所有人
使用指令chown或者chgrp
chown username file或者dir 更改檔案或者目錄的擁有者
chown user-group file或者dir 更改檔案或者目錄的使用者和使用者組
chown -R user-group dir 遞歸更改目錄的使用者和使用者組
準備工作
(1)chown username file|dir ##更改檔案或者目錄的所有人
(2)chown username.groupname file|dir ##更改檔案或者目錄的所有人所有組
(3)chown -R username dir ##更改目錄本身及裡面所有檔案的所有人
chgrp group file或者dir 改變檔案或者目錄的使用者組
chgrp -R group dir 遞歸改變目錄的使用者組
檔案普通權限
r w - | r - - | r - -
u g o
表示:
u | 檔案所有人對檔案可以讀寫 |
---|---|
g | 檔案組成員對檔案可讀 |
o | 其他人對檔案可讀 |
r:
對檔案:可以檢視檔案中的字元
對目錄:可以檢視目錄中檔案的資訊
w:
對檔案:可以更改檔案内字元
對目錄:可以在目錄中添加删除檔案
x:
對檔案:可以運作檔案内記錄的程式動作
對目錄:可以進入目錄中
修改檔案的權限
chmod +(增權重限)or -(去掉權限)來改變權限
(1)chmod <u|g|o><+|-|=><r|w|x> file|dir 總的格式
(2) chmod u-x file1 file1擁有者去掉x權限
(3) chmod u+x,g-w file1 file1擁有者去掉x權,file1擁有組添加w權限
(4) chmod ugo-r file2 file2的使用者、組、其他人去掉r權限
數字方式修改檔案權限
例如:
u= r w - = 4+2+0=6
g= r - - = 4+0+0=4
o= r - - = 4+0+0=4
是以檔案權限表示為644
系統預設權限的設定
從系統存在角度來說,開放權力越大,系統存在意義越高
從系統安全角度來說,開放權力越少,系統安全性越高
是以系統設定建立檔案或目錄會去掉一些權限
權限設定方式如下:
umask ##檢視系統保留權限預設為022
umask 077 ##修改該系統保留權限為077,此設定為臨時設定,隻目前shell中生效
永久設定方式:
vim /etc/bashrc ##設定shell中的權限
70 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
71 umask 002 ##普通使用者的umask
72 else
73 umask 077 ##超級使用者的umask
74 fi
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
以上兩個檔案umask設定值必須保持一緻
source /etc/bashrc
source /etc/profile
讓設定立即生效
檔案的通路控制(acl清單)
(1)acl定義: acl = access control list
指定特殊使用者對特殊檔案有特殊權限
(2) acl清單檢視
-rw-rwxr--+ 1 root root 0 Oct 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擁有rwx權限
setfacl -x u:username file #從acl清單中删除username
setfacl -x g:group file #從acl清單中删除group組
setfacl -b file #關閉file上的acl清單
(4) mask值
在權限清單中mask表示能生效的權限值
當用chmod減小開啟acl的檔案權限值時mask值會發生改變
chmod g-w westos
如果要恢複mask值
setfacl -m m:rw westos
(5) acl的預設權限設定
acl預設權限隻針對目錄設定
acl權限隻針對設定完成之後建立立的檔案或目錄生效,而已經存在的檔案不會繼承預設權限
setfacl -m d:u:student:rwx /mnt/westos
setfacl -k /mnt/westos
特殊權限
1.sticky 粘制位
隻針對目錄有效,當一個目錄上有sticky權限時,這個目錄中的檔案隻能被檔案的所有者删除
設定方式:
chmod o+t direcotry
chmod 1777 direcotry
chmod 1xxx direcotry
(1) (1)先在超級使用者下建立一個目錄 mkdir /mnt/westos
然後設定監控指令j監控改目錄以及改目錄下的檔案:
watch -n 1 “ls -ld /mnt/westos ; ls -l /mnt/westos”
并且在超級使用者下設定滿權限 chmod 777 /mnt/westos
在超級使用者下建立兩個普通使用者leo westos
分别切換到兩個普通使用者下建立檔案file file1
(2) westos使用者可以删除leo使用者建立的檔案file,這樣做很不安全
(3) 在超級使用者模式下給westos這個目錄增加t權限
給westos目錄加上t權限以後,leo使用者就不能删除westos使用者建立的file1檔案了
2.sgid 強制位
設定方式:
chmod g+s file|dir
chmod 2xxx file|dir
對目錄:當目錄上有sgid權限時任何人在此目錄中建立的檔案都屬于目錄的所有組
(1)首先在超級使用者下建立一個目錄 并且對這個目錄進行監控
(2) 檢視這個目錄的權限
(3)在超級使用者下建立一個新使用者,并且将建立目錄的使用者組變為剛剛建立的使用者 然後在改目錄下建立新的檔案,發現此檔案的使用者組仍然為超級使用者,
并不是剛剛 建立的那個使用者tom
(4) 為了使在目錄中建立的檔案都屬于目錄的使用者組,需要在目錄上加上s權限
由此可見,當給目錄加上s權限時,目錄的所有組權限會出現s,此時建立的檔案的所有組為目錄的所有組。
對檔案:隻針對二進制可執行檔案,當檔案上有s權限時任何人執行此檔案産生的程序都屬于檔案的所有組
(1)先監控二進制檔案的程序
(2) 檢視該二進制檔案的權限
(3) 以root身份啟動一個程序,這個程序的所有人和所有組均為root
然後将改檔案的所有組改為westos,發現并沒有改變,仍為root
(4) 給二進制文進加上s權限,重新開啟一個新的程序 發現程序屬于檔案所有組
3.suid 冒險位
作用:隻針對二進制可執行檔案,當檔案上有suid權限時任何人執行這個檔案中程式産生的程序都屬于檔案的所有人
設定方式:
chmod u+s file
chmod 4xxx file
(1) 監控二進制檔案的程序
(2) 設定/bin/watch的使用者為student 執行watch指令發現程序所有人為root
(3)設定冒險位權限後,執行watch指令 發現程序的使用者屬于student