Linux的許可權管理操作-Linux從入門到精通第七天

来源:https://www.cnblogs.com/WUXIAOCHANG/archive/2019/05/21/10898893.html
-Advertisement-
Play Games

文章大綱 一、許可權概述二、許可權設置三、屬主與屬組設置四、擴展五、學習資料下載六、參考文章 一、許可權概述 總述:Linux系統一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等許可權。 1. 許可權介紹 什麼是許可權?在多用戶 ...


文章大綱

一、許可權概述
二、許可權設置
三、屬主與屬組設置
四、擴展
五、學習資料下載
六、參考文章

一、許可權概述

總述:Linux系統一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等許可權。

1. 許可權介紹

什麼是許可權?
在多用戶(可以不同時)電腦系統的管理中,許可權是指某個特定的用戶具有特定的系統資源使用權力,像是文件夾、特定系統指令的使用或存儲量的限制。

在Linux中分別有讀、寫、執行許可權:
讀許可權:
對於文件夾來說,讀許可權影響用戶是否能夠列出目錄結構
對於文件來說,讀許可權影響用戶是否可以查看文件內容

寫許可權:
對文件夾來說,寫許可權影響用戶是否可以在文件夾下“創建/刪除/複製到/移動到”文檔
對於文件來說,寫許可權影響用戶是否可以編輯文件內容

執行許可權:
一般都是對於文件來說,特彆腳本文件。

2. 身份介紹

2.1 Owner身份(文件所有者,預設為文檔的創建者)
  由於Linux是多用戶、多任務的操作系統,因此可能常常有多人同時在某台主機上工作,但每個人均可在主機上設置文件的許可權,讓其成為個人的“私密文件”,即個人所有者。因為設置了適當的文件許可權,除本人(文件所有者)之外的用戶無法查看文件內容。
  例如某個MM給你發了一封Email情書,你將情書轉為文件之後存檔在自己的主文件夾中。為了不讓別人看到情書的內容,你就能利用所有者的身份去設置文件的適當許可權,這樣,即使你的情敵想偷看你的情書內容也是做不到的。

2.2 Group身份(與文件所有者同組的用戶)
  與文件所有者同組最有用的功能就體現在多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。由於設置了適當的許可權,A、B團體中的成員都能互相修改對方的數據,但是團體C的成員則不能修改F的內容,甚至連查看的許可權都沒有。同時,團體的成員也能設置自己的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每個賬戶支持多個用戶組。如用戶a1、b1即可屬於A用戶組,也能屬於B用戶組【主組和附加組】。

2.3 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:遞歸設置許可權 (當文檔類型為文件夾的時候)
許可權模式:就是該文檔需要設置的許可權信息
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
註意點:如果想要給文檔設置許可權,操作者要麼是root用戶,要麼就是文檔的所有者。

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,並且包含其子目錄

 

四、擴展

  問題: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命令。

五、學習資料下載

鏈接:https://pan.baidu.com/s/1YDiFNFqjcCGEVG5-pGSXfg
提取碼:dhzx

六、參考文章

https://blog.csdn.net/w1416520110/article/details/79987578


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章大綱 一、編譯安裝與卸載Nginx二、關於LAMP三、LAMP環境部署四、學習資料下載五、參考文章 一、編譯安裝與卸載Nginx Nginx:是一款比較流行的web伺服器軟體,類似於Apache。 1. Ngnix基礎知識與Windows版本安裝 https://www.cnblogs.com/ ...
  • 配置MySQL的主從複製與讀寫分離。MySQL主庫負責數據寫入和數據修改的操作,MySQL從庫負責資料庫讀取任務的操作。在此基礎上通過配置mysql-proxy進行MySQL資料庫的讀寫分離,將讀資料庫請求轉發到從庫伺服器,將寫操作和修改操作轉發到主庫伺服器。 ...
  • 命令如下: ...
  • 文章大綱 一、關於資料庫二、MySQL的安裝與初始化三、MySQL的基本操作(難點)四、擴展五、學習資料下載六、參考文章 一、關於資料庫 mysql的基礎知識,可以參考文章:https://www.cnblogs.com/WUXIAOCHANG/p/10885361.html 二、MySQL的安裝與 ...
  • 任務 1 基本概念 從系統的角度看,任務是競爭系統資源的最小運行單元。任務可以使用或等待CPU、使用記憶體空間等系統資源,並獨立於其它任務運行。 Huawei LiteOS的任務模塊可以給用戶提供多個任務,實現了任務之間的切換和通信,幫助用戶管理業務程式流程。這樣用戶可以將更多的精力投入到業務功能的實 ...
  • 文章大綱 一、關於shell二、shell進階(重點)三、學習資料下載四、參考文章 一、關於shell 1. 什麼是shell 1.1 shell簡介 Shell(外殼) 是一個用 C 語言編寫的程式,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程式設計語言。 Shell ...
  • 一、yum更換國內源 運維開發技術交流群歡迎大家加入(QQ:722381733) 1、前往yum文件路徑地址 2、下載相應的原包地址 3、列出所有可安裝的包 4、如果一個163和base的源不夠用的情況下,可以安裝一個擴展源epel 二、yum下載rpm包 1、下載包不安裝 2、已經安裝的包要重新安 ...
  • 文章大綱 一、網路相關概述二、網路相關命令三、項目上線流程(必須掌握)四、學習資料下載五、參考文章 一、網路相關概述 1. 網路發展 1.1 信息傳遞遠古時期,人們就通過簡單的語言、壁畫等方式交換信息千百年來,人們一直在用語言、圖符、鐘鼓、煙火、竹簡、紙書等傳遞信息古代人的烽火狼煙、飛鴿傳信、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...