Re:從零開始的Linux之路(文件許可權)

来源:https://www.cnblogs.com/alicetia/archive/2018/07/26/9369621.html
-Advertisement-
Play Games

基於 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4 基本概念 Linux最核心的一個概念就是:Linux裡面任何東西都可以被視為一個文件,包括系統本身(說到底Linux啟動不就是調用那些開機文件再連帶啟動其他的文件麽~~~) User:文件擁有者 Group: ...


基於 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4


基本概念

Linux最核心的一個概念就是:Linux裡面任何東西都可以被視為一個文件,包括系統本身(說到底Linux啟動不就是調用那些開機文件再連帶啟動其他的文件麽~~~)

User:文件擁有者

Group:文件所屬群組

Others:非本文件持有者或者所屬群組的其他人員

  • User就是字面上的意思,即文件是誰的(具體可執行哪些操作看許可權)
  • Group則代表一個拓展版User,代表加入到該組內的所有人對這個文件具有特定的操作許可權,但Group可以不包含User,也就是說一個文件的User可以不在這個文件的Group內
  • Others很好理解,不是本人也不是這個所屬組的第三方人員
  • 註意:無論如何設置許可權,唯有root是無法被阻擋的

其實許可權的好處就是在生產環境變得更為安全,保證特定數據不會被職權外的人員所訪問

包括root的所有賬號信息都存儲在/etc/passwd,密碼在/etc/shadow,群組則在/etc/group,這三個文件請不要隨意刪除!


文件許可權

-rw-r--r--.      1    root   root   2403    7月  20 05:34 initial-setup-ks.cfg
[文件類型和許可權][連接數][User][Group][文件大小][ 最後修改時間 ][      文件名        ]

類型與許可權:

 -         rw-   r--    r--
[文件類型][User][Group][Others]

許可權分為4段

  • 文件類型:這表示這個文件是一個“文件”、目錄或者是快捷方式
    • -(橫杠):這是一個文件
    • d:這是一個目錄
    • l(小寫L):這是一個快捷方式
    • b:塊設備文件,即以塊的方式進行存儲,其實指的就是硬碟
    • c:字元設備文件,IO設備,也就是滑鼠、鍵盤這些使用物理介面的外設
    • p:管道文件(以後會補充)
    • s:套介面文件,怎麼說呢,感覺類似網路的監聽埠這樣吧(以後會補充)
  • User:請向上看基本概念說明
  • Group:請向上看基本概念說明
  • Others:請向上看基本概念說明
  • rwx在下麵會詳細說明

連接數:i-node

User:擁有者賬號

Group:該文件所屬群組

文件大小:容量,預設單位為Bytes

最後修改時間:代表這個文件的建立日期或者最後修改日期,如果時間距離現在太久,只顯示年份

文件名:就是文件的名字,但如果這個文件的名字前有“.”(例如 .alice )代表這個文件是一個隱藏文件

 

常用命令

chown [-R] filename/dirname

修改文件擁有者

-R:遞歸修改,這個參數是用在批量修改目錄上面的,即修改一個目錄的時候不加-R參數的話,只是修改目錄錶面的持有者,不會對目錄裡面的文件進行擁有者修改

 

chgrp [-R] filename/dirname

修改文件所屬群組

-R:遞歸修改,和chown -R的效果是一個意思

 

chmod [-R] xyz filename/dirname

修改文件許可權

xyz每個字母都代表0~7的數字

-R:遞歸修改,意思和chown -R、chgrp -R一個意思

  • r(4):可讀,即讀取
  • w(2):可寫,即往文件裡面增加、修改、刪除內容
  • x(1):可執行,用Windows的說法就是這個文件能不能啟動,雖然在Linux上你可以給任何文件加上x許可權來執行,但具體能不能用還是看這個文件的尾碼名有沒有相關程式來執行功能,所以從Windows的角度來看Linux的x許可權不大好理解這個;但需要註意的是,Linux下文件能不能被執行與尾碼名是沒有關係的,只和x許可權有關,所以能不能執行這個尾碼名的文件就是另外一回事了

r、w、x的對應數字為4、2、1,即為什麼說xyz的地方為0~7就很好理解了吧,滿許可權rwx加起來的數值剛好就是7,沒有任何許可權加起來就是0,為什麼要rwx定為421的原因其實就是電腦的運行方式(稍微有點電腦基礎的都知道用電腦是如何用二進位是來表示十進位數)

舉點例子好了:
-rwxr-x-wx 就是[4+2+1][4+0+1][0+2+1],各部分加起來就是753
-----wx--x 就是[0+0+0][0+2+1][0+0+1],即031

