【Linux】權(quán)限管理-創(chuàng)新互聯(lián)

站在用戶的角度思考問題,與客戶深入溝通,找到潼關(guān)網(wǎng)站設(shè)計(jì)與潼關(guān)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋潼關(guān)地區(qū)。

👑作者主頁:@進(jìn)擊的安度因
🏠學(xué)習(xí)社區(qū):進(jìn)擊的安度因(個(gè)人社區(qū))
📖專欄鏈接:Linux

文章目錄
  • 一、shell 命令以及運(yùn)行原理
  • 二、Linux的用戶權(quán)限
    • 1、權(quán)限概念引入
    • 2、用戶分類
    • 3、用戶切換
    • 4、用戶提權(quán)
  • 三、Linux 權(quán)限管理
    • 1、文件訪問者的角色劃分
    • 2、文件類型和訪問權(quán)限
      • a、文件類型(后綴理解 + file 指令講解)
      • b、文件訪問權(quán)限
  • 四、文件訪問權(quán)限的更改
    • 1、chmod 指令(對(duì)擁有者、所屬組、other權(quán)限的更改)
    • 2、chown(修改文件的擁有者)
    • 3、 chgrp(修改文件的所屬組)
    • 4、有無權(quán)限的區(qū)別
  • 五、目錄的權(quán)限
  • 六、默認(rèn)權(quán)限
  • 七、粘滯位

今天我們開始權(quán)限的學(xué)習(xí)!

一、shell 命令以及運(yùn)行原理

Linux嚴(yán)格意義上說的是一個(gè)操作系統(tǒng),我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。

而是通過kernel的 外殼程序,也就是所謂的shell,來與kernel溝通。

shell 是什么?

shell 是包裹在操作系統(tǒng)外部的軟件層,所以形象的稱之為外殼程序。

而從技術(shù)角度,Shell的最簡(jiǎn)單定義是:命令行解釋器(command Interpreter)主要包含:

  • 將使用者的命令翻譯給核心(kernel)處理。
  • 同時(shí),將核心(kernel)的處理結(jié)果翻譯給使用者。

以上說明,我們可以用這幅圖來理解

image-20221129112318290

那么我們?nèi)绾卫斫?shell ?

我們理解shell分為兩個(gè)層面,理性理解感性理解。

理性理解

對(duì)比windows GUI,我們操作windows 不是直接操作windows內(nèi)核,而是通過圖形接口,點(diǎn)擊,從而完成我們的操作(比如進(jìn)入D盤的操作,我們通常是雙擊D盤盤符.或者運(yùn)行起來一個(gè)應(yīng)用程序)。

shell 對(duì)于Linux,有相同的作用,主要是對(duì)我們的指令進(jìn)行解析,解析指令給Linux內(nèi)核。反饋結(jié)果在通過內(nèi)核運(yùn)行出結(jié)果,通過shell解析給用戶。

如果shell 接受到非法指令,可能會(huì)直接攔截,不會(huì)讓操作系統(tǒng)執(zhí)行指令,從而達(dá)到保護(hù)操作系統(tǒng)的目的。

為了防止用戶的非法指令導(dǎo)致 shell 自身崩潰,shell 一般都不會(huì)去執(zhí)行對(duì)應(yīng)的指令,而是讓子進(jìn)程去執(zhí)行。

感性理解

可能,理性理解比較生澀,我們就用一個(gè)小故事來感性講解它們之間的關(guān)系:

人物簡(jiǎn)介:

  • 張三:地主家的傻兒子,情竇初開的羞澀碼農(nóng),年薪30萬+,有房有車有存款,不會(huì)和女生交流,從小暗戀如花。
  • 如花:張三的暗戀對(duì)象,心系李四,覺得張三是個(gè)二愣子,沒有一點(diǎn)好感。
  • 李四:如花的男朋友,兩人經(jīng)常一起看電視。
  • 王婆:張家村知名紅娘,說媒無一敗績(jī),人稱張家村小月老。
  • 村長(zhǎng):又名張老三,是張三和藹可親的村長(zhǎng)父親,全村首富,在張家村一手遮天。

