您好,登錄后才能下訂單哦!
兄弟們,我又回來了,幾天不寫博客真是渾身難受呢(當然是騙人的。。。)但本周學的內容還蠻多的,感覺不整理一下又得白學了。還有本周學了聽著很高大上的腳本,雖然感覺蠻難的吧,但是聽老師的口氣貌似和之前一些基本命令的用法有著很大的關系,命令學的好不好直接決定你腳本編的好不好,第一感覺腳本就跟C++里面的函數是一個東西,就是把很多命令集中成一個文件,讓計算機集中去處理,完成某一特定功能,感覺好像走遠了,先從用戶的權限管理說起吧。
用戶的權限管理主要分為一下兩點:
普通權限:
特殊權限:
跟其相關的還有一個叫做FACL的東西這個后面再討論
首先我們先明確一下為什么用戶的權限要分為普通和特殊權限?
因為每一個用戶使用計算機的過程中,必然存在對有限計算機資源使用的限制性,那么操作系統就必須提供一種途徑來保證每個用戶獨立、合理的使用計算機。
解決完這個問題后我們來淺析一下用戶的權限管理
首先用戶的普通權限:
說到用戶的普通權限我們又不得不說到上周提到過的安全上下文
進程安全上下文:
1.判斷進程的所有者是否為想要操作的文件的所有者,如果是,就按照屬主的權限進行授權,如果不是,就轉到第二條
2.在判斷進程的所有者是否為想要操作的文件的屬組中的成員,如果是,就按照屬組的權限進行授權,如果不是就轉到第三條
3.按照文件其他用戶權限進行授權
對于用戶的授權一般按照以上順序進行,下面我們來說說用戶權限的構成
用戶的權限分為使用權(MODE0)和所有權(OWNERSHIP)
MODE(Permission):使用權
r:Readable,可讀
w:Writable,可寫
x:Executable,可執行
我們分幾個方面對用戶的使用權進行理解一下,首先是對于目錄而言:
r:可以使用ls命令獲得其中所有的文件名的列表:ls -l命令來獲取目錄文件中的詳細的屬性信息,不能使用cd命令進入其中,也不能在路徑中引用該目錄
w:可以修改此目錄下的文件名或文件名列表,即:可以在此目錄中創建、修改或刪除文件名
x:可以使用ls-l命令來獲取其中的文件的詳細屬性信息,也可以在路徑中引用該目錄,也可以使用cd命令進入其中
注意:x權限是最基本權限,任何目錄都必須對任何用戶開放x權限
為什么說對于目錄而言,必須給任何用戶開放x權限呢,對于目錄文件來說,我們在進行命令操作的時候,經常要通過引用文件的目錄去指引計算機找到這個文件,如果不給予計算機這個權限的話,這會對我們用戶管理計算機帶來極大的不便
在一個就是對于文件而言:
文件:
r:可以查看或獲取文件中存放的數據
w:可以修改文件中存放的數據
x:可以將此文件發起運行為進程
前兩個選項不難理解,基本上和目錄一樣,對于x權限,我們認為,一旦文件對我們用戶開放了這個權限,我們就可以將其發起為一個進程去執行,而不是簡單地打開去讀取它或者修改它。
對于權限在計算機中的表示我們使用以下幾種表示方式
例:rw-r--r--:三個權限位-屬主、屬組、其他用戶
屬主權限:rw-
屬組權限:r--
其他用戶權限:r--
顯而易見,屬主對于其有可讀和可寫的權限,而屬組對于其只有刻度的權限,其他用戶和屬組一樣,只對其有可讀的權限
除此之外我們還可以用三元組的方式表示權限
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例:rw-r--r--
110100100
644
權限既然存在,我們就必然可以修改它,但是我們為了計算機安全考慮,必須對于權限修改作出嚴格規定,我們規定只有某個文件的屬主才能修改文件的使用權,root除外。
修改文件的使用權限:
chmod --> change mod
chmod - change file mode bits
一共有以下三種方式:
1.chmod [OPTION]... MODE[,MODE]... FILE...
MODE:符號權限標識符
u,g,o,a標識所有權
+,-,=標識授權方式
+:在原有的權限基礎上加上某些權限
-:在原有的權限基礎上減去某些權限
=:不考慮原有權限,直接將權限設置為目標權限
r,w,x表示具體權限內容:
例:
chmod u+w file
chmod g+rw file
chmod u+x,g-wx,o-x file
chmod u=rw,g=r,o=r file
chmod ug-x file
chmod +x file 默認的為a添加執行權限
chmod +w file 默認的只為屬主添加寫權限
注意:文件的執行權限:Linux的文件系統來說,非常重要的安全標識,一旦文件具備了執行權限,就意味著該文件可以被發起執行為進程,所以默認情況下文件都不具備執行權限
2.chmod [OPTION]... OCTAL-MODE FILE...
如果使用八進制數字標識法的話,則每次必須給足所有的權限位,如果給的權限位不完整,文件系統會自動補足,將給定的權限放置在右側,左側使用0來補
chmod 640 file
3.chmod [OPTION]... --reference=RFILE FILE...
chmod --reference=/PATH/TO/SOMEFILE DES_FILE
chmod --reference=a b
這是linux中給出的幾種修改文件權限的方式,大家根據具體情況靈活使用
選項:
-R:--Recursive:將目錄中的文件及子目錄和子目錄中的文件統一的設置為指定的權限標識
說完了使用權,再說說所有權:
OWNERSHIP:所有權
屬主:資源掌控的某個特定用戶:owner(user),u
屬組:是資源掌控的某些特定用戶:group,g
其他用戶:未曾掌控資源的那些用戶:other,o
全部用戶:all,a
對于文件的屬主和屬組我們也可以進行修改,主要用到chown和chgrp命令:
chown:可以修改文件屬主和屬組
chown - change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown OWNER FILE
chown :GROUP FILE
chown OWNER:FILE //將目標文件的屬主改為OWNER,同時將屬組改為OWNER的基本組
chown OWNER:GROUP FILE //將目標文件的屬主和屬組改為OWNER和GROUP
chown [OPTION]... --reference=RFILE FILE...
-R:--Recursive:將目錄中的文件及子目錄和子目錄中的文件統一的設置為指定的所有權root
注意修改OWNERSHIP操作只有超級用戶(root)可以完成
chgrp:只能修改文件的屬組
chgrp - change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
一般我們用chown就可以滿足用戶對于文件屬主和屬組的修改,對于chgrp我們也可以記住。
下面我們再來說幾個命令
1.install命令:
install - copy files and set attributes
安裝:復制文件:
常用選項:
-m:指定目標文件的權限,默認為755
-o, --owner=OWNER:設定目標文件的屬主:只能是root可用
-g, --group=GROUP:設定目標文件的屬組:只能是root可用
注意:install命令不能復制目錄,即其源不能為目錄,如果其源為目錄,則install經歷了會進入目錄,依次復制其中的所有非目錄文件到目標位置
我們用install命令可以在復制文件的過程中,對其使用權和所有權進行修改,比如說在復制過程中給文件加上了執行權限,那么復制完之后的文件就可以被發起為進程
mktemp命令:
一般來講,臨時文件都會創建在/tmp或/var/tmp目錄中,無需手動刪除,系統會定期刪除這兩個目錄中的文件
選項:
-d, --directory:可以創建臨時目錄
例:
mktemp [-d] /PATH/TO/TMP.XXXXXXXXXXXX
這個命令方便我們創建臨時目錄,而且不用自己手動對其進行刪除操作,計算機會定期清理
說完了普通權限,我們再說一下特殊權限,特殊權限主要就是SUID、SGID、STICKY
默認情況下,用戶發起執行一個進程,該進程的發起者是其屬主,也就是說,該進程是以其發起者的身份在運行
SUID:
功能作用:用戶發起一個進程時,該程序文件如果擁有SUID權限的話,則此程序發起的進程其屬主為該程序文件的屬主,而不是其發起者,這句話的意思就是我們不管是哪個用戶發起的這個進程,只要這個文件具有SUID權限的話,我們都認為其所有者是這個文件的屬主,而不是發起這個進程的用戶
SUID權限顯示的位置:文件的屬主權限中的執行權限位,如果屬主本來就有執行權限則顯示為s,否則顯示為S
管理文件的SUID權限:
chmod u+|-s FILE
SGID:
如果某個目錄的對于一些用戶有寫權限并且設置了SGID權限,則所有對此目錄有寫權限的用戶在創建新的文件或目錄以后,新文件的屬組不再是創建用戶的基本組,而是繼承了該目錄的屬組
SGID顯示位置:文件的屬組權限中的執行權限位:如果屬組本來有執行權限,顯示為s,否則顯示為S
管理文件的SGID權限:
chmod g+|- s FILE
SICKY:sticky(粘性的):粘滯位
如果某個目錄中,有超過一個用戶可以有寫權限,則這多個用戶都可以在該目錄中隨意創建、修改和刪除文件名
STICKY的功能作用:
如果為上述的類似目錄設置了STICKY權限,則每個用戶仍舊能夠創建和修改文件名,但每個用戶只能刪除那些屬主為其自身的文件名
STICKY權限的顯示位置:在文件權限的其他用戶的執行權限位,如果原來就有執行權限的話顯示為t,否則顯示為T
管理文件的STICKY權限:
chmod o+|- t FILE...
suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
s-- 100 4
s-t 101 5
ss- 110 6
sst 111 7
特殊權限另一種修改方式:
將特殊權限對應的八進制數字放置于普通權限八進制數字的前面即可
例:想要給某個目錄加上粘滯位
chmod 1755 DIRECTORY
粘滯位的存在主要是對root用戶提供限制,防止root用戶由于失誤對計算機做出不可挽回的損失。
下面我們再了解一下權限遮罩碼的概念,我們知道我們在創建文件的時候,計算機會默認的給文件授權,那么計算機是根據什么標準給文件授權的呢,我們就得說到權限遮罩碼的概念了。
root:0022
不考慮特殊權限位
對于新創建的文件或目錄,不遮擋屬主的任何權限,遮住了數組的寫權限和其他用戶的寫權限
理解遮罩碼的方法:將遮罩碼的值變為二進制,凡是有1的位置,其權限在創建文件是就不設置
0033:000011011 ---110100100 644
---111100100 744
默認情況下,文件的遮罩碼已經有了一個0111,在此基礎上再次應用umask來遮罩權限
文件還有一些比較特殊的屬性:
查看文件的特殊屬性:
lsattr - list file attributes on a Linux second extended file system
lsattr [ -RVadv ] [ files... ]
修改設置文件的特殊屬性:
chattr - change file attributes on a Linux file system
chattr [ -RVf ] [ -v version ] [ mode ] files...
mode:會使用+-=的方式來設置
整個chattr命令最關鍵最核心的設置就是mode部分:
[aAcCdDeijsStTu]都是所需要的屬性
+:在原有屬性設定的基礎上添加新屬性
-:從原有屬性設定中移除指定的屬性
=:不考慮原有的屬性設置,直接將文件的屬性更新為指定的屬性內容
a:append 設置這個屬性的文件其內容不能被更改和刪除,只能以追加的方式向文件中寫數據,多數的服務器日志類文件會設置為此屬性
A:atime,文件的訪問時間戳,IO瓶頸:設置A屬性可以使得文件在被訪問時不更改文件的訪問時間戳,從而可以有效地防止IO瓶頸事件的發生
c:設置文是否自動壓縮后再行存儲
C:設置文件是否開啟“寫時復制”屬性
d:設置文件在使用dump進行備份的時候,不會成為備份目標
D:設置文件在文件系統中的異步寫操作
i:設置文件不能被刪除、修改、設定鏈接關系
s:設置文件的保密性刪除,一旦設置s屬性的文件被刪除,其對應存儲設備中的使用空間會被一并收回
u:跟s屬性相反,如果這樣的文件被刪除,則其存儲于設備中的數據被留存
最常用的屬性其實就是i和a
常用選項:
-R:遞歸的去設置指定目錄中的所有文件和子目錄中的文件
除了以上所講的管理用戶的權限方法之外,計算機還提供給我們另一種管理文件權限的方法
為文件賦予額外的權限的機制:FACL:File Access Control List,文件訪問控制列表
文件的額外賦權機制:
在原有的u,g,o權限位之外,讓普通用戶能夠控制權限賦予另外的用戶和組的一種賦權機制
一般推薦為在centos或RHEL7版本以后的發行版中,才逐漸成熟;
與FACL有關的命令:
getfacl:getfacl - get file access control lists
getfacl [-aceEsRLPtpndvh] file ...
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl:setfacl - set file access control lists
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
acl_spec: acl specification,指定的訪問控制列表
u:USERNAME:MODE
g:GROUPNAME:MODE
MODE:一般使用符號權限標識法
為用戶賦予額外權限:
setfacl -m u:USERNAME:MODE FILE...
為組賦予額外權限:
setfacl -m g:USERNAME:MODE FILE...
撤銷為用戶賦予額外權限:
setfacl -x u:USERNAME
撤銷為組賦予額外權限:
setfacl -x g:USERNAME
注意:如果設置了FACL之后再修改目標文件的使用權限,那么FACL中設置的條目就可能收到影響而導致與要求不符,因此,如果真的需要設置FACL,就要在已經確定目標文件的使用權限以后再進行設置
以上就是關于用戶的權限管理,學的有點云里霧里的,還得配合著作業去鞏固一下。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。