特殊許可權 - SUID GUID STICKYBIT

来源:https://www.cnblogs.com/jpinsz/archive/2019/05/08/10831577.html
-Advertisement-
Play Games

◆ SUID ( Set User ID ) Linux里,用戶的ID被稱作UID。在實際生產中,可能需要臨時借用別的用戶執行程式,因此需要能夠臨時變更自己UID的機能叫做SUID。藉助SUID許可權,用戶可以臨時調用root許可權。 ※ 通常,文件的執行是由所屬者發起,然而,賦予SUID許可權後可臨時繼 ...


◆ SUID ( Set User ID )

Linux里,用戶的ID被稱作UID。在實際生產中,可能需要臨時借用別的用戶執行程式,因此需要能夠臨時變更自己UID的機能叫做SUID。藉助SUID許可權,用戶可以臨時調用root許可權。
※ 通常,文件的執行是由所屬者發起,然而,賦予SUID許可權後可臨時繼承所有者的許可權(來執行文件)。通常用於二進位可執行文件上,文件夾賦予該許可權無意義。

舉個例子,假如我們要變更密碼、需要編輯/etc/shadow文件,然而這個文件一般用戶並沒有修改許可權。但由於更改密碼的命令 passwd擁有SUID許可權、一般用戶就可以通過該命令來(繼承root的許可權進而)更改密碼。同時我們也可以看到在ll命令下,擁有SUID許可權的文件,執行許可權的位置會由x變為s。

$ ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 25980 Sat 07 2018 /usr/bin/passwd

 

從上面的命令中可以看到,所有者的許可權顯示為rws,其中,執行權變成了s。也就是說,有執行該命令許可權的而用戶可以臨時繼承所有者(root)的許可權。

需要通過chmod來賦予(二進位可執行)文件SUID時,可通過添加數字“4000”來賦予許可權。比如,原來的許可權為755(rwx r-x r-x),賦予SUID許可權後變成4755,即(rws r-x r-x)。若想用字母表示,則可用u+s來代替4755.

 ◆ 例子 : 給magedu.txt賦予「 rws r-x r-x 」許可權

$ chmod 4755 magedu.txt

◆ 或 : 把magedu.txt的許可權由755變為4755 (SUID)

 $ chmod u+s magedu.txt

◆ SGID ( Set Group ID )

除了繼承所有者許可權的SUID、與之相對的還有繼承組許可權的SGID。預設情況下,用戶創建文件(夾)時,其屬組為此用戶所屬的主組。一旦某目錄被設定了SGID,則對此目錄有寫許可權的用戶在此目錄中創建的文件所屬的組為此目錄的屬組。在生產生活當中,GUID許可權通常用於創建協作目錄。擁有SUID許可權時,所有者的執行許可權表現為s,而擁有GUID許可權的情況下則是組許可權中表達執行許可權的x變為s。

通過chmod設置許可權時,可以加算數字2000、或者使用文字g+s來賦予許可權。

註:很少用來設置單個文件。

◆ 例子 : 把文件夾magedu 賦予「 rwx r-s r-x 」許可權

 $ chmod 2755 magedu

◆ 或 : 用字母來添加GUID 許可權

$ chmod g+s magedu

◆ 粘滯位(sticky bit)

被設置了粘滯位的文件夾,其中的文件及子目錄原來具有的許可權將無效化。只有所有者及root才能對文件進行修改或刪除。當需要「使一個目錄既可以讓任何用戶寫入文件,又不讓用戶刪除這個目錄下他人的文件」的時候,sticky位即可派上用場。比如系統中的 /tmp 目錄就已經設定了粘滯位。 

$ ll -d /tmp

drwxrwxrwt. 10 root root 4096 Sat 06 16:25 /tmp

粘滯位在“其它用戶許可權”中的執行權上顯示為t。用chmod賦予該許可權時、可加算數字 1000 來設置。同時也可以用字母(o+t)來賦予許可權。

◆ 例 : 給目錄magedudir 賦予「 rwx rwx rwt 」許可權