image-20221129121333842

故事開始:

從前有個(gè)人叫張三,張三從小就沉迷于編程,在大學(xué)畢業(yè)后,他也拿到了一份不錯(cuò)的 offer 30w+。但是張三到現(xiàn)在還沒有談過戀愛,于是想起了在家鄉(xiāng)的如花,感覺自己十分想念家鄉(xiāng)。由于強(qiáng)烈的思鄉(xiāng)之情,張三回到了張家村。

張三的父親是全村首富,是村長(zhǎng),權(quán)勢(shì)很大。張三找了村東頭的王婆幫自己和如花說一下媒。張三告訴王婆自己的需求:讓如花接受自己,和如花談戀愛。王婆知道了張三的需求,跑去找如花。

王婆來到了如花的家,和如花說:“如花呀,我們那個(gè)村長(zhǎng)的兒子張三對(duì)你有些意思,人家年薪30w,有房有車有存款,你考慮考慮?”如花想起小時(shí)候有個(gè)暗戀他的二傻子張三,立馬起了雞皮疙瘩,和王婆說,我對(duì)張三沒感覺,我們不合適。

王婆接收到信息后,回去和張三說,如花呢覺得你挺好,但是你倆不合適,要不你換個(gè)。張三堅(jiān)持說我就要如花,王婆拗不過你,更拗不過你的村長(zhǎng)父親。于是,王婆就又去如花家門口,還沒到呢,就遠(yuǎn)遠(yuǎn)的看到李四和如花在看電視,李四和如花的家長(zhǎng)也在聊天,到了談婚論嫁的地步了。于是王婆就折返回張三家,直接和張三說,你和如花真的不適合,如花不可能和你有交際了,你還是打消這個(gè)念頭吧!

但是張三沒有放棄,王婆不想給他說媒,但是害怕張三的村長(zhǎng)父親。自己不想給張三說媒,但是沒辦法。我知道這個(gè)媒事說不成還要給他辦,一兩次失敗沒有影響,但是說媒次數(shù)多了就不好了。那王婆的月老會(huì)所就受到影響了。說不成媒,還會(huì)影響自己的口碑,劃不來。

王婆決定招聘實(shí)習(xí)生。有一天,村長(zhǎng)又叫王婆去給張三說媒,王婆沒去,她派了一個(gè)實(shí)習(xí)生A去。這時(shí)成功不成功已經(jīng)不重要了,反正王婆自己沒去。這樣的原因是因?yàn)檎f砸了不是王婆干的,自己不會(huì)收到影響,就算失敗了,王婆還可以換一個(gè)實(shí)習(xí)生B過去。這樣不會(huì)影響到自己,王婆在這樣的方法之下,以后別人都找王婆說媒的時(shí)候,都會(huì)排實(shí)習(xí)生過去做王婆做的工作。

聽完這個(gè)故事,我們也可以大致猜出它們扮演的角色:張三是 用戶,王婆是 shell,如花是 操作系統(tǒng)。

image-20221129184017458

案例重講解

  1. 張三(用戶)把自己的需求給王婆(shell),王婆(shell) 問如花(操作系統(tǒng)),考慮是否和張三談戀愛就是在 執(zhí)行用戶的指令。如花不考慮張三,就是類似于禁止訪問或程序運(yùn)行失敗,最后王婆將結(jié)果反饋給張三,就是把 shell 把結(jié)果返回給用戶 。

  2. 第二次,王婆看到如花心有所屬后沒有再去找如花,就是 shell指令為了保護(hù)操作系統(tǒng)而攔截了非法請(qǐng)求。

  3. 王婆聘請(qǐng)實(shí)習(xí)生,讓實(shí)習(xí)生去說媒,就是 shell在執(zhí)行命令的時(shí)候會(huì)創(chuàng)建子進(jìn)程來執(zhí)行。

通過兩種理解后,我們總結(jié)一下:shell 是外殼程序,包裹在操作系統(tǒng)外層的軟件層,為命令行解釋/操作解釋,將用戶的操作解釋交給操作系統(tǒng),讓操作系統(tǒng)執(zhí)行,執(zhí)行完畢,將結(jié)果經(jīng)過shell再傳遞給用戶。

