深入理解 Linux 權限控制機制

引言

在 Linux 系統中,權限控制是保障系統安全的核心機制。通過限制用戶對文件和資源的訪問,它能有效防止未授權操作,保護數據不被篡改或泄露。合理設置權限不僅有助于實現用戶隔離最小權限原則,還能降低系統被濫用或攻擊的風險,是每位系統管理員必須掌握的基礎技能。
在 Web 服務管理中,權限控制尤為重要。多數情況下,即便攻擊者利用漏洞入侵,所獲得的權限也僅限于普通用戶級別。正是依靠 Linux 嚴格的權限機制,才能將 Web 漏洞的影響局限在最小范圍內,避免演變為更嚴重的系統級破壞。關于 Linux 系統中常見的權限提升手法,可以參考這個專欄:點擊查看。

用戶與用戶組在 Linux 中的記錄機制,可以參考這篇文章了解更多細節:Linux提權原理

ls -l 命令詳解

示例

-rwxr-xr-x   1 root root  25451544 Apr 19 15:22 d-eyes
字段示例值含義說明
文件類型+權限-rwxr-xr-x- 表示普通文件;rwx 為所有者權限,r-x 為組權限,r-x 為其他用戶權限
硬鏈接數1指向該文件的硬鏈接數量,普通文件通常為 1
所有者(用戶)root文件所有者
所屬組(用戶組)root文件所屬的用戶組
文件大小25451544文件大小(以字節為單位),約 24.3 MB
修改時間Apr 19 15:22文件最后修改時間
文件名d-eyes文件的名稱
Linux 權限基礎
用戶、用戶組與其他用戶的權限

在 Linux 中,每個文件或目錄都歸屬于一個特定的用戶(owner)和用戶組(group)。系統通過權限位將訪問控制劃分為三類主體:文件所有者(用戶)所屬用戶組成員以及其他用戶(others),每類主體都可以擁有各自的權限設置。

截屏2025-04-24 19.22.55

?? :除去最前面的文件類型符號,后面的每三個字符依次表示所有者用戶組其他用戶的權限。

這種三段式的權限模型,使得 Linux 能夠靈活地控制資源的訪問,既能保護敏感數據,也能根據需要開放部分資源,確保系統的安全與多用戶協作效率。

權限的類型

在 Linux 中,每個文件或目錄的權限由三種基本類型組成:

  • r(read)讀權限
    • 對文件:允許查看文件內容
    • 對目錄:允許列出目錄中的文件和子目錄
  • w(write)寫權限
    • 對文件:允許修改或覆蓋文件內容
    • 對目錄:允許在目錄中創建、刪除或重命名文件和子目錄
  • x(execute)執行權限
    • 對文件:允許將文件作為程序運行
    • 對目錄:允許使用 cd 命令進入該目錄
查看與修改文件權限
使用 ls -l 查看權限

在 Linux 中,可以使用 ls -l 命令查看文件或目錄的權限信息,輸出內容包括權限、所有者、用戶組、文件大小和修改時間等。若加上 -a 參數(即 ls -la),還能查看隱藏文件的權限情況。需要特別注意的是,權限字段的最左側字符表示文件類型:- 表示普通文件,d 表示目錄,l 表示符號鏈接等。

使用 chmod 修改權限
符號法(適合讀寫改)
chmod u+x script.sh     # 給所有者添加執行權限
chmod go-w file.txt     # 移除用戶組和其他用戶的寫權限
chmod a+r config.cfg    # 所有人添加讀權限
數字法(適合整體設置)

權限通過三位八進制數表示,每位分別對應所有者、用戶組和其他用戶。

  • 讀(r)= 4,寫(w)= 2,執行(x)= 1,疊加計算
chmod 755 run.sh        # 所有者 rwx,用戶組和其他用戶 rx
chmod 644 index.html    # 所有者 rw,用戶組和其他用戶 r

在實際使用中,我常通過 chmod +x examp 給可執行程序添加執行權限。需要注意的是,不建議直接使用 chmod 777 這樣的權限設置,因為它會賦予所有用戶讀、寫、執行權限,等于完全開放,可能導致系統權限控制形同虛設,帶來安全隱患。

文件所有者與用戶組管理

在 Linux 中,每個文件或目錄都有一個所有者(user)和一個所屬用戶組(group),它們決定了該文件的訪問權限歸屬。合理設置文件的所有權是權限控制的重要組成部分。

文件所有者

文件的所有者通常是創建該文件的用戶,擁有對文件最全面的控制權限。所有者可以使用 chmod 修改權限,也可以通過 chown 更改所有權。

在 Linux 中,文件所有者對文件具有最高的權限控制能力。除非主動賦權,其他用戶無法查看、修改或執行該文件。這種機制是 Linux 用于保護用戶數據安全和隱私的核心方式之一。

