Linux--權限

Linux系統的權限管理是保障系統安全的重要機制,以下詳細講解權限相關概念及操作指令:


一、基礎權限機制

1. 權限的三元組,讀(r)、寫(w)、執行(x)

每個文件或目錄有三組權限,分別對應三類用戶:

  • 所有者(User):文件/目錄的創建者或當前所有者。
  • 所屬組(Group):文件/目錄所屬的用戶組。
  • 其他用戶(Others):非所有者且不屬于所屬組的用戶。

每組權限由三個字符組成:r(讀)、w(寫)、x(執行)。

權限的作用
權限對文件的作用對目錄的作用
r允許讀取文件內容允許列出目錄中的文件名(如 ls
w允許修改文件內容允許在目錄中創建、刪除、重命名文件
x允許執行文件(如腳本或程序)允許進入目錄并訪問子文件(如 cd

示例1drwxr-xr--

  • d:目錄類型。
  • rwx:所有者擁有讀、寫、執行權限。
  • r-x:組用戶有讀和執行權限。
  • r--:其他用戶僅有讀權限。

示例2

-rwxr-xr-- 1 root dev 1024 Jan 1 10:00 script.sh
  • 所有者(root):擁有 rwx(讀、寫、執行)。
  • 所屬組(dev):擁有 r-x(讀和執行,不可寫)。
  • 其他用戶:僅有 r--(僅讀)。

二、權限設置指令

1. chmod:修改文件/目錄權限
  • 符號模式(操作對象 + 權限):

    chmod [用戶類別][操作符][權限] 文件
    
    • 用戶類別u(所有者)、g(組)、o(其他)、a(所有)。
    • 操作符+(添加)、-(移除)、=(覆蓋)。
    • 示例
      chmod u+x file       # 給所有者添加執行權限
      chmod g-w,o=rx dir   # 移除組的寫權限,設置其他用戶為rx
      chmod a+r file       # 所有人添加讀權限
      
  • 數字模式(三位八進制數):

    chmod 755 file  # 所有者rwx(7),組和其他rx(5)
    
    • 計算方式:r=4,w=2,x=1,相加得權限值(如 rwx=4+2+1=7)。

2. chown:修改所有者和所屬組
chown 用戶:組 文件    # 同時修改所有者和組
chown 用戶 文件       # 僅修改所有者
chown :組 文件        # 僅修改所屬組
  • 示例
    chown root:admin /data  # 設置所有者為root,組為admin
    chown alice file.txt    # 設置所有者為alice
    
  • 遞歸修改(目錄及其子項):
    chown -R user:group dir/
    

3. chgrp:修改所屬組
chgrp 組名 文件
  • 等效于 chown :組名 文件,逐漸被 chown 替代。

三、特殊權限

1. SUID(Set User ID)
  • 作用:執行文件時,以所有者身份運行。
  • 設置
    chmod u+s file    # 符號模式
    chmod 4755 file   # 數字模式(4表示SUID)
    
  • 示例/usr/bin/passwd 允許普通用戶修改密碼(臨時獲得root權限)。

2. SGID(Set Group ID)
  • 作用
    • 對文件:執行時以所屬組身份運行。
    • 對目錄:新建文件繼承目錄的所屬組。
  • 設置
    chmod g+s dir     # 符號模式
    chmod 2770 dir    # 數字模式(2表示SGID)
    

3. 粘滯位(Sticky Bit)
  • 作用:目錄中文件僅所有者可刪除(如 /tmp)。
  • 設置
    chmod +t dir      # 符號模式
    chmod 1777 dir    # 數字模式(1表示粘滯位)
    

四、默認權限與umask

  • umask:決定新建文件/目錄的默認權限。
    umask 022        # 默認設置(目錄權限755,文件644)
    umask -S         # 查看當前符號格式的umask
    
    • 計算默認權限 = 最大權限 - umask
      • 目錄最大權限為 777,文件為 666(無默認執行權限)。

五、ACL(訪問控制列表)

提供更細粒度的權限控制(需文件系統支持):

  • setfacl:設置ACL規則。
    setfacl -m u:alice:rwx file  # 授予alice對文件的rwx權限
    setfacl -m g:dev:rx dir      # 授予dev組對目錄的rx權限
    
  • getfacl:查看ACL規則。
    getfacl file
    

六、注意事項

  1. 目錄的執行權限:無x權限則無法進入目錄或訪問子項。
  2. 遞歸修改權限:使用 -R 時謹慎操作,避免開放敏感目錄。
  3. 特殊權限風險:不當的SUID/SGID可能導致提權漏洞。
  4. root用戶:不受普通權限限制,可訪問所有文件。

七、示例匯總

  • 設置SUID并查看
    chmod u+s /usr/bin/script
    ls -l /usr/bin/script  # 顯示 -rwsr-xr-x
    
  • 設置目錄SGID
    chmod g+s /shared_dir
    ls -ld /shared_dir     # 顯示 drwxr-sr-x
    

通過掌握這些權限機制和指令,可以有效管理Linux系統的文件安全與共享需求。

好的!Linux 的權限機制是系統安全的核心組成部分,其設計目的是控制用戶和進程對文件及目錄的訪問。以下是 權限的機制和作用 的詳細解析:


二、特殊權限機制

除了基礎權限,Linux 還支持三種特殊權限,用于更復雜的場景。

1. SUID(Set User ID)

  • 機制:當用戶執行一個設置了 SUID 的文件時,程序會以文件所有者的身份運行。
  • 作用:允許普通用戶臨時獲得文件所有者的權限(常用于需要特權操作的工具)。
  • 示例/usr/bin/passwd(修改密碼需要修改 /etc/shadow,普通用戶無權限,但 passwd 設置了 SUID 并屬于 root)。
  • 設置方式
    chmod u+s file    # 符號模式
    chmod 4755 file   # 數字模式(4 表示 SUID)
    
  • 顯示:權限中的 x 變為 s(如 -rwsr-xr-x)。

2. SGID(Set Group ID)

  • 機制
    • 對文件:執行時以文件所屬組的身份運行。
    • 對目錄:在目錄中新建的文件會繼承目錄的所屬組(而非用戶默認的組)。
  • 作用
    • 文件:共享工具以組權限運行(類似 SUID)。
    • 目錄:便于團隊協作(確保新建文件屬于同一組)。
  • 設置方式
    chmod g+s dir     # 符號模式
    chmod 2770 dir    # 數字模式(2 表示 SGID)
    
  • 顯示:組權限的 x 變為 s(如 drwxr-sr-x)。

3. 粘滯位(Sticky Bit)

  • 機制:設置后,目錄中的文件僅允許文件所有者root 刪除。
  • 作用:防止用戶誤刪他人文件(常見于共享目錄如 /tmp)。
  • 設置方式
    chmod +t dir      # 符號模式
    chmod 1777 dir    # 數字模式(1 表示粘滯位)
    
  • 顯示:其他用戶的 x 變為 t(如 drwxrwxrwt)。

三、默認權限與 umask

1. 默認權限規則

  • 目錄:默認最大權限為 777(rwxrwxrwx)。
  • 文件:默認最大權限為 666(rw-rw-rw-),且默認不賦予執行權限(需手動設置)。

2. umask 的作用

  • 機制umask 是一個掩碼值,用于從最大權限中“扣除”權限,得到文件/目錄的實際默認權限。
  • 計算方式
    實際權限 = 最大權限 - umask
    
  • 示例
    • umask 022
      • 目錄默認權限:777 - 022 = 755(rwxr-xr-x)。
      • 文件默認權限:666 - 022 = 644(rw-r–r–)。
  • 查看與設置
    umask          # 顯示當前值(如 0022)
    umask -S       # 顯示符號格式(如 u=rwx,g=rx,o=rx)
    umask 027      # 設置新的 umask 值
    

四、ACL(訪問控制列表)

1. 作用

  • 提供更細粒度的權限控制,允許為特定用戶/組單獨設置權限,突破三元組的限制。
  • 典型場景:允許用戶A讀寫文件,同時禁止用戶B訪問,而無需修改文件所屬組。

2. 設置與查看

  • 設置 ACL
    setfacl -m u:alice:rwx file   # 授予用戶 alice 對文件的 rwx 權限
    setfacl -m g:dev:r-- dir      # 授予組 dev 對目錄的讀權限
    
  • 查看 ACL
    getfacl file
    # 輸出示例:
    # user::rw-
    # user:alice:rwx
    # group::r--
    # mask::rwx
    # other::r--
    

五、權限機制的核心原則

  1. 最小權限原則:用戶僅獲得完成任務所需的最小權限。
  2. 繼承規則
    • 新建文件繼承目錄的所屬組(若目錄設置 SGID)。
    • 權限受 umask 影響。
  3. 優先級順序
    • 用戶身份匹配順序:所有者 > 所屬組 > 其他用戶
  4. root 的超級權限:root 用戶可無視權限限制,直接訪問或修改任何文件。

六、典型應用場景

1. 共享目錄協作

  • 目標:團隊(組 dev)共享目錄 /project
  • 設置
    chmod 2770 /project     # SGID 確保新建文件繼承組 dev
    chown root:dev /project # 所有者 root,組 dev
    
  • 效果:所有組成員可在目錄中創建文件,且文件自動屬于組 dev

2. 防止誤刪文件

  • 目標:共享目錄 /shared 允許用戶創建文件,但僅允許所有者刪除。
  • 設置
    chmod 1777 /shared      # 粘滯位生效
    

3. 特權工具

  • 目標:允許普通用戶執行需 root 權限的命令(如 ping)。
  • 設置
    chmod u+s /bin/ping     # SUID 使 ping 以 root 身份運行
    

七、注意事項

  1. SUID/SGID 風險:若程序存在漏洞,攻擊者可能利用 SUID/SGID 提權。
  2. 目錄的執行權限:無 x 權限的目錄無法被訪問(即使有 r)。
  3. 遞歸修改權限:使用 chmod -R 時需謹慎,避免過度開放敏感目錄。

補充

dialout用戶組

在 Linux 系統中,dialout 用戶組是一個與串行端口(Serial Port)訪問權限相關的特殊用戶組。它的存在主要是為了管理用戶對串口設備(如 /dev/ttyS0/dev/ttyUSB0 等)的訪問權限。

1. 作用與背景

  • 歷史背景:名稱 “dialout” 源于早期通過調制解調器(Modem)“撥號”(dial-out)上網的時代。該用戶組允許普通用戶直接操作調制解調器等串口設備。
  • 現代用途:如今,dialout 組主要用于控制對串行端口設備的訪問權限,例如:
    • 物理串口(如 /dev/ttyS0)。
    • USB 轉串口設備(如 /dev/ttyUSB0)。
    • 嵌入式開發板(如 Arduino、樹莓派)的通信接口。

2. 權限管理

  • 設備文件權限:串口設備的默認權限通常為 crw-rw----,所有者是 root,所屬組是 dialout
    $ ls -l /dev/ttyUSB0
    crw-rw---- 1 root dialout 188, 0 Jun 10 15:30 /dev/ttyUSB0
    
    • 只有 root 用戶和 dialout 組成員有讀寫權限。
  • 為何需要加入該組:普通用戶若未加入 dialout 組,訪問串口時會報錯 Permission denied

crw-rw----解釋
  • c:表示這是一個 字符設備文件(Character Device)。

    • 字符設備以流式數據傳輸為特征(如鍵盤、串口、終端),與塊設備(如硬盤,標識為 b)不同。

    • 例如:/dev/ttyS0(串口)、/dev/ttyUSB0(USB轉串口)等。

c rw- rw- ---
│  │   │   │
│  │   │   └─ 其他人(others)的權限:無權限(`---`)
│  │   └─ 所屬組(group)的權限:讀 + 寫(`rw-`)
│  └─ 所有者(owner)的權限:讀 + 寫(`rw-`)
└─ 文件類型標識符:字符設備文件(`c`

3. 將用戶添加到 dialout 組

  • 命令
    sudo usermod -aG dialout 你的用戶名
    
    sudo gpasswd -a 你的用戶名 dialout
    
  • 生效方式:注銷后重新登錄,或重啟系統。

4. 安全注意事項

  • 最小權限原則:僅將需要訪問串口的用戶加入該組,避免不必要的權限分配。
  • 潛在風險:串口設備可能連接敏感硬件(如工業控制器),不當操作可能導致系統不穩定或數據泄露。

5. 替代方案

  • 臨時權限:使用 sudo 臨時獲取 root 權限訪問設備(不推薦長期使用):
    sudo minicom -D /dev/ttyUSB0
    
  • udev 規則:通過自定義 udev 規則永久修改設備權限(更安全且靈活):
    1. 創建規則文件 /etc/udev/rules.d/99-serial.rules
      SUBSYSTEM=="tty", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", GROUP="users", MODE="0666"
      
    2. 重新加載 udev 規則:
      sudo udevadm control --reload-rules
      

6. 不同發行版的差異

  • Ubuntu/Debian:默認使用 dialout 組管理串口。
  • Arch Linux:可能使用 uucplock 組。
  • 檢查當前系統:查看設備文件的所屬組:
    ls -l /dev/ttyUSB0
    

7. 常見使用場景

  • 嵌入式開發:通過串口與開發板通信(如 Arduino 上傳程序)。
  • 工業設備調試:連接 PLC、傳感器等設備的串口。
  • 網絡設備配置:通過 Console 線管理路由器、交換機。

總結

dialout 用戶組是 Linux 中管理串口設備訪問權限的關鍵組。通過合理分配組成員或使用 udev 規則,可以在便利性和安全性之間找到平衡。處理硬件設備時,請始終遵循最小權限原則。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67099.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67099.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67099.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iic、spi以及uart

何為總線? 連接多個部件的信息傳輸線,是部件共享的傳輸介質 總線的作用? 實現數據傳輸,即模塊之間的通信 總線如何分類? 根據總線連接的外設屬于內部外設還是外部外設將總線可以分為片內總線和片外總線 可分為數…

“破冰”探索兩周年,AI和媒體碰撞出了什么火花?

2022年末,大模型浪潮席卷而來。在“所有行業都值得用AI重塑”的氛圍下,各個行業都受到了影響和沖擊。 其中新聞媒體可以說是受影響最為劇烈的行業。 因為內容的生產方式被重新定義,媒體從業者普遍存在焦慮情緒:擔心錯過新一輪的…

DeepSeek明確學術研究方向效果如何?

明確學術研究方向 在學術寫作中,選擇一個出色的研究主題至關重要,因為它直接關系到論文是否能登上高級別的學術期刊。不少學者在這個過程中走入了誤區,他們往往將大把的時間花在寫作本身,而忽略了對選題的深入思考,這…

WPF實戰案例 | C# WPF實現大學選課系統

WPF實戰案例 | C# WPF實現大學選課系統 一、設計來源1.1 主界面1.2 登錄界面1.3 新增課程界面1.4 修改密碼界面 二、效果和源碼2.1 界面設計(XAML)2.2 代碼邏輯(C#) 源碼下載更多優質源碼分享 作者:xcLeigh 文章地址&a…

《 C++ 點滴漫談: 二十四 》深入 C++ 變量與類型的世界:高性能編程的根基

摘要 本文深入探討了 C 中變量與類型的方方面面,包括變量的基本概念、基本與復合數據類型、動態類型與內存管理、類型推導與模板支持,以及類型系統的高級特性。通過全面的理論講解與實際案例分析,展示了 C 類型系統的強大靈活性與實踐價值。…

STM32 GPIO配置 點亮LED燈

本次是基于STM32F407ZET6做一個GPIO配置,實現點燈實驗。 新建文件 LED.c、LED.h文件,將其封裝到Driver文件中。 雙擊Driver文件將LED.c添加進來 編寫頭文件,這里注意需要將Driver頭文件聲明一下。 在LED.c、main.c里面引入頭文件LED.h LED初…

window保存好看的桌面壁紙

1、按下【WINR】快捷鍵調出“運行”窗口,輸入以下命令后回車。 %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 2、依次點擊【查看】【顯示】,勾選【隱藏的項目】,然后按【CtrlA】全部…

TCP 三次握手四次揮手

目錄 TCP 三次握手 1. SYN (Synchronize:同步) 2. SYN-ACK (Synchronize Acknowledge:同步確認) 3. ACK (Acknowledge:確認) 為什么是三次而不是兩次或四次? 三次握手的作用 TCP 四次揮手 第一次揮手:客戶端發送 FIN …

C語言初階牛客網刷題—— HJ34 圖片整理【難度:中等】

1. 題目描述 牛客網在線OJ鏈接 Lily上課時使用字母數字圖片教小朋友們學習英語單詞,每次都需要把這些圖片按照大小(ASCII碼值從小到大)排列收好。請大家給Lily幫忙,通過C語言解決。 輸入描述:Lily使用的圖片包括 “A…

MVCC底層原理實現

MVCC的實現原理 了解實現原理之前,先理解下面幾個組件的內容 1、 當前讀和快照讀 先普及一下什么是當前讀和快照讀。 當前讀:讀取數據的最新版本,并對數據進行加鎖。 例如:insert、update、delete、select for update、 sele…

python實現http文件服務器訪問下載

//1.py import http.server import socketserver import os import threading import sys# 獲取當前腳本所在的目錄 DIRECTORY os.path.dirname(os.path.abspath(__file__))# 設置服務器的端口 PORT 8000# 自定義Handler,將根目錄設置為腳本所在目錄 class MyHTT…

Cpp::靜態 動態的類型轉換全解析(36)

文章目錄 前言一、C語言中的類型轉換二、為什么C會有四種類型轉換?內置類型 -> 自定義類型自定義類型 -> 內置類型自定義類型 -> 自定義類型隱式類型轉換的坑 三、C強制類型轉換static_castreinterpret_castconst_castdynamic_cast 四、RTTI總結 前言 Hell…

2024年終總結:技術成長與突破之路

文章目錄 前言一、技術成長:菜鳥成長之路1. 學習與實踐的結合2. 技術分享與社區交流 二、生活與事業的平衡:技術之外的思考1. 時間管理與效率提升2. 技術對生活的積極影響 三、突破與展望:未來之路1. 技術領域的突破2. 未來規劃與目標 四、結…

ComfyUI實現老照片修復——AI修復老照片(ComfyUI-ReActor / ReSwapper)解決天坑問題及加速pip下載

AI修復老照片,試試吧,不一定好~~哈哈 2023年4月曾用過ComfyUI,當時就感慨這個工具和虛幻的藍圖很像,以后肯定是專業人玩的。 2024年我寫代碼去了,AI做圖沒太關注,沒想到,現在ComfyUI真的變成了工…

思科交換機telnet配置案例

目錄 1.telnet簡述2.網絡拓撲3.設備說明4.網絡配置4.1 電腦PC ip設置4.2 網絡交換機telnet配置 5.小結 1.telnet簡述 Telnet是遠程登錄服務的一個協議,該協議定義了遠程登錄用戶與服務器交互的方式。它允許用戶在一臺聯網的計算機上登錄到一個遠程分時系統中&#…

WPS數據分析000006

一、排序 開始→ 排序 同文件→選項→自定義序列→輸入序列 二、篩選 高級篩選 條件區域要與列表區域一樣。 三、條件格式

vofa++使用方法

控件區可以添加控件用來啊多樣顯示 點擊一個控件然后右鍵可以選擇要添加顯示的數據,點all表全部顯示, 點auto可以自動布局 要用控件需要選擇協議,不知道協議具體格式可以點擊問號看看,并且最好用printf重定義來實現 比如我要實現F…

達夢拷貝DM_HOME的復制安裝

近期一個項目需求,需要在沒有安裝包的情況下,將達夢數據庫安裝到虛機上(生產機上安裝了達夢),故采用直接打包生產機DM_HOME的方式拷貝至虛機,再依次執行達夢的部分指令完成安裝。以下為驗證的步驟&#xff…

tomcat的accept-count、max-connections、max-threads三個參數的含義

tomcat的accept-count、max-connections、max-threads三個參數的含義 tomcat的accept-count、max-connections、max-threads三個參數的含義 max-connections:最大連接數 最大連接數是指,同一時刻,能夠連接的最大請求數 需要注意的是&#x…

ui文件轉py程序的工具

源博客連接: PyCharm中利用外部工具uic轉成的py文件,里面全是C代碼,并非python類型的代碼,導致大量報錯。。。_pyside6-uic為什么把ui轉為了c-CSDN博客 如果想把ui文件轉為py文件,首先設置pycharm的外部工具&#xf…