補(bǔ)充:

如果我們?cè)诮K端輸入ls /usr/bin/bash -a

[lx@VM-4-3-centos ~]$ ls /usr/bin/bash -a
/usr/bin/bash

之前使用ls /usr/bin/bash -a是,顯示的并不是shell而是bash,bash也是一種外殼程序。對(duì)于它們兩個(gè)我們可以把它理解為bash是王婆,但是shell是媒婆。bash是centos上的外殼程序,而shell是 外殼程序 的統(tǒng)稱。

二、Linux的用戶權(quán)限 1、權(quán)限概念引入

生活中, 權(quán)限處處存在。比如愛奇藝,有些視頻是vip才能看的;打游戲的時(shí)候,有些皮膚是需要錢買的,這些都是對(duì)人的約束和限制。

有時(shí)訪問的對(duì)象天然可能沒有這種“屬性”。比如我想在看小說的時(shí)候,在番茄小說上和visual studio 2022上一樣寫代碼,這是不可能的。因?yàn)闆]有這種功能,應(yīng)用上沒有這一層屬性。

所以我們基本可以得出 權(quán)限 = 人 + 事物屬性,這一結(jié)論。

了解了基本概念,我們開始講解 Linux 上的權(quán)限。

2、用戶分類

Linux上,有兩種用戶:root(超級(jí)用戶) 和 普通用戶。

  • root(超級(jí)用戶):可以在linux下做任何事情,不受權(quán)限約束,且一臺(tái)機(jī)器上只有一個(gè)root用戶。
  • 普通用戶:在Linux下做有限的事情,可以有多個(gè)普通用戶。
  • 超級(jí)用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
3、用戶切換

命令:su 用戶名

功能:切換用戶

對(duì)于 root用戶來說,使用su 普通用戶可以直接切換到普通用戶:

image-20221129225248829

但是對(duì)于普通用戶來說,使用su指令時(shí),會(huì)要求輸入 root 用戶的密碼:

image-20221129225425631

而對(duì)于 普通用戶 切換到 超級(jí)用戶 還有兩種方式:

  1. su:從普通用戶切換到超級(jí)用戶,所處工作目錄不變化,只單純地進(jìn)行身份變化。
  2. su -:從普通用戶切換到超級(jí)用戶,會(huì)改變工作目錄

對(duì)于 su:

image-20221129231111348

對(duì)于 su -:

image-20221129230719415

注:如果切換用戶后想要退出,可以按ctrl + d退出,回到之前的用戶。

4、用戶提權(quán)

使用普通用戶時(shí),有時(shí)會(huì)因?yàn)闄?quán)限不夠,而導(dǎo)致某條指令無法執(zhí)行。

假如我用 lx 用戶創(chuàng)建一個(gè)文件,然后切換到 root 用戶后,寫入內(nèi)容并減權(quán),切回 lx 用戶發(fā)現(xiàn)無法查看文件:

image-20221129235558865

直接就出現(xiàn)了報(bào)錯(cuò):Permission denied,意思是權(quán)限被拒絕。

面對(duì)這種情況可以 單條指令進(jìn)行暫時(shí)提權(quán):

對(duì)于提權(quán)就要用到sudo指令,但是這個(gè)需要配置一下,不會(huì)配置的同學(xué)可以跳轉(zhuǎn)到這篇博客。

sudo指令是 讓普通用戶使用單條指令時(shí)暫時(shí)擁有 root 用戶的權(quán)限,使用 sudo 命令后需要輸入 當(dāng)前普通用戶的密碼:

image-20221129235804526

注:sudo 的存活期一般為五分鐘,五分鐘內(nèi)再次使用 sudo 指令無需輸入密碼。

埋下伏筆:sudo輸?shù)氖瞧胀ㄓ脩舻拿艽a,那么我想要加權(quán)只要輸自己的密碼就好了,那么root是不是形同虛設(shè)?這個(gè)問題在以后的文章中會(huì)提及,大家可以思考一下。

