Linux權(quán)限管理

Linux的權(quán)限管理操作
Linux的權(quán)限操作與用戶、用戶組是兄弟操作。

一、權(quán)限概述

總述:Linux系統(tǒng)一般將文件可存/取訪問的身份分為3個(gè)類別:owner、group、others,且3種身份各有read、write、execute等權(quán)限。

1、權(quán)限介紹

什么是權(quán)限?
在多用戶(可以不同時(shí))計(jì)算機(jī)系統(tǒng)的管理中,權(quán)限是指某個(gè)特定的用戶具有特定的系統(tǒng)資源使用權(quán)力,像是文件夾、特定系統(tǒng)指令的使用或存儲量的限制。

在Linux中分別有、執(zhí)行權(quán)限:
讀權(quán)限:

  • 對于文件夾來說,讀權(quán)限影響用戶是否能夠列出目錄結(jié)構(gòu)
  • 對于文件來說,讀權(quán)限影響用戶是否可以查看文件內(nèi)容

寫權(quán)限:

  • 對文件夾來說,寫權(quán)限影響用戶是否可以在文件夾下“創(chuàng)建/刪除/復(fù)制到/移動到”文檔
  • 對于文件來說,寫權(quán)限影響用戶是否可以編輯文件內(nèi)容

執(zhí)行權(quán)限:

  • 一般都是對于文件來說,特別腳本文件。

2、身份介紹

Owner身份(文件所有者,默認(rèn)為文檔的創(chuàng)建者):
由于Linux是多用戶、多任務(wù)的操作系統(tǒng),因此可能常常有多人同時(shí)在某臺主機(jī)上工作,但每個(gè)人均可在主機(jī)上設(shè)置文件的權(quán)限,讓其成為個(gè)人的“私密文件”,即個(gè)人所有者。因?yàn)樵O(shè)置了適當(dāng)?shù)奈募?quán)限,除本人(文件所有者)之外的用戶無法查看文件內(nèi)容。

  • 例如某個(gè)MM給你發(fā)了一封Email情書,你將情書轉(zhuǎn)為文件之后存檔在自己的主文件夾中。為了不讓別人看到情書的內(nèi)容,你就能利用所有者的身份去設(shè)置文件的適當(dāng)權(quán)限,這樣,即使你的情敵想偷看你的情書內(nèi)容也是做不到的。

Group身份(與文件所有者同組的用戶):
與文件所有者同組最有用的功能就體現(xiàn)在多個(gè)團(tuán)隊(duì)在同一臺主機(jī)上開發(fā)資源的時(shí)候。

  • 例如主機(jī)上有A、B兩個(gè)團(tuán)體,A中有a1,a2,a3三個(gè)成員,B中有b1,b2兩個(gè)成員,這兩個(gè)團(tuán)體要共同完成一份報(bào)告F。由于設(shè)置了適當(dāng)?shù)臋?quán)限,A、B團(tuán)體中的成員都能互相修改對方的數(shù)據(jù),但是團(tuán)體C的成員則不能修改F的內(nèi)容,甚至連查看的權(quán)限都沒有。同時(shí),團(tuán)體的成員也能設(shè)置自己的私密文件,讓團(tuán)隊(duì)的其它成員也讀取不了文件數(shù)據(jù)。在Linux中,每個(gè)賬戶支持多個(gè)用戶組。如用戶a1、b1即可屬于A用戶組,也能屬于B用戶組【主組和附加組】。

Others身份(其他人,相對于所有者):
這個(gè)是個(gè)相對概念。

  • 打個(gè)比方,大明、二明、小明一家三兄弟住在一間房,房產(chǎn)證上的登記者是大明(owner所有者),那么,大明一家就是一個(gè)用戶組,這個(gè)組有大明、二明、小明三個(gè)成員;另外有個(gè)人叫張三,和他們?nèi)龥]有關(guān)系,那么這個(gè)張三就是其他人了。
    同時(shí),大明、二明、小明有各自的房間,三者雖然能自由進(jìn)出各自的房間,但是小明不能讓大明看到自己的情書、日記等,這就是文件所有者(用戶)的意義。

Root用戶(超級用戶)
在Linux中,還有一個(gè)神一樣存在的用戶,這就是root用戶,因?yàn)樵谒杏脩糁兴?strong>擁有最大的權(quán)限 ,所以管理著普通用戶。

3、Linux的權(quán)限介紹

要設(shè)置權(quán)限,就需要知道文件的一些基本屬性和權(quán)限的分配規(guī)則。在Linux中,ls命令常用來查看文件的屬性,用于顯示文件的文件名和相關(guān)屬性。

ls -l [路徑]      #ls -l  等價(jià)于 ll

標(biāo)紅的部分就是Linux的文檔權(quán)限屬性信息。

Linux中存在用戶、用戶組其他人概念,各自有不同的權(quán)限,對于一個(gè)文檔來說,其權(quán)限具體分配如下:

image.png

