微吼云上線多路互動直播服務 加速多場景互動直播落地
1168
2025-04-02
以下出現的 “ # ” 表示以超級管理員(root)用戶操作
Linux的權限操作與用戶、用戶組是兄弟操作。
一、權限概述
總述:Linux系統一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等權限。
1、權限介紹
什么是權限?
在多用戶(可以不同時)計算機系統的管理中,權限是指某個特定的用戶具有特定的系統資源使用權力,像是文件夾、特定系統指令的使用或存儲量的限制。
在Linux中分別有讀、寫、執行權限:
權限:
對于文件夾來說,讀權限影響用戶是否能夠列出目錄結構
對于文件來說,讀權限影響用戶是否可以查看文件內容
寫權限:
對文件夾來說,寫權限影響用戶是否可以在文件夾下“創建/刪除/復制到/移動到”文檔
對于文件來說,寫權限影響用戶是否可以編輯文件內容
執行權限:
一般都是對于文件來說,特別腳本文件。
2、身份介紹
Owner身份(文件所有者,默認為文檔的創建者)
由于Linux是多用戶、多任務的操作系統,因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設置文件的權限,讓其成為個人的“私密文件”,即個人所有者。因為設置了適當的文件權限,除本人(文件所有者)之外的用戶無法查看文件內容。
例如某個MM給你發了一封Email情書,你將情書轉為文件之后存檔在自己的主文件夾中。為了不讓別人看到情書的內容,你就能利用所有者的身份去設置文件的適當權限,這樣,即使你的情敵想偷看你的情書內容也是做不到的。
Group身份(與文件所有者同組的用戶)
與文件所有者同組最有用的功能就體現在多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。由于設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,但是團體C的成員則不能修改F的內容,甚至連查看的權限都沒有。同時,團體的成員也能設置自己的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每個賬戶支持多個用戶組。如用戶a1、b1即可屬于A用戶組,也能屬于B用戶組【主組和附加組】。
Others身份(其他人,相對于所有者)
這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明(owner所有者),那么,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有個人叫張三,和他們三沒有關系,那么這個張三就是其他人了。
同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,但是小明不能讓大明看到自己的情書、日記等,這就是文件所有者(用戶)的意義。
Root用戶(超級用戶)
在Linux中,還有一個神一樣存在的用戶,這就是root用戶,因為在所有用戶中它擁有最大的權限 ,所以管理著普通用戶。
3、Linux的權限介紹
要設置權限,就需要知道文件的一些基本屬性和權限的分配規則。在Linux中,ls命令常用來查看文件的屬性,用于顯示文件的文件名和相關屬性。
# ls -l 路徑 【ls -l 等價于 ll】
標紅的部分就是Linux的文檔權限屬性信息。
Linux中存在用戶、用戶組和其他人概念,各自有不同的權限,對于一個文檔來說,其權限具體分配如下:
十位字符表示含義:
第1位:表示文檔類型,取值常見的有“d表示文件夾”、“-表示文件”、“l表示軟連接”、“s表示套接字”等等;
第2-4位:表示文檔所有者的權限情況,第2位表示讀權限的情況,取值有r、-;第3位表示寫權限的情況,w表示可寫,-表示不可寫,第4位表示執行權限的情況,取值有x、-。
第5-7位:表示與所有者同在一個組的用戶的權限情況,第5位表示讀權限的情況,取值有r、-;第6位表示寫權限的情況,w表示可寫,-表示不可寫,第7位表示執行權限的情況,取值有x、-。
第8-10位:表示除了上面的前2部分的用戶之外的其他用戶的權限情況,第8位表示讀權限的情況,取值有r、-;第9位表示寫權限的情況,w表示可寫,-表示不可寫,第10位表示執行權限的情況,取值有x、-。
權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 – 代替。
例如:以下一個文檔權限是怎么樣的?
a. 其是文件夾類型
b. 所有者:擁有全部權限(讀寫執行)
c. 同組用戶:可讀、可執行
d. 其他用戶:可讀、可執行
二、權限設置
語法:# chmod 選項 權限模式 文檔
常用選項:
-R:遞歸設置權限 (當文檔類型為文件夾的時候)
權限模式:就是該文檔需要設置的權限信息
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
1、字母形式
給誰設置:
u:表示所有者身份owner(user)
g:表示給所有者同組用戶設置(group)
o:表示others,給其他用戶設置權限
a:表示all,給所有人(包含ugo部分)設置權限
如果在設置權限的時候不指定給誰設置,則默認給所有用戶設置
權限字符:
r:讀
w:寫
x:表示執行
-:表示沒有權限
權限分配方式:
+:表示給具體的用戶新增權限(相對當前)
-:表示刪除用戶的權限(相對當前)
=:表示將權限設置成具體的值(注重結果)【賦值】
例如:需要給anaconda-ks.cfg文件(-rw-------.)設置權限,要求所有者擁有全部的權限,同組用戶擁有讀和執行權限,其他用戶只讀權限。
答案:
① # chmod u+x,g+rx,o+r anaconda-ks.cfg
② # chmod u=rwx,g=rx,o=r anaconda-ks.cfg
提示:當文檔擁有執行權限(任意部分),則其顏色在終端中是綠色。
# chmod ug=rwx 形式,如果有兩部分權限一樣則可以合在一起寫的
例如:如果anaconda-ks.cfg文件什么權限都沒有,可以使用root用戶設置所有人都有執行權限,則可以寫成
①# chmod +x anaconda-ks.cfg
②# chmod a=x anaconda-ks.cfg
③# chmod a+x anaconda-ks.cfg
2、數字形式
經常會在一些技術性的網頁上看到類似于# chmod 777 a.txt 這樣的一個權限,這種形式稱之為數字形式權限(777)。
讀:r 4
寫:w 2
執行:x 1
沒有任何權限:0
例如:需要給anaconda-ks.cfg設置權限,權限要求所有者擁有全部權限,同組用戶擁有讀執行權限,其他用戶只讀。
全部權限(u):讀+寫+執行=4+2+1=7
讀和執行(g):讀+執行=4+1=5
讀權限(o):讀=4
由上得知權限為:754
# chmod 754 anaconda-ks.cfg
面試題:用超級管理員設置文檔的權限命令是# chmod -R 731 aaa,請問這個命令有沒有什么不合理的地方?
擁有者:7=4+2+1=讀+寫+執行
同組用戶:3=2+1=寫+執行
其他用戶:1=1=執行
注意:在寫權限的時候千萬不要設置類似于上面的這種“奇葩權限”。如果一個權限數字中但凡出現2與3的數字,則該權限有不合理的情況。
3、注意事項
使用root用戶創建一個文件夾(/oo),權限默認,權限如下:
需要在oo目錄下創建文件(oo/xx.txt),需要給777權限:
切換到test用戶(不是文檔所有者,也不是同組用戶,屬于other部分):
問題1:test用戶是否可以打開oo/xx.txt文件?【能打開】
問題2:test用戶是否可以編輯oo/xx.txt文件?【可以】
問題3:test用戶是否可以刪除oo/xx.txt文件?【不可以,同樣還不允許創建文件/文件夾、移動文件、重命名文件】
在Linux中,如果要刪除一個文件,不是看文件有沒有對應的權限,而是看文件所在的目錄是否有寫權限,如果有才可以刪除。
三、屬主與屬組設置
屬主:所屬的用戶(文件的主人)
屬組:所屬的用戶組
前面的那個root就是屬主
后面的那個root就是屬組
這兩項信息在文檔創建的時候會使用創建者的信息(用戶名、用戶所屬的主組名稱)。
如果有時候去刪除某個用戶,則該用戶對應的文檔的屬主和屬組信息就需要去修改。
1、chown(重點)
作用:更改文檔的所屬用戶
語法:# chown -R username 文檔路徑
案例:將剛才root用戶創建的oo目錄,所有者更改為test
# chown test oo/
2、chgrp(了解)
作用:更改文檔的所屬用戶組
語法:# chgrp -R groupname 文檔的路徑
案例:將剛才root用戶創建的oo目錄,所有者更改為test,并且將所屬用戶組也改為test
# chgrp test oo/
思考,如何通過一個命令實現既可以更改所屬的用戶,也可以修改所屬的用戶組呢?
答:可以實現的,通過chown命令
語法:# chown -R username:groupname 文檔路徑
案例:要求只使用chown指令,將oo目錄的所屬用戶和用戶組改回成root,并且包含其子目錄
四、擴展(1)
問題:reboot、shutdown、init、halt、user管理,在普通用戶身份上都是操作不了,但是有些特殊的情況下又需要有執行權限。又不可能讓root用戶把自己的密碼告訴普通用戶,這個問題該怎么解決?
該問題是可以被解決的,可以使用sudo(switch user do)命令來進行權限設置。sudo可以讓管理員(root)事先定義某些特殊命令誰可以執行。
默認sudo中是沒有除root之外用戶的規則,要想使用則先配置sudo。
sudo配置文件:/etc/sudoers
a. 配置sudo文件請使用“# visudo”,打開之后其使用方法和vim一致
b. 配置普通用戶的權限
root表示用戶名,如果是用戶組,則可以寫成“%組名”
ALL:表示允許登錄的主機(地址白名單)
(ALL):表示以誰的身份執行,ALL表示root身份
ALL:表示當前用戶可以執行的命令,多個命令可以使用“,”分割
案例:本身test用戶不能添加用戶,要求使用sudo配置,將其設置為可以添加用戶,并且可以修改密碼(但是不能修改root用戶密碼)。
注意:在寫sudo規則的時候不建議寫直接形式的命令,而是寫命令的完整路徑。
路徑可以使用which命令來查看
語法:# which 指令名稱
在添加好對應的規則之后就可以切換用戶,切換到普通用戶test,再去執行:
此時要想使用剛才的規則,則以以下命令進行:
# sudo 需要執行的指令
在輸入sudo指令之后 輸入當前的用戶密碼進行確認的操作(不是root用戶密碼),輸入之后在接下來5分鐘內再次執行sudo指令不需要密碼。
特別注意:此處按照案例要求,不能讓test用戶修改root密碼,因此規則還需要調整,不然其可以修改root密碼的:
禁止修改root密碼的配置(先允許全部,再拒絕root密碼設置):
/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
補充:在普通用戶下怎么查看自己具有哪些特殊權限呢?
# sudo -l
注意:sudo不是任何Linux分支都有的命令,常見centos與ubuntu都存在sudo命令。
Linux 統一身份認證服務 IAM
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。