rwx轉換數字這個需要多加練習,最好能一眼看出一個文件的3組rwx對應總許可權數字是多少

 

當然如果不習慣xyz這種方式添加許可權的話還有另一種方式

chmod  u(User)                       +(加上)     r(可讀)      filename/dirname
g(Group) -(減去) w(可寫)
o(Others) =(設定) x(可執行)
a(All,即User+Group+Others)

u、g、o都可以理解,a指的是同時指定User、Group、Others,也就是a選項是同時操作ugo
+:添加這個許可權,如果ugo對應位置有相應許可權則不變,如果沒有就加上
-:去掉這個許可權,如果ugo對應位置沒有相應許可權則不變,如有有就去掉
=:設定這個許可權,這個和+和-就完全不一樣了,=是設定了相應許可權之後那麼ugo對應組就有哪些許可權,假設某個文件許可權本身是-rwxrwxrwx,那麼 chmod u=r,g=w,o=x 就會變成-r---w---x了哦


以alice這個文件為例,下麵每一個例子都是互相獨立的
-rw-r--r--. 1 root root 0 7月 26 06:06 alice

chmod u-r alice
--w-r--r--. 1 root root 0 7月 26 06:06 alice

chmod g-r,o+rx ailce
-rw----r-x. 1 root root 0 7月 26 06:06 alice

chmod a-r alice
--w-------. 1 root root 0 7月 26 06:06 alice

chmod a=rw alice
-rw-rw-rw-. 1 root root 0 7月 26 06:06 alice

 

許可權對於文件和目錄的意義(重點)

  • 許可權對檔案的重要性
    • r:可讀,可以讀取文件的實際內容
    • w:可寫,即往文件裡面增加、修改、刪除內容
    • x:可執行,可以被系統執行的許可權(具體看chmod關於x許可權的說明)
    • 註意:文件本身是否可以刪除與文件本身的許可權無關,是由該文件所處目錄的w許可權來決定的

 

  • 許可權對於目錄的重要性
    • r:可讀,可以讀取目錄的結構清單,也就是可以將該目錄有哪些文件可以列出來
    • w:可寫,這個許可權對目錄來說非常重要,也就是說w許可權可以修改該目錄結構
      • 在該目錄內建立新文件或者子目錄
      • 刪除該目錄內已存在的文件或者子目錄(無論該文件或者子目錄的許可權是什麼)
      • 將該目錄內已存在的文件或者子目錄進行重命名
      • 移動該目錄內已存在的文件或者子目錄

也就是說,w許可權可以理解成目錄內有關的文件名修改就對了,怎麼說呢……新增加了一個文件,目錄的結構列表就多了一個名字;刪除一個文件,目錄結構列表就少了一個名字;重命名一個文件,目錄一個文件的名字就修改了嘛~~~

補充一點就是,w許可權可以無視子文件和子目錄的許可權進行刪除的原因在於子文件和子目錄的許可權只是決定了對其自身內容的修改,並不決定自身,所以自身是否能刪除是取決於所在的父目錄的許可權決定的

一個不是很恰當的例子就是,我的書架裡面放了一本別人上了鎖的日記,我既不能看也沒法做其他的操作;但這是我的書架,我可以將別人放在我書架上的上鎖日記拿出來放到(是移動不是複製)其他地方或者直接扔進垃圾桶裡面

    • x:可進入,這個和文件的x許可權意義就不一樣了,對於目錄來說,執行就是進入這個目錄,同時也是目錄最核心的許可權

 

重點來了~~ rwx的重要性由高到低來說,文件是rwx,目錄是xwr

可能很多人不是很註意這個許可權問題,但對於文件操作來說這點至關重要

  • 為什麼文件的許可權重要性順序是rwx?

首先,你要能讀取(r)文件的內容,你才能去寫入(w)內容,如果你連文件裡面有什麼都不知道,你又怎麼去寫入東西進去呢?何況是執行(x)

對於電腦來說,任何文件都要轉化成1和0才能執行,如果電腦連文件有多少個1和0都不知道,該怎麼去執行(x)文件呢~~~

  • 為什麼目錄的許可權重要性順序是xwr?

首先,你要進入(x)這個目錄,你才能去修改文件(w)和列出目錄結構清單(r)

舉個例子可能比較好理解一點:

目錄就像一個抽屜,x許可權就是打開這個抽屜的鑰匙,w許可權就是翻找(修改)東西的能力,r許可權就是個抽屜裡面的照明燈