三、Linux 權(quán)限管理

對(duì)于 Linux 的權(quán)限管理,我們主要圍繞一張圖進(jìn)行講解:

image-20221130005735203

圖里部分的內(nèi)容會(huì)在下面詳細(xì)講解。

1、文件訪問者的角色劃分

對(duì)于 Linux 文件的訪問者可以分成三類:

  • 文件擁有者:文件和文件目錄的所有者,u —— user
  • 文件所屬組:文件和文件目錄的所有者所在組的用戶,g —— group
  • 文件的 other:其它用戶,除了擁有者和所屬組之外的用戶,o —— others

Linux 任何一個(gè)文件都一定有文件的 擁有者 和 other,擁有這個(gè)文件的就是擁有者,除了擁有者之外的其他用戶就是 other。

但是所屬組是什么?為什么要存在所屬組?

我們?cè)俅瓮ㄟ^故事理解!

image-20221130002243221

假如某公司只有一臺(tái)機(jī)器,公司允許不同的小組來完成一項(xiàng)工作,組間為競(jìng)爭(zhēng)關(guān)系。組A和組B,贏的小組的產(chǎn)品會(huì)被重金打造推出。

張三被分到了a組,李四被分到了b組。a組組長(zhǎng)叫做小a,b組小b。

他們用的是不同的目錄,公司的技術(shù)總監(jiān),創(chuàng)建了兩個(gè)目錄:A_code,b_code,存放他們的產(chǎn)品。a組代碼放A_code,b組代碼放b_code。

張三寫完了代碼,組長(zhǎng)小a要看,但是這里L(fēng)inux不考慮所屬組的概念,只有擁有者和other,張三是擁有者,那么小a屬于other。給小a開放權(quán)限也就是給other開權(quán)限,小a可以看了,但是李四也是other就也能看到了,這里也就涉及到了權(quán)限安全問題。

所以 Linux 引入了 所屬組 的概念,讓擁有者為組內(nèi)成員開放權(quán)限,給組里的人看,其他人還是other,其他人看不了。這樣子權(quán)限安全問題就減少了。

說到這里,我們?cè)偈崂硪幌?用戶 和 文件訪問者的關(guān)系:

用戶就是 root 和 普通用戶,是人。而 擁有者、所屬組、other 是角色。

人可以扮演不同的角色,但是角色可以一直變化。用戶可以是擁有者、所屬組、other 中的任意一個(gè),但是角色不可能稱為人。

2、文件類型和訪問權(quán)限

我們之前學(xué)習(xí)的第一個(gè)指令就是ls指令,ll可以列出文件詳細(xì)信息:

image-20221130010115889

那么先開始的一長(zhǎng)串10個(gè)字符是什么意思呢?就比如:-rw-rw-r--?

這10個(gè)字符可以分為兩組:第一個(gè)字符后九個(gè)字符。分別對(duì)應(yīng)著文件類型文件訪問權(quán)限

a、文件類型(后綴理解 + file 指令講解)

第一個(gè)字符為文件類型??赡艽蠹視?huì)有些疑惑,文件類型不是由文件后綴來區(qū)別的嗎?

我們通過樣例求證一下,Linux 中文件類型是否是由文件后綴來區(qū)別的:

首先,nano 一個(gè) test.c,向其中輸入代碼,編譯運(yùn)行:

image-20221130011209533

程序可以跑過,那么我修改一下a.out的文件后綴呢?

image-20221130011342453

程序依然可以跑過,這就證明Linux上文件類型和后綴無關(guān)。

但是再修改test.c的后綴呢,test.c還能編譯過嗎?

image-20221130011801133

這里卻報(bào)錯(cuò)了,是因?yàn)槲覀冏C明結(jié)果錯(cuò)誤嗎?其實(shí)并不是,這是因?yàn)樵贚inux下文件后綴不用來標(biāo)識(shí)文件類型,不代表gcc這個(gè)軟件不需要后綴。系統(tǒng)不管,但不代表操作文件的軟件不關(guān)心。

