linux文件的特殊許可權及隱藏許可權

来源:https://www.cnblogs.com/zhanbing/archive/2019/01/10/10251736.html
-Advertisement-
Play Games

基礎知識 相信大家應該都知道linux的文件基本許可權,使用ls -l命令可以顯示文件的基本許可權,"-rwxrwxrwx.",第一位表示文件的屬性(是文件- ,目錄d等),後面每隔三位為屬主、屬組、其他用戶 對應的讀寫執行許可權。這個比較簡單很容易理解。 文件特殊許可權 單純的讀寫執行許可權無法滿足我們的基 ...


  

  基礎知識

  相信大家應該都知道linux的文件基本許可權,使用ls -l命令可以顯示文件的基本許可權,"-rwxrwxrwx.",第一位表示文件的屬性(是文件-  ,目錄d等),後面每隔三位為屬主、屬組、其他用戶 對應的讀寫執行許可權。這個比較簡單很容易理解。

  文件特殊許可權

  單純的讀寫執行許可權無法滿足我們的基本要求,因此對應有了特殊許可權位(SUID、SGID、SBIT),這些許可權 位用來彌補一般許可權不能實現的功能,幫助沒有許可權的用戶執行需要root許可權的工作。下麵我們就詳細瞭解一下這三個特殊許可權位的功能和用法。

  1、SUID

  SUID可以讓普通用戶對某個可執行命令擁有屬主的許可權,比如普通用戶可以用passwd命令,然而passwd的許可權為:

[root@linux-node2 cron]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30  2014 /bin/passwd

  可以看到passwd的屬主許可權是rws,即x被賦予了特殊許可權,其他用戶執行該命令的時候也會擁有屬主的許可權。我們就拿rm命令舉一個例子(生產環境中不建議使用):

[root@linux-node2 cron]# ll /bin/rm
-rwxr-xr-x. 1 root root 62808 Jan 25  2014 /bin/rm
[root@linux-node2 cron]# chmod u+s /bin/rm
[root@linux-node2 cron]# ll /bin/rm
-rwsr-xr-x. 1 root root 62808 Jan 25  2014 /bin/rm
[root@linux-node2 cron]# touch /data/test
[root@linux-node2 cron]# ll /data/test 
-rw-r--r-- 1 root root 0 Jan 10 17:52 /data/test
[root@linux-node2 cron]# su bing
[bing@linux-node2 cron]$ rm -f /data/test 

  通過上面的例子可以看出,當我們賦予rm特殊許可權後,即使普通用戶對文件沒有寫入許可權,也可以使用特殊許可權對其操作。

  2、SGID

  SGID可以讓其他用戶對某個可執行命令擁有屬組許可權,原理同SUID,只是這個是屬組中x被賦予特殊許可權,具體不再詳解,請看例子:

[bing@linux-node2 cron]$ ll /usr/bin/wall
-r-xr-sr-x. 1 root tty 15344 Jan 27  2014 /usr/bin/wall

  刪除SGID特殊許可權:chmod g-s /usr/bin/wall,關於chmod的命令這裡就不解釋了。

  3、SBIT

  SBIT是針對others來設置的,和上面兩個一樣,只是功能不同而已。

  SBIT目前只針對目錄有效,對於目錄的作用是:當用戶在該目錄下建立文件或目錄時,僅自己與root用戶才有許可權刪除。

  像/tmp目錄(drwxrwxrwt.),任何人可以在/tmp內增加、修改文件,但是這個目錄只有root和自己才能夠刪除文件。舉例說明:

[bing@linux-node2 ~]$ cd /data/
[bing@linux-node2 data]$ touch test1
[bing@linux-node2 data]$ chmod o+t test1 
[bing@linux-node2 data]$ ll test1
-rw-rw-r-T 1 bing bing  0 Jan 10 18:20 test1

上面的例子是錯誤示範,刪除文件是看上級目錄許可權的,所以這樣創建SBIT文件並沒有什麼作用,這個SBIT特殊許可權建議對目錄操作,目錄下的文件會生效哦。  