只有在所有者顯式開放權限后,其他用戶才能訪問該文件。但如果系統僅區分“文件所有者”和“其他用戶”,那么一旦授權,所有非所有者用戶都將獲得訪問權限,這在實際使用中往往過于寬泛。

查看所有者

ls -l filename

截屏2025-04-24 19.38.52

第一個root所在的位置為文件所有者。

修改文件所有者

sudo chown newuser filename

用戶組

用戶組是 Linux 中用于歸類管理用戶的機制。每個文件或目錄都歸屬于一個用戶組,組內用戶可以根據設定的權限訪問或修改資源。通過用戶組,文件所有者可以僅向特定用戶開放權限,而非對所有其他用戶一視同仁。當文件所有者與部分用戶屬于同一組時,只需為該組設置權限,這些用戶即可訪問文件,而其他用戶仍被限制。這種方式在團隊協作中尤為實用,能夠實現團隊成員間資源共享,同時對非成員保持私有。

查看用戶組
# 查看當前用戶所屬的所有組
groups
# 查看指定用戶的所屬組
groups 用戶名
# 查看系統中所有用戶組
cat /etc/group
# 優化輸出
cut -d: -f1 /etc/group
修改文件所屬用戶組
sudo chown 用戶名:用戶組 文件名
sudo chgrp newgroup 文件名
特殊權限

除了基本的 r(讀)、w(寫)、x(執行)權限外,Linux 還支持三種特殊權限,用于增強權限控制,常用于提升系統安全性或實現特定功能。下圖可以看到一些隱藏文件或系統文件設置了這些特殊權限,以確保它們在共享、執行或刪除時受到更嚴格的管理。

截屏2025-04-24 19.51.43

SUID(Set User ID)

SUID 設定后,用戶執行該文件時,將臨時以文件所有者的身份運行。常見于需要普通用戶執行部分系統操作的程序,如 passwd
chmod u+s 文件名
權限標識:所有者的執行位顯示為 s,如 -rwsr-xr-x

SGID(Set Group ID)

SGID 對文件作用類似于 SUID,而對目錄則更常見,表示新建的文件將繼承目錄的所屬組。常用于共享目錄。
設置命令:chmod g+s 目錄名
權限標識:組執行位顯示為 s,如 drwxr-sr-x

Sticky Bit

設置 Sticky Bit 后,目錄中的文件只能被其所有者或 root 刪除,即使其他用戶擁有寫權限。常用于 /tmp 目錄。
設置命令:chmod +t 目錄名
權限標識:其他用戶執行位顯示為 t,如 drwxrwxrwt

用戶身份管理
身份切換

在 Linux 系統中,出于安全考慮,日常使用一般不建議直接以 root 用戶登錄。但某些操作需要 root 權限,這時可以通過用戶身份切換命令完成。常用命令有兩種:susudo

su命令(Switch User)

su [options] [username]
用于切換到指定用戶身份,若不指定 username,則默認切換為 root 用戶。

常用參數說明:

  • --l:使用 login shell 的方式讀取目標用戶的環境變量(推薦使用)
  • -m:保留當前用戶的環境設置
  • -c "command":僅執行一次命令后返回當前身份

區別說明:

  • su:切換用戶但不加載目標用戶環境(non-login shell),如 PATH 變量等不會更新
  • su -:切換并加載目標用戶完整環境(login shell),推薦使用

注意事項: 使用 su 切換到 root 時需要輸入 root 用戶密碼。完成操作后可使用 exit 返回原用戶。

sudo 命令(Superuser Do)

sudo 允許普通用戶在不知曉 root 密碼的情況下,臨時以 root 權限執行命令。前提是該用戶已被授權使用 sudo,授權信息存儲在 /etc/sudoers 文件中。