首先你連鑰匙(x)都沒有,你怎麼翻找東西(w)和知道抽屜裡面有什麼嗎(r)?

其次,如果我已經事先就知道這個抽屜裡面有哪些東西了,那我還需要照明燈(r)嗎?並不一定需要對吧,照明燈(r)的功能只是輔助我翻找東西(w)而已,我甚至都可以摸黑翻找東西~~~

所以現在能理解目錄的許可權重要性順序為什麼和文件是反過來的吧

假設有這麼兩個目錄和並且其中一個目錄有文件
/dir1/file1
/dir2

操作 /dir1 /dir1/file1 /dir2 說明
讀取file1內容 x r - 只需要有個x許可權進到dir1裡面,因為沒有對file1做任何文件名形式上的修改,對dir1來說也就不需要w了
修改file1內容 x rw - 進入dir1裡面,沒動文件名就不需要w,但需要修改file1內容,所以需要讀才能寫(rw)
執行file1內容 x rx - 進入dir1裡面,沒動文件名就不需要w,但需要執行file1內容,所以需要讀才能執行(rx)
刪除file1文件 wx - - 進入dir1裡面,結構清單裡面少了一個文件名,所以需要w,但刪除file1就無所謂file1有沒有許可權了
將file1複製到dir2 x r wx 進入dir1裡面,沒動dir1裡面的文件名就不需要w,但dir2需要進入並且在dir2的結構清單上多了一個文件名,所以dir2需要wx
將file1移動到dir2 wx - wx 進入dir1裡面,file1被移動,dir1結構清單裡面少了一個文件名,所以需要w;同理dir2多了一個文件名,所以也需要w

上面所有對於目錄的操作完全沒有用到r許可權,所以對目錄來說r許可權是可有可無的東西

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

-Advertisement-
Play Games
更多相關文章
  • https://www.cnblogs.com/cmt/p/4692920.html ...
  • 因個人需求,需要將html格式轉換成PDF並加上水印圖片。於是乎第一次接觸這種需求的小菜鳥博主我,在某度搜索引擎上不斷的查閱關鍵字資料、踩坑,終於有了一個相應的解決方案。以下是解決步驟,記錄下來方便以後的回顧,以及各位大神們的品鑒。 1、在 NuGet 搜索 itextsharp 關鍵字 下載以下截 ...
  • 對.Net Core的學習和實踐,已經進行了一年多的世間,截止目前,微軟已經發佈.Net Core2.1,關於.NetCore的應用部署的文章比比皆是。今天藉此,回顧下.net core環境的部署過程。 首先,我這邊採用的是CentOS7+上的版本,.net core2.1。在動手前,我們先做這樣的 ...
  • 在很早之前就介紹過圖表插件Highcharts的使用了,在2014年的隨筆《基於MVC4+EasyUI的Web開發框架經驗總結(4)--使用圖表控制項Highcharts》,這裡基本上都介紹的比較完整,基本的設置也沒有太大的差異,本篇介紹的是基於Bootstrap開發框架的界面處理,以及對圖表插件Hi... ...
  • 0.簡介 Abp 框架在其內部實現了倉儲模式,並且支持 EF Core 與 Dapper 來進行資料庫連接與管理,你可以很方便地通過註入通用倉儲來操作你的數據,而不需要你自己來為每一個實體定義單獨的倉儲的實現,通用倉儲包含了常用的 CRUD 介面和一些常用方法。 例如: 1.通用倉儲定義與實現 在 ...
  • 在IIS上部署web api 完成後,瀏覽時出現了“The compiler failed with error code -2146232576.”的錯誤(有時會出現這個情況)。主要是 我們在.Net Framework 下創建Web API的時候,選擇預設的模板後,VS在創建項目時會添加一些組件 ...
  • 實際開發中有很多項目需要引用第三方的dll或者資源文件,且文件比較多,在運行時這些文件需要被拷貝到BIN目錄。 使用VS自帶的"複製到輸出目錄",似然方便,但是比較不零活,經過多次摸索,終於有了一個很好的解決辦法。 將csproj中copy指令的用法如下: 1、記事本打開啟動項目的 csproj文件 ...
  • 線程概述 線程是一個獨立處理的執行路徑。每個線程都運行在一個操作系統進程中,這個進程是程式執行的獨立環境。在單線程中進程的獨立環境內只有一個線程運行,所以該線程具有獨立使用進程資源的權利。在多線程程式中,在進程中有多個線程運行,所以它們共用同一個執行環境。 基礎線程(thread) 使用Thread ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...