一:檔案和目錄篇(4)——修改檔案許可權

来源:http://www.cnblogs.com/cqsxxy/archive/2017/12/20/8067458.html
-Advertisement-
Play Games

1.chgrp——改變所屬群組 每個檔案都有三個屬性,擁有者、群組、其他人,chgrp就可以更改檔案的群組,如下 上面1.txt和2.txt的群組都是zyj,相當於在zyj群組中的用戶都只能讀取檔案1.txt和2.txt 接下來我們改變檔案的群組為root後就可以修改檔案的內容了,如下 2.chow ...


1.chgrp——改變所屬群組

每個檔案都有三個屬性,擁有者、群組、其他人,chgrp就可以更改檔案的群組,如下

上面1.txt和2.txt的群組都是zyj,相當於在zyj群組中的用戶都只能讀取檔案1.txt和2.txt

接下來我們改變檔案的群組為root後就可以修改檔案的內容了,如下

2.chown——改變檔案擁有者

可以通過chown改變檔案的擁有著屬性,如下改變檔案1.txt的擁有著為zyj

這樣檔案1.txt的擁有著就改變成了zyj,這樣用戶zyj就可以更改檔案內容了

3.chmod——改變檔案許可權

此命令可以改變檔案的許可權,如下

通過上面的命令改變了1.txt的許可權,詳細為擁有者許可權增加執行(x),群組許可權增加寫(w),其他人許可權不變

上面的格式為數字表示法,也可以用字母格式,如下

根據上面的命令,u代表擁有者,g代表群組,o代表其他人,詳細表示為擁有者減少寫(w),群組減少寫(w)、增加執行(x),其他人增加執行(x)

4.檔案預設許可權—umask

首先查看系統目錄或者檔案預設許可權,如下

這個預設許可權的設置有助於新建檔案或者目錄時預設的許可權,如下

我們新建了一個檔案3.txt,它的預設許可權為-rw-r--r--

新建了一個目錄3,它的預設許可權為 rwx-r-xr-x

大家想想,為什麼會是這種許可權而不是其他的許可權,其實這就是umask設置的,檔案和目錄的預設許可權是不同的

檔案主要是存儲數據的,所以檔案肯定沒有執行(x)許可權,因為檔案執行沒有意義,所以檔案的開始預設許可權為666即rw-rw-rw-,

然後通過上面umask設置的0022,即群組和其他人都減去寫的許可權,最終檔案的預設許可權為644 。

但是目錄是需要執行許可權的,所以目錄開始許可權為777,減去0022後得到755即rwxr-xr-x 。

當然我們也可以更改預設許可權設置umask的值,如下

更改umask值後,再新建檔案和目錄時,預設許可權變化了,大家自己試試。

5.檔案特殊許可權——SUID,SGID,SBIT

在上面第4節中,我們用到了umask這個預設許可權,如下

數值0022中,後三位022表示預設許可權需要減去的許可權值,那第一位的數值0代表什麼呢,其實第一位0代表的就是特殊許可權了

我們先看兩個擁有特殊許可權的檔案

大家仔細看看上面的檔案,發現/tmp檔案的其他人許可權為rwt,/usr/bin/passwd檔案的擁有著許可權為rws,這是為什麼呢,

其實這就是表示這兩個檔案擁有特殊許可權,詳細介紹如下

SUID:

上面的/usr/bin/passwd檔案其實是具有SUID的特殊許可權,SUID即設置在擁有著上面的特殊許可權,把擁有者的執行許可權(x)改為(s)予以區分

那這個SUID有什麼用呢,我們先來看一個檔案/etc/shadow的許可權

/etc/shadow這個檔案是保存系統用戶的密碼的,所以這個檔案只能是root用戶來強制寫入和讀取,

但是我們依然可以使用普通用戶去更改自己的密碼,按照正常來說,普通用戶是不能操作/etc/shadow檔案的,

那為什麼自己可以更改自己的密碼呢,其實這就是SUID的功能了。詳細分析如下

  1.普通用戶對/usr/bin/passwd是具有x許可權

  2.passwd的擁有者為root

  3.在普通用戶去執行passwd時,會自動升級為root,然後就可以更改密碼了

  4.執行完後,普通用戶失去root的功能

總結:簡單來說,就是擁有SUID的檔案在被普通用戶執行的過程中,普通用戶臨時升級為root用戶,具有root的功能,然後去執行,

SUID只能針對檔案,對目錄無效。

SGID:

1.針對於檔案:

同理,當s在群組的x上時就成為此檔案具有SGID的許可權,SGID可以針對檔案和目錄,對於檔案來說和SUID的功能差不多,就是在普通賬號執行的過程中獲得群組的許可權,如下

從上面可以看出檔案/usr/bin/locate具有SGID,註意它的群組為slocate,當普通賬號使用這個檔案時就會臨時獲得slocate群組的許可權,下麵看一個檔案

檔案/var/lib/mlocate/mlocate.db的群組也是slocate,並且群組可以讀取檔案的內容,不屬於群組的其他人不能讀取。

此檔案為系統里的資料庫文件,它包含系統本地所有的文件信息,如果大家查看不到這個檔案時,可以先執行updatedb命令更新資料庫後,此檔案就會自動生成。

而命令locate則是在這個資料庫文件中查找是否存在特定的文件檔案,所有說執行locate命令就是去讀取/var/lib/mlocate/mlocate.db的內容

那麼大家想想,如果我使用不屬於slocate群組的普通賬號去執行locate命令查找文件時能否成功訪問/var/lib/mlocate/mlocate.db嗎?

其實是可以的,因為這就是SGID的功能了