$ chmod 1755 magedudir

 ◆ 或 : 把目錄magedudir 的許可權由「755」變為「1755」

$ chmod o+t magedudir

 

◆ SUIDSGID粘滯位的區別

◆ umask 命令(許可權預設值)

文件或目錄創建後都有其預設許可權,而預設許可權的設置與查看,由umask負責。
可以直接執行umask命令來查看umask的值。新建文件的預設許可權則由數字666減去umask值,而新建目錄的許可權則由數字777減去umask的值。root用戶的預設umask值為「0022」。則新建文件的許可權為 666-022=644、新建目錄的許可權為 777-022=755。

※註:文件預設許可權用666減去umask後可能會出現個位為奇數的情況,這樣就會預設具有執行許可權。為避免這種現象,系統會自行將奇數+1。例如:666-125=541(r-x rw- –x),所有奇數+1後,實際許可權為642(rw- r– -w-)

 ◆ 例子 : 確認當前umask值

$ umask
0022

※ umask值可以由用戶指定。

※    如需長期使用,umask設置需要寫入配置文件。全局設置: /etc/bashrc 用戶設置:~/.bashrc

◆ 例子 : 把umask值從0022變為0027

$ umask 0027

※ 變更umask值後新建文件的許可權即為(-rw r– —)。


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

-Advertisement-
Play Games
更多相關文章
  • 對於生產環境,需以高可用的配置安裝 Rancher,確保用戶始終可以訪問 Rancher Server。當安裝在Kubernetes集群中時,Rancher將與集群的 etcd 集成,並利用Kubernetes 調度實現高可用。 ...
  • awk文本處理基於模式匹配檢查輸入文本,逐行處理並輸出通常用在shell腳本中,獲取指定的數據單獨用時,可對文本數據做統計 一、語法格式格式1:命令 | awk [選項] '[條件]{編輯指令}'格式2:awk [選項] '[條件]{編輯指令}' 文件..若有多條語句,可用分號分隔print是最常用 ...
  • 環境如下: 資源伺服器_1:192.168.10.10 centos 7 tengine 2.3.0 資源伺服器_2:192.168.10.129 centos 7 tengine 2.3.0 代理伺服器:192.168.10.130 centos 7 tengine 2.3.0 一、安裝tengi ...
  • 使用 jsvc 啟動tomcat(使用普通用戶運行) jsvc簡介 在生產中,tomcat應該以daemon的模式運行,而且如果需要以普通用戶的身份啟動tomcat,那麼就不能使用1024以下的埠,這是Liunx系統的限制,只有root用戶才能使用小於1024的埠。那麼該如何將tomcat配置成 ...
  • 首先感謝下github上大佬,我才能使用這個軟體。也可以直接瀏覽https://github.com/DoubleLabyrinth/navicat-keygen進行安裝,非常詳細。 1.https://www.navicat.com.cn/download/navicat-premium 根據自己 ...
  • 註:本文涉及到註冊表操作,不認識請不要隨意修改! 右鍵菜單項儲存在註冊表 中,一般各種程式的右鍵菜單項都可以在此項下麵找到; 添加右鍵菜單項 1. 右鍵單擊 ,`新建(N) 項(K)` ,創建一個新項(名字最好是功能相關); 2. 單擊新項,然後 雙擊 右側 值,寫入 內容(右鍵菜單項顯示的文本); ...
  • 前言 在樹莓派中搭建php環境,按正常流程一般是直接在系統中apt-get install相關的軟體,不過如果某天我想無縫遷移到另一個地方,就又得在重新安裝一次環境。所以為了方便,就直接在樹莓派中使用docker鏡像來構建環境,這樣以後在任意地方直接拉鏡像就可以一鍵啟動環境。 1.安裝docker ...
  • free -m 查看系統記憶體 [root@zhang /]# free -m total used free shared buffers cached Mem: 1004 226 777 0 29 150 -/+ buffers/cache: 46 957 Swap: 199 0 199 linu ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...