這裡我就不演示切換到其他用戶刪除該文件了,感興趣的自己測試。

 

  文件隱藏許可權

  linux中有些文件,雖然我們對這個文件有許可權,卻沒有辦法編輯和刪除,或者僅能對這個文件追加等操作,這個就涉及到了linux的隱藏許可權。

  1、chattr命令用於設置文件的隱藏許可權,用法“chattr [+|-參數] [文件]”。

  參數:

 1 A:即Atime,告訴系統不要修改對這個文件的最後訪問時間。
 2 S:即Sync,一旦應用程式對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁碟。
 3 a:即Append Only,系統只允許在這個文件之後追加數據,不允許任何進程覆蓋或截斷這個文件。如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改文件,而不允許刪除任何文件。
 4 b:不更新文件或目錄的最後存取時間。
 5 c:將文件或目錄壓縮後存放。
 6 d:當dump程式執行時,該文件或目錄不會被dump備份。
 7 D:檢查壓縮文件中的錯誤。
 8 i:即Immutable,系統不允許對這個文件進行任何的修改。如果目錄具有這個屬性,那麼任何的進程只能修改目錄之下的文件,不允許建立和刪除文件。
 9 s:徹底刪除文件,不可恢復,因為是從磁碟上刪除,然後用0填充文件所在區域。
10 u:當一個應用程式請求刪除這個文件,系統會保留其數據塊以便以後能夠恢復刪除這個文件,用來防止意外刪除文件或目錄。
11 t:文件系統支持尾部合併(tail-merging)。
12 X:可以直接訪問壓縮文件的內容。

   舉例說明:我們想把某個文件鎖定只讀,不允許任何人修改或刪除,可以用+i選項。

[root@linux-node2 data]# ll test 
-rw-r--r-- 1 root root 0 Jan 11 09:25 test
[root@linux-node2 data]# lsattr test 
---------------- test
[root@linux-node2 data]# chattr +i test
[root@linux-node2 data]# lsattr test 
----i----------- test
[root@linux-node2 data]# rm -f test
rm: cannot remove ‘test’: Operation not permitted

  可以看出,使用隱藏文件屬性保護文件很重要,即使root用戶也無法對文件進行編輯,例如可以把很重要的日誌文件保存,可以用+a選項,只能對日誌文件進行追加寫入,無法查看可編輯,這樣保證了日誌文件的安全性。

  刪除文件隱藏許可權也很簡單(chattr -i test)。

  2、lattr 查看隱藏許可權,用法:“lattr [文件]”。

 

  ACL許可權設置命令(setfacl、getfacl)

  訪問控制列表(Access Control List, ACL)在很多地方都能看到,比如路由交換命令中,防火牆規則中都能看到這個名詞,主要是限制細節的功能。

  以上的許可權管理都是基於用戶和用戶組的,而無法做到更精細的文件許可權管理。這裡就引入了setface命令可以對單一用戶、單一文件或目錄進行rwx許可權控制。

  1、 setfacl

  用法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

  選項:  

-m,       --modify-acl 更改文件的訪問控制列表
-M,       --modify-file=file 從文件讀取訪問控制列表條目更改
-x,       --remove=acl 根據文件中訪問控制列表移除條目
-X,       --remove-file=file 從文件讀取訪問控制列表條目並刪除
-b,       --remove-all 刪除所有擴展訪問控制列表條目
-k,       --remove-default 移除預設訪問控制列表
          --set=acl 設定替換當前的文件訪問控制列表
          --set-file=file 從文件中讀取訪問控制列表條目設定
          --mask 重新計算有效許可權掩碼
-n,       --no-mask 不重新計算有效許可權掩碼
-d,       --default 應用到預設訪問控制列表的操作
-R,       --recursive 遞歸操作子目錄
-L,       --logical 依照系統邏輯,跟隨符號鏈接
-P,       --physical 依照自然邏輯,不跟隨符號鏈接
          --restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
          --test 測試模式,並不真正修改訪問控制列表屬性