十位字符表示含義:
第1位:表示文檔類型,
取值常見的有:
d表示文件夾
-表示文件
l表示軟連接
s表示套接字

第2-4位:表示文檔所有者的權(quán)限情況
第2位表示讀權(quán)限的情況,取值有r、-
第3位表示寫權(quán)限的情況w表示可寫,-表示不可寫
第4位表示執(zhí)行權(quán)限的情況,取值有x、-。

第5-7位:表示與所有者同在一個(gè)組的用戶的權(quán)限情況
第5位表示讀權(quán)限的情況,取值有r、-
第6位表示寫權(quán)限的情況,w表示可寫,-表示不可寫
第7位表示執(zhí)行權(quán)限的情況,取值有x、-

第8-10位:表示除了上面的前2部分的用戶之外的其他用戶的權(quán)限情況
第8位表示讀權(quán)限的情況,取值有r、-
第9位表示寫權(quán)限的情況w表示可寫,-表示不可寫
第10位表示執(zhí)行權(quán)限的情況,取值有x、-。

權(quán)限分配中,均是rwx的三個(gè)參數(shù)組合,且位置順序不會變化。沒有對應(yīng)權(quán)限就用 代替。

二、權(quán)限設(shè)置

語法:

chmod [選項(xiàng)] [權(quán)限模式] [文檔]

注意事項(xiàng):

  • 常用選項(xiàng)-R遞歸設(shè)置權(quán)限(當(dāng)文檔類型為文件夾的時(shí)候)

  • 權(quán)限模式:就是該文檔需要設(shè)置的權(quán)限信息

  • 文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。

注意點(diǎn):如果想要給文檔設(shè)置權(quán)限,操作者要么是root用戶,要么就是文檔的所有者。

1、字母形式

  • 給誰設(shè)置:
    u表示所有者身份owner(user)
    g表示給所有者同組用戶設(shè)置(group)
    o表示others,給其他用戶設(shè)置權(quán)限
    a表示all,給所有人(包含ugo部分)設(shè)置權(quán)限
    如果在設(shè)置權(quán)限的時(shí)候不指定給誰設(shè)置,則默認(rèn)給所有用戶設(shè)置

  • 權(quán)限字符:
    r
    w
    x表示執(zhí)行
    -表示沒有權(quán)限

  • 權(quán)限分配方式:
    +表示給具體的用戶新增權(quán)限(相對當(dāng)前)
    -表示刪除用戶的權(quán)限(相對當(dāng)前)
    =表示將權(quán)限設(shè)置成具體的值(注重結(jié)果)【賦值】

例如:需要給anaconda-ks.cfg文件(-rw-------.)設(shè)置權(quán)限,要求所有者擁有全部的權(quán)限,同組用戶擁有讀和執(zhí)行權(quán)限,其他用戶只讀權(quán)限。
答案:

chmod  u+x,g+rx,o+r  anaconda-ks.cfg

chmod  u=rwx,g=rx,o=r  anaconda-ks.cfg

提示:當(dāng)文檔擁有執(zhí)行權(quán)限(任意部分),則其顏色在終端中是綠色。

chmod ug=rwx        #  形式,如果有兩部分權(quán)限一樣則可以合在一起寫的

例如:如果anaconda-ks.cfg文件什么權(quán)限都沒有,可以使用root用戶設(shè)置所有人都有執(zhí)行權(quán)限,則可以寫成

chmod  +x  anaconda-ks.cfg

chmod  a=x  anaconda-ks.cfg

chmod  a+x  anaconda-ks.cfg

2、數(shù)字形式

經(jīng)常會在一些技術(shù)性的網(wǎng)頁上看到類似于chmod 777 a.txt這樣的一個(gè)權(quán)限,這種形式稱之為數(shù)字形式權(quán)限(777)

讀:r = 4
寫:w = 2
執(zhí)行:x = 1
沒有任何權(quán)限:0

例如:需要給anaconda-ks.cfg設(shè)置權(quán)限,權(quán)限要求所有者擁有全部權(quán)限,同組用戶擁有讀執(zhí)行權(quán)限,其他用戶只讀。
全部權(quán)限(u)讀+寫+執(zhí)行=4+2+1=7
讀和執(zhí)行(g)讀+執(zhí)行=4+1=5
讀權(quán)限(o)讀=4
由上得知權(quán)限為:754

chmod 754 anaconda-ks.cfg

面試題:用超級管理員設(shè)置文檔的權(quán)限命令是chmod -R 731 aaa,請問這個(gè)命令有沒有什么不合理的地方?

  • 存在的問題:只能寫不能讀????
    擁有者:7=4+2+1=讀+寫+執(zhí)行
    同組用戶:3=2+1=寫+執(zhí)行
    其他用戶:1=1=執(zhí)行

注意:在寫權(quán)限的時(shí)候千萬不要設(shè)置類似于上面的這種“奇葩權(quán)限”。如果一個(gè)權(quán)限數(shù)字中但凡出現(xiàn)23的數(shù)字,則該權(quán)限有不合理的情況。

