六十天Linux從0到項目搭建(第五天)(file、bash 和 shell 的區別、目錄權限、默認權限umask、粘滯位、使用系統自帶的包管理工具)

1.?file [選項] 文件名

  • 用于確定文件類型的實用工具。它會通過分析文件內容(而不僅僅是文件擴展名)來判斷文件的實際類型

示例輸出解析

$ file /bin/bash
/bin/bash: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=..., stripped

這段輸出告訴我們:

  • 這是一個 ELF 格式的可執行文件
  • 64位架構,x86-64指令集
  • 動態鏈接
  • 為 GNU/Linux 系統編譯
  • 已被剝離調試符號

2. bash 和 shell 的區別

  • Shell:是用戶與操作系統內核交互的命令行界面,是統稱

  • Bash?(Bourne Again Shell):是Shell的一種具體實現,是Linux系統中最常用的shell

類比法就是

  • Shell?是「智能家居中控系統」的通用標準(比如所有品牌都支持的 Zigbee 協議)。

  • Bash?是某品牌的中控系統(比如小米 HomeKit),功能更強大、用戶最多,但本質仍是 Shell 的一種實現

3 目錄權限的深度解析(從文件系統角度理解)

1. 進入目錄(cd)需要什么權限?

必須權限:x(執行權限)

  • 為什么?

    • 目錄的本質是一個記錄子文件位置的特殊文件x?權限控制你能否“執行”這個目錄(即訪問其內容)。

    • 類比:進入房間需要鑰匙(x),即使你知道房間里有東西(r),沒有鑰匙也進不去。

驗證:

chmod -x dir/      # 移除 x 權限
cd dir/            # 報錯:Permission denied

2. 目錄的?r(讀權限)代表什么?

