Linux權限
文章目錄
- Linux權限
- 一、root賬號與普通賬號
- 二、Linux權限管理
- 三、權限權值表示方法
- 四、文件訪問權限的設置方法
- 五、粘滯位
- 六、權限總結
前言:
??我們在學習Linux的時候,我們知道在Linux下一切皆文件,而不同的文件對于不同的用戶有不同的操作權限,有些重要的東西不能讓別人隨意修改,所以我們就需要給文件加上權限,保證文件的私密性,那么話不多說,開啟我們今天的主題!
一、root賬號與普通賬號
??在Linux下有兩種用戶:一種是 超級用戶(root),一種是 普通用戶。
區別 | 超級用戶 | 普通用戶 |
---|---|---|
操作范圍 | 可以在Linux系統下做任何事情 | 在Linux系統下做有限的事情 |
命令行提示符 | ‘#’ | ‘$’ |
??如果我們當前賬號是root賬號,想要切換為普通用戶,我們只需要這個命令:
su 普通用戶名//登錄普通用戶
??這樣就能切換用戶了,但是如果我們當前用戶是普通用戶,我們想要切換到root賬戶只需要:
su root//使用后要加上密碼
??我們從普通用戶切換為root賬號時,需要輸入root的密碼,且在輸入密碼的時候,我們是看不到密碼的。當密碼輸入完成時,回車就可以切換為root賬號了。
??我們還有一種方法可以從普通用戶切換為root賬號:
su -//切換root賬號
??在普通賬號中,我們只能查看操作自己的工作目錄,我們不能看到別人賬號下的工作目錄,同樣,更不能查看root賬號的工作目錄。
??如果我們并不想要在root賬號下執行命令,但是我們還想要root賬號的權限,這個時候我們就可以使用:
sudo 命令//進行root級別權限的指令
??但是sudo命令在普通賬號下并不是默認就有的,需要在root賬號下添加可使用sudo命令的成員名單。這個部分目前我們有所了解即可,以后我們會詳談。
總結:
??1、Linux下賬號分為root用戶和普通用戶,root用戶的權限最大,可以做任何事情,而普通用戶只能做有限的事情。
??2、root切換普通用戶使用su + 用戶名,普通用戶切換為root賬號時,需要su root或者su - 然后輸入root密碼回車即可切換。
??3、普通用戶想執行更高權限的命令需要在使用命令前加上sudo
二、Linux權限管理
- Linux當中,權限的類型一般有r(讀),w(寫),x(執行)。
- 日常生活中不同身份的人干不同的事,在Linux當中,有著 擁有者,所屬組,其他組 三類用戶對象,每個文件都可以對這三類用戶設置不同的權限。
??為了區分這個文件屬于誰,在我們圈出來的地方,第一個表示擁有者,第二個就表示所屬組。但是這里并沒有顯示other組,這是因為我們不清楚other是誰,如果將來有用戶來訪問我的文件,那么在這個文件當中other就會顯示出來。
??一般我們在詳細查看系統文件的時候會很容易發現這些:
??其實前面的這些字母與-就是一個 文件的屬性,表示 文件的類型和訪問權限,屬性的 第一位表示文件類型。
??文件屬性的第2-10位,表示 文件的權限,權限的前三位 表示文件所有者的權限,權限的 中間三位 表示文件所屬組的權限,而權限的最后三位表示其他用戶的權限。
文件類型分類:
d:文件夾
-:普通文件
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如屏幕等串口設備)
s:套接口文件
三、權限權值表示方法
文件的基本權限:
1、讀權限(r),r也就是READ的首字母,具有讀取文件內容的權限;對于目錄來說,具有瀏覽該目錄信息的權限。
2、寫權限(w),w也就是WRITE的首字母,具有修改文件內容的權限;對于目錄來說具有刪除移動目錄內文件的權限。
3、執行權限(x),Execute的第二個字母,具有執行文件的權限;對目錄來說具有進入目錄的權限。
4、“ - ”表示不具有該權限。
我們知道了權限三三為一組,一般權限分為如下幾種情況:
- ?r-- 表示只讀
- ?--x 表示僅可執行
- ?-wx 表示可寫可執行
- ?rwx 表示可讀可寫可執行
- ?-w- 表示僅可寫
- ?rw- 表示可讀可寫
- ?r-x 表示可讀可執行
- ?--- 表示無權限
??文件的權限也可以用二進制來表示,比如一個文件的權限為:rw-,那么該權限對應的二進制就是110。權限為rwx那么二進制就是111,無權限二進制表示為000。而3位比特位也可以使用8進制來表示一位數,那么我們也可以根據不同權限列出不同進制的表示方式:
權限符號 | 八進制 | 二進制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
??有了以上這些我們就能很輕易的分析出我們對一個文件擁有哪些權限。從而可以做具體的事情了。
四、文件訪問權限的設置方法
??有一些文件我們不想讓別人看到,或者不想讓別人對本文件進行操作,也就是說,我們想要對文件的權限進行更改,達到我們想要的效果。其實在Linux當中有這樣一條命令:
chmod命令:
功能: 設置文件的訪問權限。
格式: chmod[選項] 權限 文件名
常用選項:
- R -> 遞歸修改目錄文件的權限
- 說明:只有文件的擁有者和root才可以改變文件的權限
用戶標識符與權限字符:
- u:擁有者
- g:所屬組
- o:其他用戶
- a:所有用戶
- +:向權限范圍增加權限代號所表示的權限
- -:向權限范圍取消權限代號所表示的權限
- =:向權限范圍賦予權限代號所表示的權限
我們有如下文件:
??現在我們想要對file.txt的other組的可讀權限給刪除,我們只需要:
chmod o-r file.txt//將其他組的可讀權限刪除
??如果我們又想要將other組的可讀權限恢復,且還想加上可執行權限,我們只需要:
chmod o+rx file.txt
??這時我們突然又想要將file.txt文件所有權限都置為空,我們只需要:
chmod u-rw,g-rw,o-rx file.txt
??我們想要恢復權限,僅僅將上面命令的-改為+即可。
??如果我們要對一個文件的三個組有相同的權限管理請求,則我們可以使用a選項來進行批量處理文件權限:
chmod a+r file.txt
??我們看到所有文件都具有是否可執行這個選項,那么我們的文件擁有了可執行權限就一定能執行嗎?我們將file.txt文件屬性全部開放,再對該文件寫入一些內容:
??那么我們執行這個文件:
??我們會發現文件并不能執行,所以我們可以得出結論:一個文件具有可執行的權限,但是這個文件并不一定是可執行的,還需要保證這個文件是一個可執行程序。
??除此之外,我們還可以使用8進制來對一個文件的權限進行管理,按照上面給出的8進制數進行對文件的權限的管理:
??如果我們需要修改一個文件的擁有者,我們就需要用到下面的命令了:
一、chown命令:
功能:修改文件或目錄的所屬組
格式:chown [參數] 用戶組名 文件名
??使用方法也很簡單,只需要:
sudo chown 用戶組名 文件名
注意: 普通用戶在使用chown命令時,需要使用sudo命令。原因也很簡單,我們想要將自己的文件給別人,別人也是需要確認的,不然怎么知道你給的是不是什么病毒?但是你是root賬號或者使用sudo命令可以強制將文件 擁有者更改。
二、chgrp命令:
功能:修改文件或目錄的所屬組
格式:chgrp [參數] 用戶組名 文件名
常用選項:
- ?-R 遞歸修改文件或目錄的所屬組
??要更改所屬組也需要進行sudo或者在root賬號下使用該命令。
??我們有對應的更改所屬組與擁有者的命令,但是并沒有更改other組的命令,這是因為我們在更改擁有者與所屬組的同時,other是在不斷變化的,說白了,其實更改擁有者與所屬組就已經將other更改,所以不需要更改other的命令。
如果我們感覺一個一個更改擁有者與所屬組很麻煩,我們也可以使用:
chown 擁有者:所屬組 文件名
??這樣更改就方便了許多。
??我們前面說了,文件屬性的首尾表示文件的類型,但是文件的類型這么多,可能會記混,有沒有什么辦法能詳細查看該文件到底是什么文件的命令呢?Linux下有一個file命令:
file命令:
功能:查看文件類型的詳細信息
格式:file [選項] 文件或目錄
常用選項:
- ?-c 詳細顯示指令執行過程,便于排錯或程序執行的情況。
- ?-z 嘗試去解讀壓縮文件的內容。
??使用file命令就可以顯示文件的詳細類型。
五、粘滯位
??關于Linux的權限問題,我們有這樣三個問題:
一、對于一個目錄而言,如果要進入一個目錄,需要什么權限?
答案:
- ?x決定我們是否可以進入目錄。
- ?r決定我們是否可以對目錄信息進行查看。
- ?w決定是否可以在目錄下新建和刪除文件。
二、為什么我們創建的普通文件默認權限不是777而是664,目錄文件默認權限不是777而是775?
??我們在創建一個普通文件時,我們的默認權限轉化為8進制就是664,當我們創建一個目錄文件時,我們的默認權限是775,為什么他們的默認權限不是777?
??這是因為我們系統根據不同種類的文件進行了分類,有些文件不需要的屬性就不會去加,或者由其他應用程序來加,或者由用戶需要時自己添加,一般我們的普通文件里是不需要進行可執行的,所以在創建普通文件時就默認沒有這個選項,目錄同理。
??那么按理來說,我們的普通文件的權限應該是666,目錄文件權限應該是777,但是我們看到的目錄文件權限是775,普通文件權限是664啊。其實這是因為Linux存在一種叫做權限掩碼————umask
umask命令:
功能:
??查看或修改文件掩碼
??新建文件夾默認權限=0666
??新建目錄默認權限=0777
??但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。原因就是創建文件或目錄的時候還要受到umask的影響。假設默認權限是mask,則實際創建的出來的文件權限是:mask & ~umask
格式: umask 權限值(8進制)
注意: 將現有的存取權限減去權限掩碼后,即可產生建立文件時預設權限。超級用戶默認掩碼值為0022,普通用戶默認為0002。
??實際上,起始權限去掉umask值,就是我們的默認權限了,這里的去掉并不是單純的減法,而是 按位與運算(&):
??當然,umask值是可變的,可調整的,直接使用:
umask 3位8進制數
??我們將兩個新建文件屬性翻譯為8進制對比,也就說明了umask的值修改成功。
??我們將一個普通文件全部的權限置為0,再將文件擁有者和所屬組全部置為root,但是我們在普通用戶下卻能將root的文件給刪除了:
??我們發現居然可以刪除這個文件,普通用戶可以刪除root文件,這是很嚴重的問題,這很不科學。
??為了解決這個問題,在Linux中引入了粘滯位:
粘滯位:
??給目錄中的other設置的一個權限位,具有x的意義,同時也進一步對目錄權限就進行特殊限定:
給目錄的文件,只有root或者文件的擁有者有權利進行刪除,其他人一概不允許。
??使用形式:
chmod +t 目錄名
??如果我們想要將粘滯位刪除,我們只需要將+改為-即可:
chmod -t 目錄名
六、權限總結
- 目錄的可執行權限是表示你可否在目錄下執行命令。
- 如果目錄沒有-x權限,則無法對目錄執行任何命令,甚至無法cd 進入目, 即使目錄仍然有-r 讀限(這個地方很容易犯錯,認為有讀權限就可以進入目錄讀取目錄下的文件)
- 如果目錄具有-x權限,但沒有-r權限,則用戶可以執行命令,可以cd進入目錄。但由于沒有目錄的讀權限所以在目錄下,即使可以執行ls命令,但仍然沒有權限讀出目錄下的文檔。
??如果對你有幫助的話,還望能留下三連支持一下博主~~