3、注意事項(xiàng)

使用root用戶創(chuàng)建一個(gè)文件夾(/oo),權(quán)限默認(rèn),權(quán)限如下:

需要在oo目錄下創(chuàng)建文件(oo/xx.txt),需要給777權(quán)限:

切換到test用戶(不是文檔所有者,也不是同組用戶,屬于other部分):

問題1:test用戶是否可以打開oo/xx.txt文件?

  • 【能打開】
    問題2:test用戶是否可以編輯oo/xx.txt文件?
  • 【可以】
    問題3:test用戶是否可以刪除oo/xx.txt文件?
  • 【不可以,同樣還不允許創(chuàng)建文件/文件夾、移動文件、重命名文件】

在Linux中,如果要刪除一個(gè)文件,不是看文件有沒有對應(yīng)的權(quán)限,而是看文件所在的目錄是否有寫權(quán)限,如果有才可以刪除。

三、屬主與屬組設(shè)置

屬主: 所屬的用戶(文件的主人)
屬組: 所屬的用戶組

  • 前面的那個(gè)root就是屬主
  • 后面的那個(gè)root就是屬組

這兩項(xiàng)信息在文檔創(chuàng)建的時(shí)候會使用創(chuàng)建者的信息(用戶名、用戶所屬的主組名稱
如果有時(shí)候去刪除某個(gè)用戶,則該用戶對應(yīng)的文檔的屬主和屬組信息就需要去修改。

1、chown(重點(diǎn))

作用:更改文檔的所屬用戶
語法:

chown  -R  [username] [文檔路徑]

案例:將剛才root用戶創(chuàng)建的oo目錄,所有者更改為test

chown  test  oo/

2、chgrp

作用:更改文檔的所屬用戶組
語法:

chgrp  -R  [groupname] [文檔的路徑]

案例:將剛才root用戶創(chuàng)建的oo目錄,所有者更改為test,并且將所屬用戶組也改為test

chgrp  test  oo/

思考,如何通過一個(gè)命令實(shí)現(xiàn)既可以更改所屬的用戶,也可以修改所屬的用戶組呢?
答:可以實(shí)現(xiàn)的,通過chown命令
語法:

chown  -R  [username]:[groupname] [文檔路徑]

案例:要求只使用chown指令,將oo目錄的所屬用戶和用戶組改回成root,并且包含其子目錄

四、擴(kuò)展

問題:rebootshutdown、inithalt、user管理,在普通用戶身份上都是操作不了,但是有些特殊的情況下又需要有執(zhí)行權(quán)限。又不可能讓root用戶把自己的密碼告訴普通用戶,這個(gè)問題該怎么解決?

該問題是可以被解決的,可以使用sudo(switch user do)命令來進(jìn)行權(quán)限設(shè)置
sudo可以讓管理員(root)事先定義某些特殊命令誰可以執(zhí)行。

  • 默認(rèn)sudo中是沒有除root之外用戶的規(guī)則
  • 要想使用則先配置sudo

sudo配置文件:/etc/sudoers

image.png

image.png
  • a. 配置sudo文件請使用visudo,打開之后其使用方法和vim一致
visudo
image.png
  • b. 配置普通用戶的權(quán)限


    image.png

root表示用戶名,如果是用戶組,則可以寫成%[組名]
ALL:表示允許登錄的主機(jī)(地址白名單)
(ALL):表示以誰的身份執(zhí)行,ALL表示root身份
ALL:表示當(dāng)前用戶可以執(zhí)行的命令,多個(gè)命令可以使用,分割

image.png

image.png

案例:本身test用戶不能添加用戶,要求使用sudo配置,將其設(shè)置為可以添加用戶,并且可以修改密碼(但是不能修改root用戶密碼)。

image.png

注意:在寫sudo規(guī)則的時(shí)候不建議寫直接形式的命令,而是寫命令的完整路徑
路徑可以使用which命令來查看
語法:

which [指令名稱]

在添加好對應(yīng)的規(guī)則之后就可以切換用戶,切換到普通用戶test,再去執(zhí)行:

此時(shí)要想使用剛才的規(guī)則,則以以下命令進(jìn)行:

sudo [需要執(zhí)行的指令]
image.png

在輸入sudo指令之后需要輸入當(dāng)前的用戶密碼進(jìn)行確認(rèn)的操作(不是root用戶密碼),輸入之后在接下來5分鐘內(nèi)再次執(zhí)行sudo指令不需要密碼。

特別注意:此處按照案例要求,不能讓test用戶修改root密碼,因此規(guī)則還需要調(diào)整,不然其可以修改root密碼的:

禁止修改root密碼的配置(先允許全部,再拒絕root密碼設(shè)置):
/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

image.png

補(bǔ)充:在普通用戶下怎么查看自己具有哪些特殊權(quán)限呢?

sudo  -l

最后:sudo不是任何Linux分支都有的命令,常見centos與ubuntu都存在sudo命令。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容