目錄
- shell命令以及運行原理
- 用戶管理
- 添加用戶
- 刪除用戶
- sudo
- Linux權限的概念
- Linux權限管理
- 文件訪問者的分類(人)
- 文件類型和訪問權限(事物屬性)
- 文件權限值的表示方法
- 文件訪問權限的相關設置方法
- 目錄的權限
- 粘滯位
shell命令以及運行原理
Linux嚴格意義上說的是一個操作系統,我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。如何理解?為什么不能直接使用kernel?
從技術角度:
Shell的最簡單定義:命令行解釋器 (command Interpreter) 主要包含:
- 將使用者的命令翻譯給核心(kernel)處理。
- 同時,將核心的處理結果翻譯給使用者。
對比windows GUI,我們操作windows 不是直接操作windows內核,而是通過圖形接口,點擊,從而完成我們的操作(比如進入D盤的操作,我們通常是雙擊D盤盤符.或者運行起來一個應用程序)。
shell 對于Linux,有相同的作用,主要是對我們的指令進行解析,解析指令給Linux內核。反饋結果在通過內核運行出結果,通過shell解析給用戶。
總結:
也就是說我們輸入的指令是通過shell這個命令行解釋器與操作系統溝通的。而常看到的bash是shell的一種。
用戶管理
首先要知道,我們購買的服務器后,得到的是一個root用戶,該用戶就像是規則的制定者,但其不受規則的約束,得到了root用戶就得到了整個服務器。在實際使用中是不推薦使用root用戶的,原因就是它不受權限的約束,可以肆意妄為,對整個服務器來說是十分危險的。
添加用戶
Linux下有兩種用戶:超級用戶(root)、普通用戶。超級用戶只有一個,而普通用戶可以有很多。并且普通用戶只能由超級用戶root創建。
方法:
- adduser 用戶名
- passwd 用戶名
刪除用戶
- 刪除時記得帶-r選項
以上刪除和添加用戶都會在home目錄下操作,無需指定目錄或進入某一路徑進行以上操作。
sudo
普通用戶是有很多權限約束的,在一些情況下需要短暫使用root權限,這時候就可以使用sudo進行提權,即普通用戶使用root的權限進行操作。
語法: sudo?指令
功能: 提升當前指令的權限
sudo配置方法:
文件路徑:
vim /etc/sudoers
vim配置
Linux權限的概念
Linux下有兩種用戶:超級用戶(root)、普通用戶。
- 超級用戶:可以再linux系統下做任何事情,不受限制
- 普通用戶:在linux下做有限的事情。
- 超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
命令:su [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用 suroot(root可以省略,root只有一個),此時系統會提示輸入root用戶的口令。
- 選項 - :重新登陸。
Linux權限管理
文件訪問者的分類(人)
- 文件和文件目錄的所有者:u—User
- 文件和文件目錄的所有者所在的組的用戶:g—Group
- 其它用戶:o—Others
文件類型和訪問權限(事物屬性)
文件的屬性可以用ll指令查看,如下:
- 對于文件訪問者而言,只列出了擁有者u,所屬組g,其他用戶o不進行顯示,對于訪問者而言不是前面兩個u,g,就是其他用戶o。
- 文件權限三三一組,分別為:u,g,o的權限。
文件類型:
- d:文件夾
- -:普通文件
- l:軟鏈接(類似Windows的快捷方式)
- b:塊設備文件(例如硬盤、光驅等)
- p:管道文件
- c:字符設備文件(例如屏幕等串口設備)
- s:套接口文件
基本權限:
- 讀(r):Read對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽該目錄信息的權限。
- 寫(w):Write對文件而言,具有修改文件內容的權限;對目錄來說具有刪除移動目錄內文件的權限。
- 執行(x):execute對文件而言,具有執行文件的權限;對目錄來說,具有進入目錄的權限。
- “-”表示不具有該項權限。
文件權限值的表示方法
字符表示:
Linux表示 | 說明 | Linux表示 | 說明 |
---|---|---|---|
r– | 只讀 | -w- | 僅可寫 |
–x | 僅可執行 | rw- | 可讀可寫 |
-wx | 可寫和可執行 | r-x | 可讀可執行 |
rwx | 可讀可寫可執行 | — | 無權限 |
8進制數:
權限符號 | 八進制 | 二進制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
— | 0 | 000 |
文件訪問權限的相關設置方法
chmod:
功能:設置文件的訪問權限
格式:chmod [參數] 權限 文件名
常用選項:
- -R : 遞歸修改目錄文件的權限
注意:只有文件的擁有者和root才可以改變文件的權限
格式:
- +:向權限范圍增加權限代號所表示的權限
- -:向權限范圍取消權限代號所表示的權限
- =:向權限范圍賦予權限代號所表示的權限
用戶符號:
- u:擁有者
- g:擁有者同組用
- o:其它用戶
- a:所有用戶
將目錄dir擁有者的權限rwx改為—
八進制格式:
chown
功能:修改文件的擁有者
格式:chown [參數] 用戶名 文件名
常用選項: -R 遞歸修改目錄文件的擁有者。
更改擁有者是需要使用使用sudo進行提權的;就像實際中別人給你東西,你是有拒絕的權力的,但提權后就是root權限,不接受也得接受。
chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數] 用戶組名 文件名
常用選項:-R 遞歸修改文件或目錄的所屬組
同樣需要root權限。
umask
以下均為八進制表示
功能:查看或修改文件掩碼
新建文件夾默認權限=0666 ,新建目錄默認權限=0777
但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。原因就是創建文件或目錄的時候還要受到umask的影響。假設默認權限是mask,則實際創建的出來的文件權限是: mask & ~umask
可以按自己要求設置新建文件,目錄的權限;改動需謹慎,默認值為:0002。
格式:umask 權限值
說明:將現有的存取權限減去權限掩碼后,即可產生建立文件時預設權限。超級用戶默認掩碼值為0022,普通用戶默認為0002。(忽略第一個0,看后三位)
以普通用戶為例:
目錄的權限
可執行權限(x): 如果目錄沒有可執行權限, 則無法cd到目錄中。
可讀權限(r): 如果目錄沒有可讀權限, 則無法用ls等命令查看目錄中的文件內容。
可寫權限(w): 如果目錄沒有可寫權限, 則無法在目錄中創建文件, 也無法在目錄中刪除文件。
按照以上說法就會發現一個問題:只要用戶具有目錄的寫權限, 用戶就可以刪除目錄中的文件, 而不論這個用戶是否有這個文件的寫權限。
以上情況由于上面umask的原因一般不會出現,但是當多人需要一起協作時,就會出現以上場景。
如兩個普通用戶在同一臺服務器中需要創建一個共享目錄進行協作辦公(也就是該目錄對其他人o有rwx權限)。
在根目錄/下建一個shared的目錄作為共享目錄,并把其o+w權限。
共享文件示例
這樣看起來也太不合理了,既不是root權限,也不是文件的擁有者,還能直接刪除該文件。所以為了解決這種情況,引入了粘滯位
從這里再次看出一個文件能否被刪除取決于該文件所在目錄對應訪問者是否有w權限。
粘滯位
當一個目錄被設置為"粘滯位"(用chmod +t),則該目錄下的文件只能由
- 超級管理員刪除
- 該文件的所有者刪除
- 該目錄的所有者刪除
- 目錄被設置為"粘滯位"的其他權限中的x會變為t。
- 在根目錄下是有系統默認的”共享文件“tmp。
- t是一種特殊的x。