1. 操作系統的外殼?
在理解Linux權限之前,我們先來吃點小菜。
1.大部分指令都是文件,如果把指令對應的文件刪除了,那么這條指令就使用不了了。
2.用戶執行某種功能的時候,不是直接讓操作系統執行對應的指令的,而是先交給外殼程序
常見的外殼程序有,圖形化界面和命令行。
?
關于第一條,我們上一節有提過Linux基本指令(下)-CSDN博客
?我們的電腦里有著各種各樣的可執行程序,比如我們要打開qq,在桌面點擊qq的快捷方式,實際上就是點擊qq的可執行程序,不過這個過程交給操作系統來做了。一旦刪除qq的可執行程序,那么就打不開qq了。
第二條,大家看,下圖有什么差別?
?
圖中右邊是圖形化界面,左邊是命令行,這兩者都是外殼程序。
外殼程序是什么?
外殼程序實際就是介于用戶和操作系統之間的軟件,簡單來說,就是命令行解釋器? 。
你通過外殼程序向操作系統發出指令,操作系統通過外殼向你進行反饋。?
同時外殼程序會對你發出的指令進行判斷,不合法的指令會做處理。?
為什么要有外殼程序??
?外殼程序承擔著用戶與操作系統進行交互的重要功能。普通用戶不了解操作系統,那么要和他進行交互,只能通過外殼程序。類似Xshell的命令行外殼,使用者自然是程序員等,而圖形化界面才是普及大眾的外殼,不僅美觀,而且操作簡便。
? ? ? 用戶不善于與操作系統之間進行交互。
? ? ? 外殼shell的存在,可以對請求進行合法性檢測,變相的保護操作系統。
2. Linux的權限?
2.1 什么是權限?
通俗來講,權限就是能與不能的概念。你能訪問某類資源,也就是你對這類的訪問具有權限。
2.2 權限的本質?
當你是學生或者教職工的時候,你就能進入學校的大門;
當你是店鋪店主的時候,你就能查閱店鋪的營銷情況。
我們作為用戶,可以在leetcode里寫代碼而不能看電影。
因此權限=人物(角色)+事物屬性。?
2.3 Linux里的用戶
Linux下有兩種用戶:超級用戶(root)、普通用戶。
超級用戶:可以再linux系統下做任何事情,不受限制
普通用戶:在linux下做有限的事情。
超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”
?
類似于公司的老總與普通員工。那么如果老總創了小號,要怎么快速切換老總號與普通號呢?
這里有一個命令:
su [用戶名]?
?
在普通用戶下,直接su默認進入root,su -也是進入root?。區別在于su -會直接進入用戶的家目錄
?
那么我們不想進入root賬號,卻要行使root的權利該怎么做呢?
在指令前加sudo(提權)但當我們鍵入密碼后,卻發現我們收到了警告:用戶不在sudoers文件中,并且本次事件將被報告。
在 Linux 中,普通用戶默認沒有 sudo 權限。這是為了防止普通用戶執行一些可能對系統造成損害的命令。 如果普通用戶需要使用 sudo 權限,可以通過以下方式進行設置: 1. 將普通用戶添加到 sudo 組。 2. 修改 sudoers 文件,允許普通用戶使用 sudo 命令。
3.?Linux權限管理?
3.1 Linux中的文件訪問者?
linux中文件的訪問者共分為三類:
文件和文件目錄的所有者:u---User
文件和文件目錄的所有者所在的組的用戶:g---Group
其它用戶:o---Others
3.2 文件類型與訪問權限?
?
windows區分文件類別的方式是什么?后綴!
那么Linux也是嗎?
不,Linux是通過上圖屬性列的第一位來表示文件類型的。 (如gcc等工具可能會區分)
1. 文件類型?
d:文件夾
-:普通文件
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如屏幕等串口設備)
s:套接口文件
2. 基本權限?
屬性列三三一組,分別代表擁有者,所屬組,other
< > 讀(r):Read對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽該目錄信息的權限
< > 寫(w):Write對文件而言,具有修改文件內容的權限;對目錄來說具有刪除移動目錄內文件的權限
< > 執行(x):execute對文件而言,具有執行文件的權限;對目錄來說,具有進入目錄的權限
< > “—”表示不具有該項權限
3. 文件權限值的表示?
字符表示?
?
八進制數值表示?
?
?我們畫個圖簡單舉個例子
4. 文件訪問權限的相關設置方式?
(1) 修改訪問者權限?
chomd?
功能:設置文件的訪問權限
格式:chmod [參數] 權限 文件名
常用選項:
R -> 遞歸修改目錄文件的權限
說明:只有文件的擁有者和root才可以改變文件的權限
chmod
① 用戶表示符+/-=權限字符
+:向權限范圍增加權限代號所表示的權限
-:向權限范圍取消權限代號所表示的權限
=:向權限范圍賦予權限代號所表示的權限
用戶符號:
u:擁有者
g:擁有者同組用
o:其它用戶
a:所有用戶
eg:修改file文件權限為:擁有者可讀,所屬組可讀可執行,other無權限
?
將三個訪問者的權限全部打開。?
?
eg:我們編寫了一個c語言代碼,編譯后修改擁有者的執行權限。
?
?但切記,這些權限的修改對root用戶是沒有作用的。
8進制數值表示方法
?擁有者,所屬組,other都是三三為一組。
我們把是由否有權限:是用1代替,否用0代替。
那么rw,我們就可以對應的寫成110,那么轉成八進制就是6,所以6就等于rw的效果。
(2)chown
功能:修改文件的擁有者
格式: chown [參數] 用戶名 文件名?
(3)chgrp
功能:修改文件或目錄的所屬組
格式: chgrp [參數] 用戶組名 文件名
eg:
?
4. 目錄的權限?
?在Linux一切皆文件的理念下,目錄自然也是文件。
那么目錄當然也有權限。
可執行權限: 如果目錄沒有可執行權限, 則無法cd到目錄中
可讀權限: 如果目錄沒有可讀權限, 則無法用ls等命令查看目錄中的文件內容.
可寫權限: 如果目錄沒有可寫權限, 則無法在目錄中創建文件, 也無法在目錄中刪除文件
只要用戶具有目錄的寫權限, 用戶就可以刪除目錄中的文件, 而不論這個用戶是否有這個文件的寫
權限。
比如user01有user10用戶家目錄的寫權限,那么user01就可以對user10家目錄下的內容進行操作。而目錄的內容則包括其下的文件。
5. 默認權限
新建文件夾默認權限=0666
新建目錄默認權限=0777
但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。
我們可以看到新建目錄的默認權限是0775,新建文件的默認權限是0664。
這是為什么呢?
?因為創建文件或目錄的時候還要受到umask的影響。
umask?功能:查看或修改文件掩碼
假設默認權限是mask,則實際創建的出來的文件權限是: mask & ~umask
我們看看Linux系統文件掩碼默認值
eg: 創建文件默認權限是0666,那么0666還要 ?按位與 上取反的umask的值