1.文件的權限
首先要去查看文件的具體的屬性使用ls -l 【文件名】來進行查詢,所以我們應該先去查看文件對我們登錄用戶的權限,從而得知可以進行的一系列的操作。否則有時候突然的失敗命令提示會顯得非常的鬱悶。
我們先創建一個文件,使用命令獲取它的權限。
- |rw-r--r--.| 1 | root| root| 46 | Oct 1 05:03 |
— ————————— — ———— ———— —— ————————————
1 2 3 4 5 6 7
filename
————————
8
1."-":文件類型
- ##普通文件
d ##目錄
c ##字符設備
s ##套接字
p ##管道
b ##快設備
l ##連接
2."rw-r--r--":文件讀寫權限
rw-|r--|r--
* $ @
*所有人的權限
$所有組的權限
@其他人的權限
3."1":
對文件:文件內容被系統記錄的次數
對目錄:目錄中文件屬性的字節數
4."root":文件所有人
5."root":文件所有組
6."46":文件內容的大小
7."Oct 1 05:03":文件最後一次被修改的時間
8."filename":文件名字
知道了這些信息,也就方便了對於文件可以進行哪些具體的操作的問題就可以有進一步的瞭解了。之後就可以進行對於文件的一些修改問題。
可以直接修改文件或者用戶的所有人或者所有組。
2.
對於文件來說是這樣,對於目錄來說差不多也是如此,不過需要加上 -R來告訴系統,我要修改的是文件的信息就好了。但是修改目錄所有人和所有組的時候是會連目錄裏邊的所有文件的信息的所有人和所有組覆蓋,所以需要謹慎操作。
但是以上信息都不是我們平常最爲關注的,我們最爲關注的是,有file這樣一個文件我們是否可以去執行這個文件,而不是去面對繁瑣的文件權限問題而頭大。所以我們就需要去修改文件的具體的權限。所以我們對於這些問題不需要,因爲都是自己的文件所以隨便執行。
所以我們要了解下列的概念性的解釋
rw-| r--| r--
u g o
u:文件所有人對文件可以讀寫
g:文件組成員對文件可讀
o:其他人對文件可讀
u優先匹配,g次優先,o當u,g不匹配時匹配
1.r
對文件:可以查看文件中的字符
對目錄:可以查看目錄中文件的信息
2.w
對文件:可以更改文件內字符
對目錄:可以在目錄中添加刪除文件
3.x
對文件:可以運行文件內記錄的程序動作
對目錄:可以進入目錄中
瞭解之後我們就來更改以下用戶的權限,
我們可以看到確實對這些文件進行了一系列的權限更改,但是除了上述方式還可以使用數字進行對文件權限的修改
在linux中
r=4
w=2
x=1
文件權限數字表示方式
rw- |r-- |r--
u g o
u=rw-=4+2+0=6
g=r--=4+0+0=4
o=r--=4+0+0=4
所以文件權限表示爲644
chmod 修改後權限值 file
chmod 777 file
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
但是系統總會有一個初始化的默認信息讓它會給用戶創建的一個文件會有一個權限,我們可以使用umask來查看系統默認的保留權限,爲什麼會保留權限呢?
從系統存在角度來說,開放權力越大,系統存在意義越高
從系統安全角度來說,開放權力越少,系統安全性越高
所以系統設定新建文件或目錄會去掉一些權限
所以我們可以根據自己的需要去配置umask
暫時設定方式
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 ##系統
59if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ];then
60 umask 002 ##普通用戶umask
61else
62 umask 077 ##超級用戶umask
63fi
以上兩個文件umask設定值必須保持一致
之後就需要系統重新去掃描這兩個文件,否則還會執行之前掃描後的結果,所以需要重新掃描
source /etc/bashrc
source /etc/profile
讓設定立即生效
我們看到設定已經成功
3.文件的訪問控制(acl列表)
1.acl定義
acl = access control
指定特殊用戶對特殊文件有特殊權限、
Drwxrwx---+ 2 root root 17 Jul 18 01:39/westos/
^
表示/westos目錄時有權限列表
getfacl /westos/
file: westos/ 文件名稱
owner: root 文件所有人
group: root 文件所有組
user::rwx 擁有者權限
user:student:rwx 特殊用戶權限
group::--- 組權限
mask::rwx 權限掩碼
other::--- 其他人權限
注意:當文件上有權限列表時,ls-l 能看到的權限是假的
2設定acl列表
setfacl -m<u|g>:<username|groupname>:權限 文件|目錄
-m #設定
u #用戶
g #組
##刪除列表中的用戶或者組####
setfacl -x <u|g>:<username|groupname> 文件|目錄
##關閉列表
setfacl -b 文件|目錄
###acl mask值###
1.mask 權限掩碼
mask用來標實能夠賦予用戶最大權限
當用chmod改變文件普通權限時可能會被破壞
修復
setfacl -m m:rwx 文件名稱
####acl 默認權限######
當我們需求某個目錄對於student可寫,並且目錄中新建的子目錄對student也可寫
就要設定默認默認權限
注意: 默認權限只對目錄中新建立的文件或者目錄生效,對已經建立的文件無效,
對於目錄本身也無效
setfacl -m d:u:student:rwx /westos
####6.特殊權限####
1.suid ##冒險位
之針對二進制可執行文件,
文件內記錄的程序產生的進程的所有人爲文件所有人
和進程發起人身份無關統一默認爲超級用戶
設定方式:
chmod u+s file
suid=4
chmod 4xxx file
//圖
2.sgid ##強制位
對文件:只針對二進制可執行文件,
任何人運行二進制文件
程序時程序產生的進程的所有組都是文件的所有組
和程序發起人組的身份無關
對目錄:當目錄有sgid權限後,目錄中新建的所有文件的所有組
都自動歸屬到目錄的所有組之中,和文件建立者所在的組無關
設定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
//圖
3.sticky ##粘制位
t權限:
只針對與目錄,當一個目錄上有t權限,那麼目錄中的文件只能被文件的擁有者刪除
設定方式:
chmod o+t direcotry
t=1
chmod 1777direcotry
//圖