那么說到這,我們可以怎么理解Linux中的文件后綴呢?

  1. 文件后綴是給用戶看的,讓用戶確定文件是什么類型。
  2. 將后綴看做文件名的一部分。

講到這里,我們?cè)倩氐秸},繼續(xù)講解文件類型。

文件類型大約被分為如下幾類:

  • -:普通文件,文本,可執(zhí)行程序,歸檔文件(壓縮包)等平常帶后綴的文件,在Linux下統(tǒng)一被稱為普通文件
  • d:文件夾,目錄
  • l:軟鏈接(類似Windows的快捷方式)
  • b:塊設(shè)備文件(例如磁盤、光驅(qū)等)
  • p:管道文件
  • c:字符設(shè)備文件(例如鍵盤或顯示器)
  • s:網(wǎng)絡(luò)套接字socket文件

舉個(gè)樣例:

image-20221130012717584

file指令:

在 Linux 中,file指令能 辨識(shí)文件類型。

語法:file [選項(xiàng)] 文件或目錄…

常用選項(xiàng):

  • -c 詳細(xì)顯示指令執(zhí)行過程,便于排錯(cuò)或分析程序執(zhí)行的情形。
  • -z 嘗試去解讀壓縮文件的內(nèi)容。

演示:

可執(zhí)行程序:

image-20221130162053737

空文件:

image-20221130162121825

b、文件訪問權(quán)限

后9個(gè)字符為文件訪問權(quán)限。9個(gè)字符,每三個(gè)一組,分別代表著 擁有者、所屬組、other的權(quán)限。

  • r—— 讀:Read對(duì)文件而言,具有讀取文件內(nèi)容的權(quán)限;對(duì)目錄來說,具有瀏覽該目錄信息的權(quán)限,權(quán)值為4.
  • w—— 寫:Write對(duì)文件而言,具有修改文件內(nèi)容的權(quán)限;對(duì)目錄來說具有刪除移動(dòng)目錄內(nèi)文件的權(quán)限,權(quán)值為2.
  • x—— 可執(zhí)行:execute對(duì)文件而言,具有執(zhí)行文件的權(quán)限;對(duì)目錄來說,具有進(jìn)入目錄的權(quán)限,權(quán)值為1。
  • -:表示不具有該項(xiàng)權(quán)限

問題回顧:

-rw-rw-r--:后九個(gè)字符就代表著,擁有者具有讀、寫權(quán)限,不具有執(zhí)行權(quán)限;所屬組具有讀、寫權(quán)限,不具有執(zhí)行權(quán)限;other具有讀權(quán)限,不具有寫、執(zhí)行權(quán)限。

四、文件訪問權(quán)限的更改

文件訪問權(quán)限的修改主要分為對(duì)擁有者、所屬組、other權(quán)限的更改對(duì)文件擁有者的更改對(duì)文件所屬組的用戶的更改。

一般來說更改一個(gè)文件的權(quán)限,必須是文件的擁有者或者是 root 用戶。

1、chmod 指令(對(duì)擁有者、所屬組、other權(quán)限的更改)

功能:設(shè)置文件的訪問權(quán)限

格式:chmod [參數(shù)] 權(quán)限 文件名

常用選項(xiàng):

  • R ->遞歸修改目錄文件的權(quán)限

chmod 命令設(shè)置權(quán)限的格式

  1. chmod u/g/o/a ±= rwx filename
  • +:向權(quán)限范圍增加權(quán)限代號(hào)所表示的權(quán)限

  • -:向權(quán)限范圍取消權(quán)限代號(hào)所表示的權(quán)限

  • =:向權(quán)限范圍賦予權(quán)限代號(hào)所表示的權(quán)限

用戶符號(hào):

  • u:擁有者

  • g:所屬組

  • o:其它用戶

  • a:所有用戶

字符表示法表:

image-20221130014939053

演示:

對(duì)單個(gè)用戶的權(quán)限進(jìn)行更改:chmod 用戶 ±權(quán)限 文件名

image-20221130162835640

