首頁 > 軟體

深入瞭解Linux的檔案許可權

2022-10-20 14:01:20

一、Shell是什麼

Shell是作業系統外殼程式的統稱,Windos中的圖形化介面、Linux中的命令列外殼都是外殼程式。CentOS中的外殼程式被稱為bash。

1、Shell承擔使用者和核心間的翻譯工作

Shell是命令列直譯器。

Linux嚴格意義上說的是一個作業系統,我們稱之為"核心(Kernel)"。但是使用者和核心溝通的學習成本很高,所以在核心外部有一層Shell外殼程式,將使用者輸入的指令翻譯傳遞給核心,核心處理後,將結果返回給Shell,由Shell向用戶傳達指令的最終結果。

2、拒絕使用者非法請求,保護核心

當用戶輸入非法指令時,shell不會再去詢問核心結果,而是直接拒絕使用者的非法請求。

3、派生子程序執行使用者指令

因為Shell是使用者和核心溝通的唯一橋樑,一般Shell不參與指令的執行,而是通過派生子程序的方式執行使用者的指令。(子程序掛了,但Shell不會受到影響)

二、使用者切換與提權

1、普通使用者與root使用者的切換

su//切換後路徑不變
su -//切換後來到家目錄

普通使用者切換為root使用者需要輸入root密碼,而root使用者切換成普通使用者無需 任何驗證。

2、普通使用者指令短暫提權

sudo whoami

當該使用者被新增至etc/sudoers中,sudo為最近的一條指令提權至root,需要輸入當前普通使用者密碼。

在一次密碼認證過後,接下來的幾分鐘使用sudo提權操作,將無需再次輸入密碼。

為什麼sudo提權需要輸入當前使用者的密碼,而不是root密碼呢?這樣做是為某些被信任的使用者,提供最少的執行障礙。而不是直接將root的密碼交給員工。

三、檔案許可權的理解

1、檔案許可權=角色的許可權+檔案屬性

對於Linux中的檔案許可權,有的角色對這個檔案有可讀、可寫、可執行的許可權,而有的角色卻只有可讀許可權。這是人的許可權。

對於檔案的可讀、可寫、可執行的屬性,如果一個檔案不具備可讀許可權,那麼角色在存取檔案時,也是沒有可讀許可權的。

2、Linux中的三種角色

Linux中有三種角色,分別是擁有者(owner)、所屬組(grouper)、其他人(other),許可權限制的不是使用者,而是這個使用者當前所處的角色。

2.1為什麼會存在所屬組(grouper)這種角色

舉個例子:現在公司有A、B、C等多個部門使用同一臺Linux的雲伺服器,每個小組都有各自的小組成員,所以就有了所屬組的概念。把不同的組員放到各自的所屬組中,員工無許可權存取他組檔案,防止專案資訊互相洩露。

3、drwxrwxr-x代表的意義

3.1第一位字母代表的意義

第一位字母代表的意義是檔案的型別。

在windows中,區分檔案型別是通過檔名字尾,而Linux中,檔案的型別由第一位字母決定,與檔案本身的字尾無關。(Linux中檔案字尾作用是幫助使用者快速區分這個檔案的型別或者gcc等工具是需要關注字尾)

  • d:目錄檔案
  • -:普通檔案(原始碼、庫檔案、可執行程式、檔案壓縮包等)
  • c:字元裝置檔案(鍵盤、顯示器等串列埠裝置)
  • b:塊裝置(硬碟、光碟機等)
  • l:軟連結檔案(類似於Windows中的快捷方式)
  • p:管道檔案
  • s:socket套介面檔案

3.2後九位代表的意義

後九位三三為一組,分別代表擁有者、所屬組、其他使用者的許可權。其中r代表可讀,w代表可寫,x代表可執行。-代表不具備該許可權。

3.3檔案許可權的字元修改方法

chmod u-r text.c//將text.c的擁有者減去可讀許可權
chmod g+x text.c//將text.c的所屬組加上可執行許可權
chmod o+rwx text.c//將text.c的其他使用者減去讀、寫、可執行許可權
chmod u+rx,g-w,o-rwx text.c//可以組合操作許可權的增減
chmod a-rwx text.c//對所有角色減去讀、寫、可執行許可權

只有檔案的擁有者和root才能對檔案角色的許可權進行更改。

root不受角色許可權的約束。

3.4角色的更改

sudu chown jly2 text.c//把text.c的擁有者改成jly2
sudo chgrp jly2 text.c//把text.c的所屬組改成jly2
sudo chown jly2:jly2 text.c//把text.c的擁有者、所屬組改成jly2

擁有者、所屬組更改後,other也變了,所以other不用特意改。

3.5檔案許可權的八進位制修改方法

三三為一組,非-位用二進位制1填充,-位用0填充,得到角色許可權的二進位制,在將這些二進位制轉化為八進位制,即可使用八進位制來表達角色的許可權。

chmod 000 text.c//用許可權的八進位制更改text.c的許可權

3.6目錄的起始許可權及許可權掩碼umask

Linux規定,目錄的起始許可權從777開始,普通檔案的起始許可權從666開始。

[jly@VM-4-11-centos text]$ umask
0002//第一位不管,系統會預設設定好許可權掩碼為002,即000 000 010

凡是在umask中出現的許可權,必須在起始許可權中去掉,即最終許可權=起始許可權&(~umask)。

所以,我們建立出來的目錄的許可權是775(rwx rwx r-x),普通檔案的許可權是664(rw- rw- r--)。

umask 0444//更改umask的值,即100 100 100

修改後建立出來的目錄許可權變為333,普通檔案許可權變為222。

4、目錄的許可權

目錄的r許可權:能否檢視目錄中的檔案。

目錄的w許可權:能否在目錄中建立檔案。

目錄的x許可權:能否進入、執行目錄中的檔案

所以,目錄的起始許可權從777開始,是因為所有角色都需要x許可權進入目錄。

四、粘滯位(公共目錄使用)

Linux系統中有很多人,我們需要在一個公共的目錄下,進行臨時檔案的操作(增刪查改)。這個公共目錄由root來建立。

在這個公共目錄中,通過檔案自身的許可權來約束不同的角色,但是無法阻止其他使用者私自刪除這些檔案。因為在目錄中刪除一個檔案,與這個檔案本身無關,與它所處的目錄的許可權有關。

這個公共目錄的擁有者和所屬組是root,粘滯位會限制other的許可權。

chmod +t /mytmp   //在/目錄下的mytmp目錄中加上粘滯位

drwxrwxrwx
drwxrwxrwt

加上粘滯位後,該公共目錄的other的x許可權變為t,也就是該目錄下other的可執行許可權變為粘滯位,其他使用者無權刪除不屬於他的檔案。

五、許可權總結

1、目錄的可執行許可權是表示你可否在目錄下執行命令。

2、如果目錄沒有-x許可權,則無法對目錄執行任何命令,甚至無法cd進入目錄, 即使目錄仍然有-r 讀許可權(這個地方很容易犯錯,認為有讀許可權就可以進入目錄讀取目錄下的檔案)

3、如果目錄具有-x許可權,但沒有-r許可權,則使用者可以執行命令,可以cd進入目錄。但由於沒有目錄的讀許可權,所以在目錄下,即使可以執行ls命令,但仍然沒有許可權讀出目錄下的檔案。

到此這篇關於深入瞭解Linux的檔案許可權的文章就介紹到這了,更多相關Linux檔案許可權內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com