-v,       --version           顯示版本並退出
-h,       --help              顯示本幫助信息

  例如:去掉user用戶對data的訪問許可權:setfacl -x u:user /data/  

  2、getfacl

  getfacl是查看文件或文件夾的訪問控制許可權

  用法:

  getfacl file

  這裡就舉例說一下訪問控制列表的用法:

  針對用戶的設定方式:(u:用戶名:許可權)

  設定許可權用m選項,刪除許可權用x選項,

[root@linux-node2 data]# ll test2 
-rw-r--r-- 1 root root 0 Jan 11 11:21 test2
[root@linux-node2 data]# setfacl -m u:bing:rwx test2 
[root@linux-node2 data]# getfacl test2 
# file: test2
# owner: root
# group: root
user::rw-
user:bing:rwx
group::r--
mask::rwx
other::r--
#授權用戶bing對該文件有寫入許可權,切換到bing用戶
[bing@linux-node2 data]$ echo "haha" >test2 
[bing@linux-node2 data]$ cat test2 
haha

 

參考文獻:https://blog.csdn.net/ttt111zzz/article/details/78779247


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

-Advertisement-
Play Games
更多相關文章
  • asp.net core2.2 "用戶驗證" 和 "授權" 有很詳細和特貼心的介紹,我感興趣的主要是這兩篇: 1. "cookie身份驗證" 2. "基於角色的授權" 我的項目有兩類用戶: 1. 微信公眾號用戶,用戶名為公眾號的openid 2. 企業微信的用戶,用戶名為企業微信的userid 每類 ...
  • 在前段時間做了一下列印,因為需要支持的格式比較多,所以wpf能列印的有限分享一下幾種格式的列印(.xls .xlsx .doc .docx .png .jpg .bmp .pdf) 首先為了保證excel和word的格式問題,excel和word是調用的office進行列印的。 獲取所有印表機的方法 ...
  • 註:本文是英文寫的,偷懶自動翻譯過來了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 歡迎大家關註我的公眾號:程式員在紐西蘭,瞭解美麗的紐西蘭和碼農們的生活 閱讀本文大概需要20分鐘。本文目錄: 前言 通過Mv ...
  • 1.topic類型的Exchange 我們之前說過Topic類型的Exchange是direct類型的模糊查詢模式,可以通過routkey來實現模糊消費message,topic的模糊匹配有兩種模式: 1. 使用*來匹配一個單詞 2.使用#來匹配0個或多個單詞 我們來看代碼 消費端 生產者代碼 我們 ...
  • 為什麼選擇MySQL資料庫? 毫無疑問,絕大多數的使用linux操作系統的大中小型互聯網網站都在使用MySQL作為其後端的資料庫存儲,從大型的BAT門戶,到電商平臺,分類門戶等無一例都使用MySQL資料庫。 My Sql 資料庫優點: 1、性能卓越,服務穩定,很少出現異常宕機 2、開放源代碼且無版權 ...
  • 如果安裝時或者工作中有問題,可以看錯誤日誌分析問題原因: 1005:創建表失敗 1006:創建資料庫失敗 1007:資料庫已存在,創建資料庫失敗 1008:資料庫不存在,刪除資料庫失敗 1009:不能刪除資料庫文件導致刪除資料庫失敗 1010:不能刪除數據目錄導致刪除資料庫失敗 1011:刪除資料庫 ...
  • 1、Nginx錯誤日誌信息介紹: error_log的語法格式及參數說明: error_log file level; 關鍵字 日誌文件 錯誤日誌級別 其中,關鍵字error_log 不能改變,日誌文件可以指定任意存放日誌的目錄,錯誤日誌級別常見的有{debug,info,notice,wam,er ...
  • (1)包組成:令牌包、數據包、握手包、專用包(特殊用途)。由包標識符(PID)做進一步細分: 令牌包:OUT、IN、SOF、Setup; 數據包:DATA0、DATA1、DATA2、MDATA; 握手包:ACK、NAK、STALL; 專用包:PRE、ERR、SPLIT、Ping....... (2) ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...