對(duì)多個(gè)用戶的權(quán)限進(jìn)行修改:chmod 用戶 ±權(quán)限,用戶 ±權(quán)限,…(上限三個(gè),擁有者、所屬組、other) 文件名

image-20221130163230644

對(duì)全部用戶進(jìn)行權(quán)限修改:chmod a ± 用戶權(quán)限 文件名

image-20221130164145787

對(duì)用戶進(jìn)行=方式權(quán)限修改:例如u = g,就是讓 擁有者獲得所屬組對(duì)等的權(quán)限

image-20221130164514144

  1. chmod 三位八進(jìn)制 filename

通常寫作 chmod 三位八進(jìn)制 用戶名的形式,每個(gè)八進(jìn)制按順序分別表示 擁有者、所屬組、other,三個(gè)八進(jìn)制組成的序列就可以表示各角色的權(quán)限。

r權(quán)限權(quán)值為4,w權(quán)值為2,x權(quán)值為1。

八進(jìn)制數(shù)值表示法表:

image-20221130015041526

舉個(gè)例子:614

擁有者:6 = 4 + 2 + 0,設(shè)置擁有者有讀權(quán)限,有寫權(quán)限,無執(zhí)行權(quán)限。

所屬組:1 = 0 + 0 + 1,設(shè)置所屬組無讀權(quán)限,無寫權(quán)限,有執(zhí)行權(quán)限。

other:4 = 0 + 4 + 0,設(shè)置other無讀權(quán)限,有寫權(quán)限,無執(zhí)行權(quán)限。

演示:

image-20221130170027141

2、chown(修改文件的擁有者)

功能:修改文件的擁有者

格式:chown [參數(shù)] 用戶名 文件名

演示:

當(dāng)前我的家目錄有如下用戶:

image-20221130170731839

lx 用戶當(dāng)前文件夾:

image-20221130170711403

如果我想要把 file.txt 的 擁有者 從lx改為Guldan,能否修改成功?

image-20221130171051770

表示權(quán)限不被允許,我lx即時(shí)擁有者又是所屬組,為什么不讓我更改呢?

舉個(gè)例子吧,如果有一天一個(gè)人和你不認(rèn)識(shí),就要送你一輛車,你要還是不要?萬一這是口黑鍋呢,讓你做背鍋俠。如果那個(gè)人告訴你這是你買彩票中的,你才有可能接受。

對(duì)于權(quán)限來說也是一樣的。但是在 Linux 上,總不可能在你給權(quán)限的時(shí)候給別人留個(gè)言,說我給你個(gè)權(quán)限吧,所以 普通用戶是無法直接修改文件擁有者的?。?!

但是我們可以用root強(qiáng)制把文件擁有者改掉,誰讓 root 是超級(jí)管理員呢,就比如我使用sudo提權(quán)一下,然后強(qiáng)制改掉:

image-20221130171706108

3、 chgrp(修改文件的所屬組)

功能:修改文件或目錄的所屬組

格式:chgrp [參數(shù)] 用戶組名 文件名

常用選項(xiàng):-R 遞歸修改文件或目錄的所屬組

演示:

同樣的,通過sudo提權(quán)修改:

image-20221130172050508

補(bǔ)充:chownchgrp可以同時(shí)使用,格式為:sudo chown 用戶名 : 用戶名 filename

比如將擁有者和所屬組都改回lx

image-20221130172408210

4、有無權(quán)限的區(qū)別

首先,我將file.txt的權(quán)限全部去掉:

image-20221130182301821

如果我現(xiàn)在讀 file.txt:

image-20221130182704205

被權(quán)限拒絕了,再也用echo "hello">file.txt寫入試試:

image-20221130182642133

我當(dāng)前是文件的擁有者lx,但是我在沒有權(quán)限的情況下依然不能訪問?。。?/p>

那么root呢?我們用 root 試試:

image-20221130182946919

我們發(fā)現(xiàn),權(quán)限并不能約束root!因?yàn)槲?code>root是超級(jí)管理員,權(quán)限是約束普通人的。