作用:允許查看目錄下的文件名和基礎屬性(如?ls

  • 無?r?權限時

    • ls dir/?→ 報錯?Permission denied但已知完整路徑的文件仍可訪問

    • 文件系統原理

      • r?僅控制讀取目錄條目(dirent?結構),不影響通過完整路徑訪問文件。

驗證:

chmod -r dir/      # 移除 r 權限
ls dir/            # 失敗
cat dir/known_file # 成功(需有文件本身的 r 權限)

3. 目錄的?w(寫權限)代表什么?

作用:允許修改目錄內容(創建/刪除/重命名文件)

  • 無?w?權限時

    • touch dir/new_file?→ 報錯?Permission denied

    • 關鍵點:刪除文件需要父目錄的?w,而非文件本身的權限!

文件系統原理

  • 目錄的?w?權限控制其?inode?中“子文件列表”的修改權。

驗證:

chmod -w dir/          
touch dir/new_file    # 失敗
rm dir/old_file      # 失敗(即使 old_file 可寫)

4. 目錄權限的底層邏輯(文件系統視角)

權限對應操作影響的文件系統操作
r讀取目錄條目readdir()?系統調用
w修改目錄條目unlink()(刪除)、rename()(重命名)
x進入目錄/訪問子文件元數據open()?文件時需要檢查父目錄的?x

為什么這樣設計?

  • 安全分層:防止用戶繞過權限直接操作文件(如通過?rm?刪除只讀文件)。

  • 性能優化x?權限避免頻繁檢查子文件權限。


5. 特殊場景與誤區

(1) 無?r?但能訪問已知文件

chmod -r dir/
cat dir/secret.txt  # 成功(若 secret.txt 有 r 權限)
  • 原因:文件系統通過完整路徑直接定位 inode,不依賴父目錄的?r

(2) 無?x?但能?stat?文件

chmod -x dir/
stat dir/file      # 失敗!需父目錄 x 權限
  • 原因:訪問文件元數據(如大小、時間)需要父目錄的?x

(3) 目錄粘滯位(t

chmod +t /tmp      # 僅文件所有者可刪除自己的文件
  • 用途:共享目錄(如?/tmp)中防止他人刪除你的文件。


6. 總結:目錄權限三要素

權限關鍵作用無權限時的表現
r查看目錄內容(文件名)ls?失敗,但已知路徑可訪問文件
w修改目錄內容(增刪改文件)無法創建/刪除/重命名文件
x進入目錄或訪問子文件元數據cd?和?stat?均失敗

4. 文件與目錄默認權限的底層邏輯(umask 機制詳解)

1. 默認權限的起點

  • 普通文件:系統設定的起始權限是?666-rw-rw-rw-

    • 所有用戶可讀、可寫,但不可執行(安全考慮,避免隨意運行未知文件)。

  • 目錄:系統設定的起始權限是?777drwxrwxrwx

    • 所有用戶可讀、寫、進入(目錄需要?x?權限才能訪問內容)。

?為什么目錄比文件多?x

  • 文件?x?是“執行”,目錄?x?是“進入/搜索”,二者含義不同。

  • 目錄必須允許?x,否則無法?cd?或訪問子文件。


2. 權限掩碼(umask)的作用

  • umask?是系統的一個權限過濾器,用于從起始權限中屏蔽某些權限

  • 規則
    最終權限 = 起始權限 & (~umask)
    (即從起始權限中移除 umask 指定的權限

查看當前 umask

umask      # 默認輸出(如 0022)
umask -S   # 符號格式(如 u=rwx,g=rx,o=rx)

3. 默認 umask 值(常見場景)

  • Linux 普通用戶0002?→ 屏蔽?other?的?w?權限。

  • Linux root 用戶0022?→ 屏蔽?group?和?other?的?w?權限。

計算示例

  1. 普通文件(起始?666

    • umask?022?→ 移除?group?和?other?的?w

      666:  rw- rw- rw-  
      & ~022: rw- r-- r--  
      -------------------  
      644:  rw- r-- r--  
    • 實際權限:-rw-r--r--(所有者可讀寫,其他人只讀)。

  2. 目錄(起始?777

    • umask?022?→ 移除?group?和?other?的?w

      777:  rwx rwx rwx  
      & ~022: rwx r-x r-x  
      -------------------  
      755:  rwx r-x r-x  
    • 實際權限:drwxr-xr-x(所有者全權,其他人不可修改目錄內容)。


4. 為什么普通文件默認?664(而非?644)?

  • 現代 Linux 發行版(如 Ubuntu)默認 umask 為?0002(而非?0022):

    • 普通用戶創建文件時:

      666 & ~002 = rw- rw- r-- → 664  
    • 目的:允許同組用戶協作編輯文件(適合多用戶環境)。

驗證

umask 0002    # 臨時設置 umask
touch test.txt
ls -l test.txt  # 輸出 -rw-rw-r--

5. 修改 umask 的注意事項

  • 臨時修改(僅當前會話有效):

    umask 0027   # 屏蔽 group 的 w 和 other 的所有權限
  • 永久修改
    將?umask 002?添加到?~/.bashrc?或?/etc/profile

  • 安全建議

    • root 用戶應保持?umask 022?或更嚴格(如?027)。

    • 共享目錄可設?umask 002(組內協作)。


6. 特殊場景

  • 可執行文件

    • 若文件本身需要執行權限(如腳本),需手動添加?x

      chmod +x script.sh
  • 目錄的粘滯位(t

    • 設置后(如?/tmp),即使有?w?權限,用戶也只能刪除自己的文件:

      chmod +t /shared_dir

總結:權限設計的核心邏輯

對象起始權限umask 作用常見默認權限
普通文件666移除?w(防止誤改)664(用戶)、644(root)
目錄777保留?x(確保可進入)775(用戶)、755(root)

關鍵點

  1. umask?不添加權限,只從起始權限中屏蔽

  2. 目錄必須保留?x,否則無法訪問子文件。

  3. 權限設計遵循最小特權原則,平衡安全與便利。

5. 粘滯位(Sticky Bit)詳解:保護共享目錄中的用戶文件


1. 問題背景

  • 共享目錄場景

    • 由?root?創建一個目錄(如?/shared_tmp),供所有用戶存放臨時文件。
    • 目錄權限通常為?777drwxrwxrwx),允許所有用戶讀寫。
  • 風險

    • 雖然文件受權限約束(如?-rw-r--r--),但任何有目錄?w?權限的用戶都能刪除他人的文件
    • 原因:Linux 中,刪除文件需要父目錄的?w?權限,而非文件本身的權限。

2. 粘滯位的作用

  • 粘滯位(Sticky Bit)?是一種特殊的目錄權限,設定后:

    • 用戶只能刪除自己創建的文件,即使目錄是?777
    • 典型應用/tmp?目錄(所有用戶可寫,但無法隨意刪別人的文件)。

查看?/tmp?的權限

ls -ld /tmp      # 輸出示例:drwxrwxrwt

注意最后的?t,表示粘滯位已設置。


3. 如何設置粘滯位?

方法 1:符號模式(推薦)

chmod +t /shared_dir

方法 2:數字模式

chmod 1777 /shared_dir   # 1xxx 中的 1 表示粘滯位

驗證

ls -ld /shared_dir      # 輸出應包含 `... rwt` 或 `... rwT`
  • t:粘滯位 + 其他人有?x?權限。
  • T:粘滯位 + 其他人無?x?權限(罕見,可能配置錯誤)。

4. 粘滯位的規則

操作無粘滯位(普通 777 目錄)有粘滯位(1777 目錄)
用戶創建文件可以可以
用戶刪除自己的文件可以可以
用戶刪除他人文件可以(只要有目錄?w?權限)禁止
root 用戶刪除文件可以可以(root 不受限制)

關鍵點

  • 粘滯位僅影響文件刪除,不影響讀取或修改文件內容(文件自身的?rw?權限仍有效)。

  • 誰可以刪除文件?

    • 文件所有者、目錄所有者、root


5. 為什么需要粘滯位?

  • 共享目錄的權限矛盾

    • 若目錄無?w?權限 → 用戶無法創建文件。

    • 若目錄有?w?權限 → 用戶可刪除他人文件。

  • 粘滯位的平衡

    • 允許所有人創建文件(777),但禁止隨意刪除他人文件(+t)。


6. 實際應用示例

場景:創建一個共享臨時目錄?/shared_tmp,要求:

  1. 所有用戶可讀寫。

  2. 用戶只能刪除自己的文件。

步驟

# 1. 創建目錄并設置權限
sudo mkdir /shared_tmp
sudo chmod 1777 /shared_tmp   # 或 chmod a+rwxt /shared_tmp# 2. 驗證權限
ls -ld /shared_tmp           # 應顯示 drwxrwxrwt# 3. 測試(用戶A和用戶B)
# 用戶A創建文件
touch /shared_tmp/userA_file# 用戶B嘗試刪除(失敗)
rm /shared_tmp/userA_file    # 報錯:Operation not permitted

7. 常見問題

Q1:粘滯位對文件有效嗎?

  • 無效!粘滯位僅適用于目錄。對文件設置?+t?會被忽略(顯示為?T)。

Q2:為什么?/tmp?默認有粘滯位?

  • 因為?/tmp?是系統級共享目錄,需防止用戶互相刪除文件導致安全問題。

Q3:如何移除粘滯位?

chmod -t /shared_dir

總結:粘滯位的核心邏輯

權限作用
目錄?w控制能否在目錄內創建/刪除文件。
粘滯位?t限制刪除權限(僅允許所有者刪除)。

6.?使用系統自帶的包管理工具(推薦)

  • 在 Linux 服務器上安裝軟件,主要通過?包管理工具?來實現,類似于手機上的應用商店。以下是詳細的操作流程和常見方法:

不同的 Linux 發行版有不同的包管理工具,最常見的是:

Linux 發行版包管理工具安裝命令示例
Ubuntu/Debianapt?(Advanced Package Tool)sudo apt install 軟件名
CentOS/RHELyum?或?dnfsudo yum install 軟件名?或?sudo dnf install 軟件名
Arch Linuxpacmansudo pacman -S 軟件名
openSUSEzyppersudo zypper install 軟件名

示例(Ubuntu/Debian 系統)

# 1. 更新軟件包列表(獲取最新軟件信息)
sudo apt update# 2. 安裝軟件(如 nginx)
sudo apt install nginx# 3. 卸載軟件
sudo apt remove nginx

?優點

  • 自動解決依賴關系(類似手機應用商店一鍵安裝)。

  • 官方軟件庫,安全穩定。

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

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

相關文章

基于大模型預測的初治菌陽肺結核診療方案研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的 二、初治菌陽肺結核概述 2.1 疾病定義與病理機制 2.2 流行病學特征 2.3 傳統診療方法與局限性 三、大模型在初治菌陽肺結核預測中的應用原理 3.1 大模型技術簡介 3.2 數據收集與預處理 3.3 模型構建與訓練 3.4 模型…

常見中間件漏洞之一 ----【Tomcat】

中間件Tomcat介紹: tomcat是?個開源?且免費的jsp服務器,默認端? : 8080,屬于輕量級應?服務器。它可以實現 JavaWeb程序的裝載,是配置JSP(Java Server Page)和JAVA系統必備的?款環境。 在歷史上也披露…

GoogleNet的簡易實現

這里使用GooleNet對MNIST手寫數據集進行分類,最后的效果達到了在測試集98%的準確率。這里關于該網絡的細節可以在網絡上搜索到,相關原理也可以搜索到,這里僅展示網絡的代碼實現,這里是基于pytorch實現的,詳細的代碼如下…

javaweb自用筆記:Mybatis

目錄 mybatis 配置sql書寫提示 JDBC 數據庫連接池 lombok mybatis 只需要定義Mapper接口就好,不需要有實現類,因為框架底層會自動生成實現類 配置sql書寫提示 JDBC 數據庫連接池 lombok XML映射文件 動態SQL

Rust從入門到精通之精通篇:22.Unsafe Rust 詳解

Unsafe Rust 詳解 在 Rust 的設計哲學中,安全性是核心原則之一。Rust 的所有權系統、借用檢查器和類型系統共同保證了內存安全和線程安全。然而,有些底層操作無法通過 Rust 的安全檢查機制進行驗證,這就是 unsafe Rust 存在的原因。在本章中,我們將深入探討 unsafe Rust,…

比手動備份快 Iperius全自動加密備份,NAS/云盤/磁帶機全兼容

IperiusBackupFull是一款專為服務器和工作站設計的備份解決方案,它同時也是一款針對Windows 7/8/10/11/Server系統的簡潔且可靠的備份軟件。該軟件支持增量備份、數據同步以及驅動器鏡像,確保能夠實現完全的系統恢復。在備份存儲方面,Iperius…

deepseek實戰教程-第六篇查找源碼之倉庫地址與deepseek-R1、deepseek-LLM倉庫內容查看

上一篇講了支持deepseek的模型應用的本地安裝和部署以及使用。再上一篇講解了deepseek提供的開放api,便于開發者基于deepseek提供的接口來編寫屬于自己的業務應用程序。但是前面幾篇我們都是在用模型,我們知道deepseek是開源的,那么deepseek的源碼在哪里,具體源碼是什么樣的…

ES 加入高亮設置

searchTextQueryOne new MatchQuery.Builder().field(searchFieldOne).query(searchText).build();// 幫助中心文檔切分 只查詢6條Integer finalTopK 10;List<String> newReturnFileds returnFields;newReturnFileds.add("kid"); // 需要返回kidHighlight h…

mapbox進階,添加鷹眼圖控件

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??mapboxgl-minimap 鷹眼控件二、??添加…

亮數據爬取API爬取亞馬遜電商平臺實戰教程

前言 在當今數據驅動的商業環境中&#xff0c;企業需要快速、精準地獲取互聯網上的公開數據以支持市場分析、競品調研和用戶行為研究。然而&#xff0c;傳統的手動網頁爬取方式面臨著諸多挑戰&#xff1a;IP封鎖、驗證碼干擾、網站結構頻繁變更&#xff0c;以及高昂的運維成本…

「Unity3D」使用C#獲取Android虛擬鍵盤的高度

原理是&#xff1a;利用getWindowVisibleDisplayFrame方法&#xff0c;獲取Android窗口可見區域的Rect&#xff0c;這個Rect剔除了狀態欄與導航欄&#xff0c;并且在有虛擬鍵盤遮擋的時候&#xff0c;會剔除這個遮擋區域。 接著&#xff0c;Unity的safeArea也剔除了狀態欄與導…

“城市超級智能體”落地,聯想智慧城市4.0“功到自然成”

作者 | 曾響鈴 文 | 響鈴說 交通攝像頭捕捉到車流量數據&#xff0c;進入一套“自動化”的城市整體管理體系中&#xff0c;交通路況信息、天氣變化情況以及城市大型活動安排等看似分散的數據被整合&#xff0c;根據預測的路況精準調控交通信號燈&#xff0c;讓自動駕駛清掃車…

每日總結3.24

第十屆藍橋杯大賽軟件賽省賽C/C 大學 B 組 183.完全二叉樹的權值&#xff08;找規律&#xff0c;臨界值&#xff09; #include <bits/stdc.h> using namespace std; int a[1000005]; int main() { int m;int d; cin>>m; int sum;int maxn0; for(int i1;i&…

計算機復試面試

數據庫 1.設計過程/設計步驟 1.需求分析&#xff1a;明確客戶需求&#xff0c;確定系統邊界&#xff0c;生成數據字典 2.概念結構設計&#xff1a;將用戶需求抽象為概念模型&#xff0c;繪制e-r圖 3.邏輯結構設計&#xff1a;將e-r圖轉化為dbms相符合的邏輯結構&#xff0c;db…

模型 拆屋效應

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思維模型目錄。先過分后合理&#xff0c;易被接受。 1 拆屋效應的應用 1.1 高端手表銷售案例 一、案例背景 在高端手表銷售領域&#xff0c;銷售人員面臨顧客對價格敏感且購買決策謹慎的挑戰。如何引導顧客接受較高…

Windows系統下Pycharm+Minianaconda3連接教程【成功】

0.引言 PycharmMinianaconda3開發組合的好處 優點類別具體優點描述環境管理便捷獨立環境創建 環境復制與共享Miniconda3可創建多獨立Python環境&#xff0c;支持不同版本與依賴&#xff0c;避免沖突。 能復制、分享環境配置&#xff0c;方便團隊搭建相同開發環境。依賴管理高…

4、pytest常用插件

pytest 是一個功能非常強大的測試框架&#xff0c;支持豐富的插件系統。插件可以擴展 pytest 的功能&#xff0c;從而使測試過程更加高效和便捷。以下是一些常用的 pytest 插件及其作用&#xff1a; pytest-cov: 作用: 提供測試覆蓋率報告&#xff0c;幫助你了解代碼的表現情況…

python每日十題(10)

在Python語言中&#xff0c;源文件的擴展名&#xff08;后綴名&#xff09;一般使用.py。 保留字&#xff0c;也稱關鍵字&#xff0c;是指被編程語言內部定義并保留使用的標識符。Python 3.x有35個關鍵字&#xff0c;分別為&#xff1a;and&#xff0c;as&#xff0c;assert&am…

Clio:具備鎖定、用戶認證和審計追蹤功能的實時日志記錄工具

在網絡安全工具不斷發展的背景下&#xff0c;Clio 作為一款革命性的實時日志記錄解決方案&#xff0c;由 CyberLock Technologies 的網絡安全工程師開發&#xff0c;于 2025 年 1 月正式發布。這款先進的工具通過提供對系統事件的全面可見性&#xff0c;同時保持強大的安全協議…

內核編程十三:進程狀態詳解

進程如同數字世界中的生命體&#xff0c;誕生時被系統母體賦予初始資源&#xff0c;在CPU的脈搏中呼吸&#xff0c;于內存的疆域里生長。它睜開線程之眼觀察世界&#xff0c;伸出系統調用之手與環境互動&#xff0c;時而如幼童般單純執行指令&#xff0c;時而如哲人般陷入阻塞沉…