文件權限
1.文件權限存在的意義
系統最底層安全設定方法之一
保證文件可以被可用的用戶做相應操作
2.文件權限的查看
- ls -l file #查看文件屬性
- ll file #ls -l 的簡寫
- ls -ld dir #查看目錄本身屬性
- ll -d dir
3.文件權限的讀取
- | r w -r - - r - - | 1 | root | root | 0 | Jan 1 18:33 | file |
---|---|---|---|---|---|---|---|
[1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
【1】文件的類型
- | 空文件或者文本 |
---|---|
d | 目錄 |
l | 軟鏈接 |
s | socket套接字1 |
b | block塊設備 |
c | 字符設備 |
【2】文件的權限
rw-|rw-|r–
第一列:rw- | 【u】文件擁有這對文件能做什麼操作 |
---|---|
第二列:rw- | 【g】文件所有組對文件能做什麼操作 |
第三列:r– | 【o】其他人對文件能做什麼操作 |
【3】
對文件:文件硬鏈接個數(文件內容被記錄的次數)
對目錄:目錄中子目錄的個數
【4】
文件所有人
【5】
文件所有組
【6】
對文件:文件大小
對目錄:目錄中子文件元數據(matedate可以理解爲文件的屬性)大小
【7】
文件的內容最後一次被修改的時間(文件內容改變纔會影響時間變化,文件屬性改變不會影響變化)
【8】
文件的名稱
4.如何讓改變文件的所有人和所有組
準備工作:在/mnt下創建file{1…5} 和目錄dir 在目錄dir中創建text{1…3}
通過watch -n 1 ls -lR /mnt 同時監控目錄mnt下文件和其子目錄dir下文件屬性
- chown user file|dir #更改文件或目錄的所有人
但是從上圖我們可以看出該命令在更改目錄所有人時,只能更改目錄本身所有人,對目錄子文件不會產生影響 - chown -R user dir
通過本命令可以使目錄本身及其子文件的所有人一同發生更改
- chgrp group file|dir #更改目錄或文件的所有組
- chgrp -R group dir #更改目錄及其子文件的所有組
- chown user.group file|dir #同時更改目錄或文件的所有人所有組(中間加“.“|“:“皆可)
- chown -R user.group dir #同時更改目錄及其子文件的所有人所有組
5.如何改變文件的權限
(1)對權限的理解
r:
對文件: | 是否可以查看文件中的內容---->cat file |
---|---|
對目錄: | 是否可以查看目錄中有什麼子文件或者子目錄---->ls dir |
w:
對文件: | 是否可以改變文件裏面記錄的字符 |
---|---|
對目錄 | 是否可以對目錄中子目錄或子文件的元數據進行更改 |
x:
對文件: | 是否可以通過文件名稱調用文件內記錄的程序 |
---|---|
對目錄: | 是否可以進入目錄 |
注意:目錄內的文件的權限,除了文件本身權限以外,還受其所在目錄權限影響!
(2)更改方式
我們仍然通過watch -n 1 ls -lR /mnt 同時監控目錄mnt下文件和其子目錄dir下文件屬性
- chmod <u|g|o><+|-|=><r|w|x> file|dir
- chmod u+x file|dir #給與文件所有人執行權限
- chmod g-r file|dir #取消文件所有組查看權限
- chmod ug-r file|dir #同時取消文件所有人所有組查看權限(相同指令可以合併)
- chmod u-r,g+x file|dir #取消文件所有人查看權限,給與文件所有組執行權限(不同指令用“,“分開)
- chmod -r file|dir #取消文件所有人所有組和其他人的查看權限
注意:只有w默認只更改文件所有人(u), r|x默認三方(ugo)全都修改
- chmod o=rw- file|dir
r | w | x |
---|---|---|
2^2 | 2^1 | 2^0 |
4 | 2 | 1 |
r - x | r - - | - - x |
---|---|---|
5 | 4 | 1 |
- chmod 541 file|dir
- 7=r w x
- 6=r w -
- 5=r - x
- 4=r - -
- 3=- w x
- 2=- w -
- 1=- - x
- 0=- - -
6.umask
umask 系統建立文件時默認保留的權力
umask 077 #領事設定系統預留權限爲077
永久的更改umask
vim /etc/profile #系統配置文件
umask 002 #普通用戶的umsak
umask 022 #超級用戶的umask
vim /etc/bashrc #shell配置文件
source /etc/profile #讓更改立即生效
source /etc/bashrc
7.特殊權限
(1)sticky #粘制位
作用:
只針對目錄生效
在這個目錄當中的文件只能被所有者刪除
設定方式:
chmod o+t dir
chmod 1xxx dir
(2)sgid #強制位
作用:
對文件: | 只針對二進制可執行文件,當文件上有sigd時任何人執行此文件產生的進程都屬於文件的組 |
---|---|
對目錄: | 當目錄上有sigd權限時任何人在此目錄中建立的文件都屬於目錄的所有組 |
設定方式:
chmod g+s file|dir
chmod 2xxx file|dir
此時任何人在dir目錄創建的文件都屬於dir文件所有組我們可以先通過 chown student.student dir將dir文件的所有人所有組全變更爲student
然後我們切換到mack用戶在dir下創建文件text4
可以看到mack用戶新建的text4的所有組爲其目錄dir的所有組student
3.suid ##冒險位
只針對與2進制可執行文件
當文件上有suid時任何人執行這個文件中記的程序產生的進程都屬於文件的所有人
設定方式
chmod u+s file
chmod 4xxx file
8.acl權限列表
(1)作用:
讓特定的用戶對特定的文件擁有特定權限
(2)acl列表查看
" + "代表acl開啓
getfacl #查看acl開啓的文件的權限
file:file #文件名稱
owner:root #文件擁有者
group:root #文件擁有組
user::- - - #文件擁有人的權限
user:mack:rwx #制定用戶的權限
group::rwx #文件擁有組的權力
mask::rwx #能賦予用戶的最大權力閥值
other::- - - #其他人的權限
(3)acl列表的管理
getfacl file
setfacl -m u:username:rwx file #設定username對file擁有rwx權限 但是無法進行刪除指令
通過上圖中other::- - -我們可以看出其他人本來應該無法對file1文件進行讀寫操作的但是當acl權限開啓後 用戶mack就可以對file1文件進行讀寫操作
setfacl -m g:group:rwx file #設定group組成員對file擁有rwx權限 rwx可以777不行
由上圖可見other::- - - 其他人對file2無法進行讀寫操作只有生產組成員對file2有rwx權限
新建一個用戶tom屬於生產組
切換到tom用戶可以成功對file2進行讀寫
setfacl -x u:username file #從acl列表中刪除username
setfacl -b file #關閉file上的acl列表
(4)mask值
在權限列表中mask標示能生效的權力值
當用chmod減小開啓acl的文件權限時mask值會改變
chmod g-w file1
如果要恢復mask值
setfacl -m m:rwx file1
5. acl默認權限設定
acl默認權限只針對目錄設定
注意:acl默認權限只針對設定完成之後生成的文件或目錄生效,已經生成的不會受到影響(包括該文件本身)
setfacl -m d:u:username:rwx dir
#指定mack用戶對目錄dir擁有rwx權力,但是此時切換到mack是無法進入dir目錄的
這便是因爲acl默認權限只針對設定完成之後生成的文件或目錄生效,已經生成的不會受到影響(包括該牡蠣本身)所以需要對目錄本身進行指定acl權限
此時我們切換到mack用戶纔可進入dir目錄
setfacl -k dir #關閉默認權限
可以看成一個接口,默認情況下程序是封閉的而套接字就是一個程序對外開放的接口 ↩︎