我在/home/test/目錄下新建了一個zyj123.txt的檔案,然後updatedb更新資料庫文件,然後執行locate命令查找在home/test/目錄下是否有zyj123這個檔案

結果查找到了文件,但是我用的是普通賬號zyj,按照一般情況是不能讀取/var/lib/mlocate/mlocate.db這個資料庫中的內容的,但是現在可以讀取,這就是SGID的功能。

2.針對於目錄:

SGID不僅能設置檔案,也可以對目錄進行設置,當目錄被設置為SGID後,有以下的功能

  用戶若對此目錄有r和x許可權,則用戶可以進入此目錄

  用戶在此目錄下的有效群組將會變成此目錄的群組

  用戶若對此目錄有w許可權,在此目錄下新建的檔案的群組變為此目錄的群組

說了這麼多,可能大家還是不太清晰的理解,我們舉個例子

在普通目錄下新建檔案,檔案的群組為賬號本身

但是當目錄設置了SGID後,在目錄下新建的檔案的群組將會變為目錄的群組,如下

當目錄設置SGID後,新建的檔案就變成了目錄的群組man了

SGID設置目錄主要運用在項目團隊開發中,例如可以新建一個團隊的目錄,將其設置SGID,那麼在這個目錄中新建的所以檔案的群組都是改目錄的群組了,

這樣屬於這個群組的用戶就都可以獲得對目錄中的檔案的相應許可權了。

SBIT:

如果在”其他人“的x許可權上變成t就說明被設置成了SBIT,這個只能對目錄進行設置,詳細如下

  如果用戶對此目錄有w,x許可權即可以對此目錄有寫入的功能

  當用戶在此目錄下新建檔案或者目錄時,僅有自己和root才有權刪除該檔案或者目錄

舉例如下:

從上面可以看出,當其他人對目錄具有寫的許可權時,其他人是可以刪除別人建立的檔案的

當目錄設置了SBIT後,就算其他人對目錄有寫的許可權,但是不能刪除別人建立的檔案

5.檔案隱藏屬性——chattr,lsattr

檔案除了有rwxrwxrwx這九個一般屬性外,還有隱藏屬性,隱藏屬性的設置就用chattr命令,一般常用加-ai的參數,其他參數大家可以自己試試

chattr  +i  命令可以將檔案保護起來,這樣即使是root用戶都不能刪除了

lsattr 命令就是用來查看隱藏屬性的,上面顯示i就證明已經被增加了保護功能

chattr  -i  命令就可以去掉保護功能


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

-Advertisement-
Play Games
更多相關文章
  • 一、環境 VMware12 Pro CentOS-6.7-i386-bin-DVD1 jdk-8u151-linux-i586 二、詳細安裝步驟 前提:需要卸載自己Linux上的jdk rpm -qa | grep jdk 會顯示你所有包含jdk這個字元串的安裝包 rpm -e --nodeps 對 ...
  • 一、Linux中的文件許可權與目錄許可權 Linux中定義了3種訪問許可權,分別是r、w、x。其中r表示對象是可讀的,w表示對象是可寫的,x表示對象是可執行的,這3種許可權組成一組rwx分別對應對象的3個安全級別。這3個安全級別分別是對象的所屬者,對象的所屬組,系統其他用戶。比如圖1-1所示,文件的許可權 圖 ...
  • 今晚心血來潮,來加加班,想起還有一個博客,索性來寫寫,步驟會比較清楚,畢竟我有輕微強迫症... 聲明下,用的是centos6 的系統環境,預設root許可權,部署過程中iptables關閉,之後根據需求配置策略,selinux也是預設關閉的, 關閉iptables : /etc/init.d/ipta ...
  • 1.單詞說明 command n. 命令,指令 [kə'mɑ:nd] 單詞拼寫 名詞 單詞含義 音標(發音) command n. 命令,指令 [kə'mɑ:nd] 單詞拼寫 名詞 單詞含義 音標(發音) 提示:著重記憶單詞對應的意思,有能力的朋友最好詞性也記憶 2.詞性說明 n v vi vt c ...
  • DNS 伺服器基礎 一、DNS簡介 DNS(Domain Name System,功能變數名稱系統)是網際網路的一項服務; DNS 是將功能變數名稱和IP地址相互映射的一個分散式資料庫; DNS 是一種應用層協議,使用UDP和TCP的53埠; 1、DNS域命名空間 DNS域命名空間是一種層次結構,一般可分為根域、頂 ...
  • 1首先來講講應用程式如何實現系統調用(用戶態->內核態)? 我們以應用程式的write()函數為例: 1)首先用戶態的write()函數會進入glibc庫,裡面會將write()轉換為swi(Software Interrupt)指令,從而產生軟體中斷,swi指令如下所示: 2)然後CPU會跳到異常 ...
  • 現在的公司一般都會有很多內部管理系統,比如OA、ERP、CRM、郵件系統等。員工入職之後如果每個系統都創建一個賬號和密碼,首先員工記系統賬號就是一件非常頭疼的事情,如果公司有一百個系統那就得創建一百個賬號(所在的公司就有估計200個系統、8萬員工)。就算我們用日記本把賬號統一記錄起來,可以解決賬號登 ...
  • 最近有個小項目需要安裝10台顯卡為Quadro K620的機子,期間查看了許多教程都不太完整,所以整理了一下,把自己成功的經驗分享給大家,給自己寫博客開個小頭,有問題可以留言。 系統版本:CentOS7 CUDA版本:CUDA-9.1 安裝方式:離線U盤拷貝,控制台界面,cuda.run包安裝(不需 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...