總結(jié)一下:Linux 上權(quán)限是約束普通用戶的,root不會(huì)被約束?。。?duì)于普通用戶,被權(quán)限約束了什么都干不了;對(duì)于root即使沒有權(quán)限還是能暢通無阻。

五、目錄的權(quán)限

目錄權(quán)限的功能:

  • 可執(zhí)行權(quán)限 -x: 如果目錄沒有可執(zhí)行權(quán)限, 則無法cd到目錄中.
  • 可讀權(quán)限 -r: 如果目錄沒有可讀權(quán)限, 則無法用ls等命令查看目錄中的文件內(nèi)容.
  • 可寫權(quán)限 -w: 如果目錄沒有可寫權(quán)限, 則無法在目錄中創(chuàng)建文件, 也無法在目錄中刪除文件.

演示:

如果進(jìn)入一個(gè)目錄,只需要一種權(quán)限,就是可執(zhí)行權(quán)限x

image-20221130184004531

如果進(jìn)入一個(gè)目錄,沒有w權(quán)限,則不能在目錄中創(chuàng)建文件:

image-20221130184304849

對(duì)于目錄來講,在沒有r權(quán)限的目錄下,無法查看當(dāng)前目錄下的文件名和文件屬性:

image-20221130184943438

六、默認(rèn)權(quán)限

權(quán)限起始分為三部分:

  • 默認(rèn)權(quán)限:也就是我們看到的文件和目錄一創(chuàng)建就有的權(quán)限。
  • 起始權(quán)限:系統(tǒng)設(shè)定的權(quán)限
  • 最終權(quán)限:系統(tǒng)為了更好的控制文件權(quán)限,系統(tǒng)會(huì)有默認(rèn)的 權(quán)限掩碼 的概念(umask),起始文件和權(quán)限掩碼進(jìn)行計(jì)算后得到最終權(quán)限。

補(bǔ)充說明:

  1. 普通文件起始權(quán)限:666開始,目錄文件的起始權(quán)限:777。它們默認(rèn)都是八進(jìn)制表示的。

  2. Linux 上權(quán)限掩碼可以用umask指令查看:

[lx@VM-4-3-centos mydir]$ umask
0002

我們看待權(quán)限掩碼0002時(shí),看后三位002,這三位是八進(jìn)制序列,一個(gè)八進(jìn)制位是3個(gè)二進(jìn)制位,翻譯成二進(jìn)制序列:000 000 010。第一位暫時(shí)不用管,咱們現(xiàn)在用不著。

  1. 權(quán)限掩碼特性:在起始權(quán)限中,去掉在權(quán)限掩碼 umask 中出現(xiàn)的權(quán)限,不能影響其他任何權(quán)限。意思就是說,只要在umask中出現(xiàn)的權(quán)限,在 最終權(quán)限 里就不能出現(xiàn)!

那么 最終權(quán)限 是怎么計(jì)算出來的呢?

其實(shí)這時(shí)有一個(gè)計(jì)算公式的:最終權(quán)限 = 起始權(quán)限 & (~umask)(起始權(quán)限的值,按位與 取反后的權(quán)限掩碼)

舉個(gè)例子,比如我新建一個(gè)文件:

image-20221130192955016

它的權(quán)限rw-rw-r--翻譯成八進(jìn)制就是664,而翻譯成二進(jìn)制序列就是110 110 100。

	  起始權(quán)限:110 110 110
			  權(quán)限掩碼:000 000 010
		   權(quán)限掩碼取反:111 111 101
起始權(quán)限 & 權(quán)限掩碼取反 = 110 110 110
					   111 111 101 &
					   -----------
					   110 110 100 = 創(chuàng)建文件的最終權(quán)限

拓展:

我們?cè)傩薷囊幌?code>umask的值:

[lx@VM-4-3-centos lesson5]$ umask 0007

這種情況下,我們創(chuàng)建的文件的最終權(quán)限是什么?(自己算算看,算出來再繼續(xù)看(**))

答案揭曉:image-20221130195156928

rw-rw-r--翻譯成八進(jìn)制是660,你算對(duì)了嗎?

七、粘滯位

