十二:群策群力但又各管東西,多用戶和權(quán)限

          電腦,通常只有本人一個用戶,就算是在多用戶的環(huán)境下,比如你的爸爸媽媽需要使用電腦,一般也是使用你的賬戶來使用,而且也是你來教他們使用(開玩笑:0)。個人電腦在多用戶的情景下使用,并不多見,Windows中的Guest賬戶到底有什么用處真的是個謎,但是Linux通常作為服務(wù)器的操作系統(tǒng),一般來說會有多個管理員合作管理,那么賬戶和賬戶關(guān)系,賬戶的權(quán)限就顯得非常的重要了。
          對于權(quán)限,在之前我們已經(jīng)有過接觸,查看目錄的時候,我們使用長格式查看目錄信息,會打印出文件的權(quán)限信息

          一個用戶可以擁有多個文件,一個用戶可以屬于多個用戶組,用戶和用戶組的信息可以分別查看/etc/passwd和/etc/group文件。/etc/shadow文件保存著用戶的密碼信息,當(dāng)然了,是加過密的。
          圖上的藍色框里代表的是文件模式,也就是權(quán)限信息,只有文件的所有者和超級用戶才能更改文件模式。

          chmod:更改文件模式
          chmod支持兩種修改文件模式的方式

          第一種:數(shù)字權(quán)限表示
          文件模式分成了三組,每組都有讀權(quán)限,寫權(quán)限,執(zhí)行權(quán)限,每一組的權(quán)限如果用二進制的數(shù)字表示,可以寫為111,1代表有該權(quán)限,0代表沒有,權(quán)限設(shè)置為111-110-110則意味著文件擁有者擁有讀,寫和執(zhí)行三個權(quán)限,而用戶組成員和其他人只擁有對文件讀和寫的權(quán)限。但是用二進制來設(shè)定很麻煩,所以,實際使用數(shù)字設(shè)置權(quán)限的時候,使用八進制,比如設(shè)置一個文件的權(quán)限為只有擁有者可以讀寫,那么二進制寫作110 000 000,在使用chmod命令的時候?qū)懽鱟hmod 600。
          示例,修改一個文件的權(quán)限

          *使用數(shù)字修改權(quán)限的時候注意不要缺少位數(shù),如果缺少,那么執(zhí)行“chmod 60 文件名”會發(fā)生什么?他會認(rèn)為文件擁有者對該文件沒有任何權(quán)限,所在用戶組有讀和寫的權(quán)限,其他人沒有權(quán)限,這太可笑了;要是執(zhí)行“chmod 6 文件名”會發(fā)生什么?他會認(rèn)為文件擁有者和所屬用戶組對該文件沒有任何權(quán)限,其他人反而有讀和寫的權(quán)限,笑哭…

          第二種:字符權(quán)限表示
          相比數(shù)字權(quán)限表示,字符權(quán)限表示更直觀一些,控制的更細(xì)膩一些。
          示例:
          chmod [u|g|o|a][+|-|=][r|w|x] 文件
          u:所有者
          g:所屬用戶組
          o:其他人
          a:以上全部
          +/-/=:代表添加,撤銷和重設(shè)
          r/w/x:分別代表讀權(quán)限,寫權(quán)限和執(zhí)行權(quán)限


          umask:默認(rèn)文件模式
          umask命令用來設(shè)置文件的掩碼,剛聽起來可能比較生澀,說白一點就是設(shè)置或者查看默認(rèn)的文件模式。

          顯示為0002,什么意思呢?好,我們先新建一個文件test

          我們看到,新建文件test的文件模式為rw- rw- r–

          我們修改一下umask的值,再新建一個文件試試

          umask顯示的值是文件模式的掩碼,是一個八進制的數(shù)字。先撇開掩碼的第一位,初始后三位是002,變成二進制數(shù)就是000 000 010,這個掩碼對應(yīng)的權(quán)限就是rw- rw- r–,之后我們修改掩碼,變?yōu)?00 000 000,這時候掩碼對應(yīng)的權(quán)限就是rw- rw- rw-,是不是已經(jīng)能看出倪端了?對,當(dāng)我們將二進制格式的掩碼某一位設(shè)置為0,實際上是打開了該位置的權(quán)限(但是執(zhí)行權(quán)限無法開啟,這也是處于安全考慮,新建的文件沒有執(zhí)行權(quán)限)

          那么第一個八進制的0是什么含義?
          除了常用的讀權(quán)限,寫權(quán)限和執(zhí)行權(quán)限,還有一些特別的權(quán)限。

          1:setuid位,他在掩碼的第一位,如果開啟,那么文件權(quán)限的掩碼應(yīng)該是4000。setuid有什么作用呢?如果某個文件開啟了setuid位,那么該文件執(zhí)行的時候,該文件具有文件所有者的權(quán)限,比如你是一個一般用戶,你執(zhí)行了一個root用戶的文件,并且該文件設(shè)置了setuid位,那么文件執(zhí)行的時候是擁有root權(quán)限的,所以對于setuid位的設(shè)置要慎重。
          如何開啟setuid位呢
          chmod u+s 文件,表示開啟setuid

          2:和setuid位類似,他在掩碼的第二位,開啟的話,掩碼的設(shè)置是2000。setgid表示操作一個文件的時候,操作文件的用戶組會由當(dāng)前組變?yōu)槲募诮M的權(quán)限。對于文件所屬組不是文件創(chuàng)造者所在組的情況,可能會帶來權(quán)限的變化。
          開啟setgid
          chmod g+s 文件,開啟setgid位

          3:sticky位,掩碼中的第三位,開啟時,掩碼設(shè)置是1000,這個權(quán)限位通常用來限制訪問,如果它開啟,那么它能阻止用戶刪除或重命名文件,除非用戶是這個文件所有者,或是超級用戶。
          開啟sticky位
          chmod +t 文件

          如何確定某個文件是否開啟了setuid位,segid位呢?當(dāng)某個文件開啟了某個特殊權(quán)限位,那么在對應(yīng)的權(quán)限分組中,該組的執(zhí)行權(quán)限會顯示s。
          比如某個文件開啟了setuid位,那么他的權(quán)限是rws r– r–;開啟了setgid位,則是rw- rws r–;sticky位則在其他人組中體現(xiàn),rw- rw- rwt

          su/sudo 身份的切換
          除非是root用戶,否則一般用戶在很多情況下都會有對系統(tǒng)進行操作的限制。如果一個一般用戶進行某個操作,比如執(zhí)行某個文件,但是他沒有這個文件的執(zhí)行權(quán)限,那么該怎么辦呢?最簡單粗暴的方式就是注銷,使用root用戶登錄進行操作。雖然可行,但是不可取,畢竟太不方便了。

          su:使用替代用戶執(zhí)行命令
          這個命令不太好記,全稱是run a command with substitute user and group ID,看起來是substitute user的縮寫。作用就是使用替代用戶來執(zhí)行操作。
          示例:切換一個用戶,如果不指定用戶,那么默認(rèn)切換到root
          su [用戶]

          直接使用su之后,系統(tǒng)提示我們輸入密碼,注意,這里輸入的是root用戶的密碼,而不是當(dāng)前用戶的密碼。之后,我們會發(fā)現(xiàn)shell提示符酉“$”變成了“#”

          有一個常用選項是”-l”(他有一個別名是“-”),添加“-l”會出現(xiàn)一個需要登錄的shell,加載替代用戶的shell環(huán)境。我們看到,添加“-l”之后登錄,初始目錄定位到了root用戶的家目錄

          其實有時候我們并不需要切換用戶,只是需要使用個別用戶的權(quán)限來做一些操作罷了,還有一個常用選項是“-c”,執(zhí)行一個命令。比如一個一般用戶希望查看一下root用戶的家目錄

          只執(zhí)行單個命令,而不是啟動一個新的可交互的 shell,使用“-c”選項,命令將傳遞到一個新的shell中執(zhí)行,所以命令參數(shù)需要單引號引起作為一個參數(shù)。

          sudo:使用替代用戶去執(zhí)行操作,但是提供靈活的配置
          sudo和su類似,都是以另一個身份去執(zhí)行某些操作,但是sudo允許管理員進行靈活的配置,比如某些操作只允許特定用戶來執(zhí)行,在經(jīng)過配置之后,特定用戶不需要管理員的密碼,只需要輸入自己的密碼就可以使用管理員權(quán)限來執(zhí)行特定操作。通常情況下,sudo并不會啟動一個新的shell,也不會加載其他用戶的shell環(huán)境。
          除了切換當(dāng)前的用戶,獲取root權(quán)限等,我們還需要更改文件的所有者,所屬組

          chown:更改文件的所有者和所屬組
          這個命令可以同時修改兩個所屬關(guān)系,也可以單獨修改。
          命令格式:chown [OPTION]… [OWNER][:[GROUP]] FILE…,這是文檔的原話,我們添點料
          最簡單的使用:chown alvindu327 a.txt,把a.txt文件的所有者從原所有者變?yōu)閍lvindu327


          然后,說一下比較全面的用法
          1,同時變更所屬用戶和所屬組。chown alvindu327: a.txt,剛才的命令我們可以看到,a.txt的所屬組依然屬于root,在所屬用戶之后添加“:”,意為著將文件原所屬組變更為新用戶登陸時的所屬組


          2,單獨變更所屬用戶和所屬組。
          chown alvindu327:demonuser a.txt,將a.txt的所屬用戶變?yōu)閍lvindu327,所屬組變更為demonuser

          3,只變更所屬組
          chown :onlygrp a.txt,將a.txt的所屬組變更為onlygrp,所屬者不變
          接下來還剩下不少命令需要了解,比如新建用戶,新建組,修改密碼等等,但是一一列舉出來沒什么意思,為什么不用apropos去模糊查詢一下呢,新建用戶,或許會是adduser吧,要不createuser?猜測和搜索也是很好的學(xué)習(xí)方式。

          喔,最后幾乎忘了一個重要的內(nèi)容,雖然常用權(quán)限有讀,寫,和執(zhí)行,看起來很簡單,但是你真正明白他們的含義嗎?

          對于文件而言
          • 讀權(quán)限:表示可以查看這個文件的內(nèi)容(可以使用cat,less,more等命令進行查看)
          • 寫權(quán)限:表示可以修改這個文件的內(nèi)容(可以使用編輯器修改這個文件)
          • 執(zhí)行權(quán)限:表示該文件(可能是命令,或者腳本)可以執(zhí)行
          對于目錄而言(雖然目錄也是文件,但是這里做一個區(qū)分)
          • 讀權(quán)限:表示可以列出目錄內(nèi)的內(nèi)容(使用ls可以查看文件的內(nèi)容)
          • 寫權(quán)限:表示可以在目錄中創(chuàng)建,刪除文件(touch文件,mkdir目錄,或者rm文件)
          • 執(zhí)行權(quán)限:表示可以進入到這個目錄中
          對于常用讀寫執(zhí)行權(quán)限,我本來也和很多人一樣,認(rèn)為很簡單,但是其中真的有幾個誤區(qū)需要掃盲:

          *我對一個文件有寫權(quán)限,我就可以刪除這個文件嗎?答案是否定的,寫權(quán)限僅僅是修改文件的內(nèi)容而已,如果你需要刪除這個文件,你需要擁有對這個文件所在目錄的寫權(quán)限才行。

          *我對一個目錄有讀權(quán)限,我就可以查看這個目錄的內(nèi)容嗎(雖然聽起來沒什么不對)?答案是否定的,對一個目錄有讀權(quán)限,僅僅是讓你能看到這個目錄的存在,而查看目錄的內(nèi)容,你需要目錄的執(zhí)行權(quán)限,所以,目錄的讀權(quán)限和執(zhí)行權(quán)限一般都是同時存在的,倘若一個目錄只有讀權(quán)限,那就是耍流氓,知道有,看不了;倘若只有執(zhí)行權(quán)限,那就是特供情報,雖然“沒有”,但是能查看…

          posted on 2015-07-12 10:49 都較瘦 閱讀(114) 評論(0)  編輯  收藏 所屬分類: Linux

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學(xué)習(xí)心得和隨手的練習(xí)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌鲁木齐市| 赣州市| 巫溪县| 富源县| 洛阳市| 沙河市| 宁南县| 探索| 明水县| 云梦县| 百色市| 措勤县| 遵义市| 雷波县| 宁明县| 无棣县| 玉环县| 兰考县| 新巴尔虎右旗| 定结县| 门头沟区| 克拉玛依市| 册亨县| 建宁县| 中超| 东阿县| 隆林| 临清市| 温泉县| 金门县| 喜德县| 安泽县| 阳朔县| 桃园市| 象山县| 梓潼县| 营山县| 哈密市| 英吉沙县| 浦东新区| 乐山市|