目錄
一.shell命令以及運行原理
二.Linux權限的概念
1.Linux下兩種用戶
cannot open directory '.': Permission denied 問題
2.Linux權限管理
1).是什么
2).為什么(權限=角色+目標權限屬性)
3).文件訪問者的分類(角色)
4).文件類型和訪問權限(事物屬性)
5).怎么做
(1)chmod (設置文件的訪問權限)
(2)用戶只能更改自己的文件權限
(3)沒有權限系統會拒絕訪問
(4)確定權限信息的時候,系統會先確定用戶是誰?擁有者,所屬組還是other
(5)root不受權限約束
?(6)chown(修改文件的擁有者)
(7)umask(查看或修改文件掩碼)
6).目錄的權限
(1)粘滯位
三.關于權限的總結
一.shell命令以及運行原理
Linux嚴格意義上說的是?個操作系統,我們稱之為“核心(kernel)“ ,但我們?般用戶,不能直接使?kernel。而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。如何理解?為什么不能直接使用kernel?
從技術角度,Shell的最簡單定義:命令行解釋器(command Interpreter)主要包含:
? 將使用者的命令翻譯給核心(kernel)處理。
? 同時,將核心的處理結果翻譯給使用者
shell 對于Linux,有相同的作用,主要是對我們的指令進行解析,解析指令給Linux內核。反饋結果再通過內核運行出結果,通過shell解析給用戶
二.Linux權限的概念
1.Linux下兩種用戶
超級用戶(root)、普通用戶
- 超級用戶:可以再linux系統下做任何事情,不受限制
- 普通用戶:在linux下做有限的事情。
- 超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”
命令:su [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用?su root(root可以省略),此時系統會提示輸?root用戶的口令。
cannot open directory '.': Permission denied 問題
若切換用戶出現?cannot open directory '.': Permission denied的情況
命令:? ? su? ?-l? ? 用戶名
?若沒有設置普通用戶密碼切換root賬號設置一下
命令:? ? ?passwd? 用戶名?
2.Linux權限管理
1).是什么
權限本質是能或者不能做什么事
2).為什么(權限=角色+目標權限屬性)
- 控制用戶的行為,防止錯誤發生
- 權限首先限制的是角色
- 權限要求目標必須具備對應的屬性(比如:我不能在LeetCode上看電影)
3).文件訪問者的分類(角色)
?? 文件和文件目錄的所有者:u---User(中國平民 法律問題)
? 文件和文件目錄的所有者所在的組的用戶,所屬組:g---Group(不多說)
? 其它用戶other:o---Others (外國人)
4).文件類型和訪問權限(事物屬性)
文件類型:
- d:文件夾
- -:普通文件
- l:軟鏈接(類似Windows的快捷?式)
- b:塊設備文件(例如硬盤、光驅等)
- p:管道文件
- c:字符設備文件(例如屏幕等串?設備)
- s:套接口文件
基本權限:
- 讀(r/4):Read對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽該目錄信息的權限
- 寫(w/2):Write對文件而言,具有修改文件內容的權限;對目錄來說具有刪除移動目錄內?件的權限
- 執行(x/1):execute對文件而言,具有執行文件的權限;對目錄來說,具有進入目錄的權限
- “-”表示不具有該項權限
5).怎么做
文件訪問權限的相關設置方法
(1)chmod (設置文件的訪問權限)
功能:設置文件的訪問權限
格式:chmod [參數] 權限 文件名
常用選項:
- R -> 遞歸修改目錄文件的權限
說明:只有文件的擁有者和root才可以改變文件的權限
chmod命令權限值的格式:
- 用戶表?符+/-=權限字符
- + :向權限范圍增加權限代號所表示的權限
- -? :向權限范圍取消權限代號所表示的權限
- = :向權限范圍賦予權限代號所表示的權限
用戶符號:
- u:擁有者
- g:擁有者同組用
- o:其它用戶
- a:所有用戶
(2)用戶只能更改自己的文件權限
(3)沒有權限系統會拒絕訪問
(4)確定權限信息的時候,系統會先確定用戶是誰?擁有者,所屬組還是other
用戶角色只確定一次,順序是擁有者,所屬組,other
(5)root不受權限約束
?(6)chown(修改文件的擁有者)
功能:修改?件的擁有者
格式:chown [參數] 用戶名 文件名
(7)umask(查看或修改文件掩碼)
功能:
- 查看或修改文件掩碼
- 新建文件夾默認權限=0666
- 新建目錄默認權限=0777
- 但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。原因就是創建?件或目錄的時候還要受到umask的影響。假設默認權限是mask,則實際創建的出來的?件權限是: mask &(~umask)
格式:umask 權限值
說明:將現有的存取權限減去權限掩碼后,即可產生建立文件時預設權限。超級用戶默認掩碼值為0022,普通用戶默認為0002。
- 默認權限,有OS自主決定,無法在創建前進行修改----系統可配置,可以靈活滿足需要的一種表現
- 特殊情況下,配置umask,可以控制文件的默認權限,讓我們的代碼是可控的
6).目錄的權限
可執行權限x,可讀權限r,可寫權限w
可執行權限x: 如果目錄沒有可權限, 則無法cd到目錄中.
可讀權限r: 如果目錄沒有可讀權限, 則無法用ls等命令查看目錄中的文件內容.
可寫權限w: 如果目錄沒有可寫權限, 則無法在目錄中創建文件, 也無法在目錄中刪除文件.
于是, 問題來了~~ 換句話來講, 就是只要用戶具有目錄的寫權限, 用戶就可以刪除目錄中的文件, 而不論這個用戶是否有這個文件的寫權限。
這好像不太科學啊, 我張三創建的?個文件, 憑什么被你李四可以刪掉?
一個文件是否能被刪除,與文件本身無關,與文件所處的目錄權限w有關?
(1)粘滯位
為了解決這個不科學的問題, Linux引?了粘滯位的概念
任何一個人都能在共享目錄下創建,但是不能讓非擁有者刪除
當?個目錄被設置為"粘滯位"(用chmod +t),則該目錄下的文件只能由
- ?超級管理員刪除
- ?該目錄的所有者刪除
?該文件的所有者刪除
三.關于權限的總結
- 目錄的可執行權限是表示你可否在目錄下執行命令。
- 如果目錄沒有 -x 權限,則無法對目錄執行任何命令,甚至無法 cd 進入目錄, 即使目錄仍然有 -r 讀權限(這個地方很容易犯錯,認為有讀權限就可以進入目錄讀取目錄下的文件)
- 而如果目錄具有 -x 權限,但沒有 -r 權限,則用戶可以執行命令,可以 cd 進入目錄。但由于沒有目錄的讀權限
- 所以在目錄下,即使可以執行 ls 命令,但仍然沒有權限讀出目錄下的文檔