執行流程:

  1. 系統檢查當前用戶是否在 sudo 白名單中(通過 /etc/sudoers
  2. 若有權限,用戶輸入自己的密碼(root 用戶免密)
  3. 驗證通過后執行命令
sudoers文件配置

sudoers 文件用于配置哪些用戶或用戶組可以使用 sudo 以及他們能以何種身份執行哪些命令。

截屏2025-04-25 10.59.07

格式說明:

用戶名 主機名=(可切換身份:目標組) 可執行命令

示例:

testuser    ALL=(ALL:ALL)              ALL        # 可切換為任意用戶身份,執行任意命令
testuser    ALL=(root:root)            ALL        # 僅能以 root 身份執行任意命令
testuser    ALL=(root:root)    /usr/bin/passwd    # 僅能以 root 身份執行 passwd 命令

這種權限分配機制保證了在保障系統安全的同時,也賦予用戶必要的操作能力。如果你有團隊管理需求,還可以通過用戶組與 sudoers 配合實現更細粒度的權限控制。

查詢用戶信息

Linux 提供了多種命令,用于查詢當前或指定用戶的相關信息,常見命令如下:

命令功能說明
id <user>顯示指定用戶的 UID、GID、所屬用戶組等信息(默認顯示當前用戶)
who am i / who -m顯示當前登錄會話用戶的信息(來源于登錄終端)
whoami顯示當前有效用戶的用戶名(可能與登錄用戶不同)
w顯示當前系統所有登錄用戶的信息及其活動狀態
who顯示當前系統所有登錄用戶的信息
last <user>顯示指定用戶的歷史登錄記錄(默認顯示當前用戶)
lastlog -u <user>顯示指定用戶最近一次登錄信息(默認顯示所有用戶)

注:此處不再展示各命令的執行效果,建議讀者自行實驗。

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

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

相關文章

Oracle版本、補丁及升級(12)——版本體系

12.1. 版本體系 Oracle作為最流行的一款關系數據庫軟件產品,其擁有自己一套成熟的版本管理體系。具體版本體系以12c為分界線,前后版本體系分別不同。 ???????12.1.1. 12c之前版本 12c之前的Oracle,版本共有5位阿拉伯數字組成,其中的每位數字,都有各自的含義,具…

Maven 中的 pom.xml 文件

目錄標題 1、根標簽 <project> 的直接子標簽順序?2、常見子標簽內部順序?2.1、<build> 標簽內部順序2.2、<dependencies> 標簽內部順序 3、modelVersion 為什么是 4.0.0 &#xff1f;4、<parent> 標簽&#xff1f;??4.1、為什么需要 <parent>…

方案精讀:華為與中軟-智慧園區解決方案技術主打膠片【附全文閱讀】

該文檔是華為與中軟國際的智慧園區輕量化解決方案推介&#xff0c;主要面向園區管理者、運營者及相關企業決策人。其核心圍繞園區痛點&#xff0c;闡述智慧園區的發展趨勢。 方案涵蓋綜合安防、便捷通行、設備管理等多領域應用場景&#xff0c;通過智能視頻監控、人臉識別、遠程…

# KVstorageBaseRaft-cpp 項目 RPC 模塊源碼學習

KVstorageBaseRaft-cpp 項目 RPC 模塊源碼學習 。 一、項目簡介 KVstorageBaseRaft-cpp 是一個基于 Raft 一致性算法實現的分布式 KV 存儲系統&#xff0c;采用 C 開發。項目的核心目標是幫助開發者理解 Raft 原理和分布式 KV 存儲的基本實現。RPC 模塊是分布式系統通信的關…

TeledyneLeCroy在OFC2025 EA展臺上展示了其400G/800G的全包圍的測試解決方案,滿足了UEC聯盟和UALINK聯盟的技術需求

Teledyne LeCroy在OFC 2025上的EA展臺 在2025年3月26日至28日于美國圣地亞哥舉辦的OFC&#xff08;Optical Fiber Communication Conference and Exhibition&#xff09;展會上&#xff0c;全球領先的測試測量解決方案提供商Teledyne LeCroy隆重展示了其最新研發的800G網絡測試…

新一代電動門“攻克”行業痛點,遠峰科技打造“智能出入”新標桿

在2025上海國際車展期間&#xff0c;遠峰科技舉辦了一場面向車企合作伙伴和媒體的智能汽車解決方案實車展示會。 在這其中&#xff0c;遠峰科技的新一代電動門首次亮相&#xff0c;突破性的解決了行業普遍存在的“運行抖動不平順”、“窄車位車門開度過小”、“障礙物識別不準…

WEB UI自動化測試之Pytest框架學習

文章目錄 前言Pytest簡介Pytest安裝Pytest的常用插件Pytest的命名約束Pytest的運行方式Pytest運行方式與unittest對比主函數運行命令行運行執行結果代碼說明 pytest.ini配置文件方式運行&#xff08;推薦&#xff09;使用markers標記測試用例 pytest中添加Fixture&#xff08;測…

機器學習簡單概述

Chatgpt回答&#xff1a; 機器學習&#xff1a;機器學習是人工智能的一個分支&#xff0c;側重于通過數據訓練模型&#xff0c;使計算機能夠根據數據進行預測、分類、回歸等任務。它通過算法從歷史數據中學習規律&#xff0c;然后在新數據上進行推斷。機器學習包括多種算法&…

openjdk底層匯編指令調用(一)——匯編指令及指令編碼基礎

匯編指令 計算機在執行過程時只識別代表0或者1的電信號。因此為了讓計算機能夠執行則須向計算機輸入一系列01構成的指令。 例如在x64平臺下&#xff0c;0x53&#xff0c;二進制為01010011&#xff0c;表示將rbx寄存器中的值壓棧。 但是&#xff0c;對于程序員而言&#xff0c;…

Python Day 22 學習

學習講義Day14安排的內容&#xff1a;SHAP圖的繪制 SHAP模型的基本概念 參考學習的帖子&#xff1a;SHAP 可視化解釋機器學習模型簡介_shap圖-CSDN博客 以下為學習該篇帖子的理解記錄&#xff1a; Q. 什么是SHAP模型&#xff1f;它與機器學習模型的區別在哪兒&#xff1f; …

48.輻射發射RE和傳導發射CE測試方法分析

輻射發射RE和傳導發射CE測試方法分析 1. 所有測試項目總結2. 輻射發射RE測試方法3. 傳到發射CE測試方法 1. 所有測試項目總結 所有EMC測試項目都是基于模擬現實的。 模擬現實中可能發生的各種真實場景&#xff0c;然后統計總結出各種場景下的真實應力&#xff0c;并通過制造測…

在 Vue 3 中實現刮刮樂抽獎

&#x1f389; 在 Vue 3 中實現刮刮樂抽獎 當項目中需要做一些活動互動頁時&#xff0c;需要實現刮刮樂&#xff0c;請看如下效果&#xff1a; 這里感謝github用戶Choicc分享的組件&#xff0c;具體可點擊傳送門查看 1. 引入組件 將/src/components下ScratchCard.vue復制到自…

c語言第一個小游戲:貪吃蛇小游戲01

hello啊大家好 今天我們用一個小游戲來增強我們的c語言&#xff01; 那就是貪吃蛇 為什么要做一個貪吃蛇小游戲呢&#xff1f; 因為這個小游戲所涉及到的知識有c語言的指針、數組、鏈表、函數等等可以讓我們通過這個游戲來鞏固c語言&#xff0c;進一步認識c語言。 一.我們先…

實戰項目1(02)

目錄 任務場景一 【sw1和sw2的配置如下】 任務場景二 【sw3的配置】 【sw4-6的配置】 任務場景一 某公司有生產、銷售、研發、人事、財務等多個部門&#xff0c;這些部門分別連接在兩臺交換機&#xff08;SW1和SW2&#xff09;上&#xff0c;現要求給每個部門劃分相應的V…

Kubernetes生產實戰(十四):Secret高級使用模式與安全實踐指南

一、Secret核心類型解析 類型使用場景自動管理機制典型字段Opaque (默認)自定義敏感數據需手動創建data字段存儲鍵值對kubernetes.io/dockerconfigjson私有鏡像倉庫認證kubelet自動更新.dockerconfigjsonkubernetes.io/tlsTLS證書管理Cert-Manager可自動化tls.crt/tls.keykube…

Linux: 信號【阻塞和捕捉信號】

Linux&#xff1a; 信號【阻塞和捕捉信號】 &#xff08;一&#xff09;阻塞信號1.信號其他相關的概念2.在內核中表示3.sigset_t4.信號集操作函數5.sigprocmask&#xff08;設置阻塞&#xff09;6.sigpending&#xff08;得到未決狀態&#xff09; &#xff08;二&#xff09;捕…

MySQL 數據庫集群部署、性能優化及高可用架構設計

MySQL 數據庫集群部署、性能優化及高可用架構設計 集群部署方案 1. 主從復制架構 傳統主從復制&#xff1a;配置一個主庫(Master)和多個從庫(Slave)GTID復制&#xff1a;基于全局事務標識符的復制&#xff0c;簡化故障轉移半同步復制&#xff1a;確保至少一個從庫接收到數據…

Java 多態:原理與實例深度剖析

一、多態概述 在 Java 面向對象編程體系中&#xff0c;多態是構建靈活、可擴展程序的核心機制之一&#xff0c;與封裝、繼承并稱為面向對象的三大特性。其本質是同一操作作用于不同對象&#xff0c;產生不同的執行結果&#xff0c;這使得程序在運行時能根據實際對象類型動態調…

解決使用寶塔Linux部署前后端分離項目遇到的問題

問題一&#xff1a;訪問域名轉圈圈&#xff0c;顯示404,403 沒有解決跨域問題&#xff0c;在后端yml中設置content&#xff1a;/prod&#xff08;生產環境&#xff09;&#xff0c;在前端.env文件中將http&#xff1a;//127.0.0.1:8080/替換為公網IP&#xff0c;并在vite.conf…

《Python星球日記》 第54天:卷積神經網絡進階

名人說&#xff1a;路漫漫其修遠兮&#xff0c;吾將上下而求索。—— 屈原《離騷》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄 一、深度CNN架構解析1. LeNet-5&#xff08;1998&#xff09;2. AlexNet&#x…