粘滯位出現(xiàn)的背景:在使用 Linux 的時(shí)候,未來可能會(huì)有一些共享目錄,被所有的用戶共享,用來保存普通用戶產(chǎn)生的臨時(shí)數(shù)據(jù),使用戶之間的安全更有保障。

在一臺(tái)機(jī)器上,可能會(huì)有多個(gè)用戶:

image-20221130210717926

而在 Linux 下,作為一個(gè)普通用戶,它的家目錄是只對(duì)自己開放的,從lx用戶的權(quán)限只對(duì) 擁有者 有rwx權(quán)限就可以看出,且 所屬組 和 other 沒有任何權(quán)限。

而對(duì)于 共享目錄 ,一般是由root用戶創(chuàng)建,由root將權(quán)限放開后,供這臺(tái)機(jī)器上的用戶使用,從而滿足不同的用戶在公共的目錄下進(jìn)行文件的增刪查改。

我們這里直接 提權(quán) 創(chuàng)建一個(gè)public目錄,并開放權(quán)限chmod 777 public

image-20221130211937581

然后我們?cè)僮鲂?zhǔn)備工作,分別使用root,lx,Guldan在 public 下創(chuàng)建若干文件:

image-20221130212531285

假設(shè)本來 Guldan 和 lx 關(guān)系很好,之前總是一起互相看文件,這個(gè)行為由于在 共享目錄 的前提下也都可以進(jìn)行,但是他們有一天鬧了矛盾,Guldan 把原先對(duì) other 放開的r權(quán)限給全封掉了,導(dǎo)致 lx 無法查看了:

image-20221130213823499

這就導(dǎo)致 lx 看么看不了,想寫些東西聲討 Guldan 又寫不進(jìn)去,于是 lx 想著你不讓我看也不讓我寫,那么我就刪你的目錄!

image-20221130214106879

而我們就可以看出文件被所有人共享的時(shí)候,受權(quán)限約束,但是攔不住別人刪我的文件?。?!

為了讓大家共享文件,且不讓其他人隨便刪除別人的文件,于是就有了粘滯位。

所以 Guldan 找到了 root 告狀, root 就設(shè)置了粘滯位:

粘滯位只能給目錄添加,所以 root 就使用chmod +t publicpublic添加了粘滯位:

image-20221130214836668

(使用指令時(shí)為a+t,意思是給三個(gè)角色都 +t,但是只會(huì)把原先 other 的 x 的位置改為 t)

這就說明我們的粘滯位已經(jīng)添加成功。

我們?cè)僭囋嚹懿荒軇h除,假設(shè) lx 要?jiǎng)h Guldan 的 Guldan2 了:

image-20221130215155709

聽到這里,我們可能會(huì)有兩個(gè)疑惑:

  1. 其他用戶沒有權(quán)限為什么能刪我的文件?為什么攔不?。窟@是權(quán)限的bug嗎?
  2. 為什么粘滯位只能給目錄添加?

這兩個(gè)實(shí)際上是一個(gè)問題,能否在特定目錄下,創(chuàng)建或者刪除文件由該目錄的w權(quán)限決定。

那么既然這樣,還要什么粘滯位?我不是只要把w權(quán)限去掉 別人就不能刪我的文件了嗎?

請(qǐng)注意,這是共享目錄,是多人合用的,如果把w權(quán)限去掉了,這也就把普通用戶在該目錄下創(chuàng)建文件的權(quán)限也去掉了!只有加上w權(quán)限,才能讓其他用戶正常地使用。

而被刪的問題是由目錄導(dǎo)致的,所以只能給目錄添加粘滯位?。?!

那么談到這里,當(dāng)一個(gè)目錄被設(shè)置為"粘滯位"(用chmod +t),則該目錄下的文件能被誰刪除呢?

  1. 超級(jí)管理員刪除
  2. 該目錄的所有者刪除
  3. 該文件的所有者刪除

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:【Linux】權(quán)限管理-創(chuàng)新互聯(lián)
文章URL:http://bm7419.com/article20/gjoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、定制網(wǎng)站網(wǎng)站維護(hù)、ChatGPT、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)