Linux文件系統權限詳解

一、綜述

在用戶和組的管理中介紹了Linux系統是用戶多任務的分時操作系統,這意味著同時可以有多人在同一臺pc上進行不同的操作。為了能夠保護每個用戶的數據安全,針對不同的用戶設置相應的權限是非常重要的。

Linux文件系統權限主要針對三類用戶:

文件的所有者: owner,用u標識

文件的所有組:group,用g標識

其他人: other,用o標識。不包含在文件所有者和所有組內的系統其他用戶。

二、文件權限及從屬關系修改

       1、查看文件權限

       使用ls –l可以查看。以

blob.png

       1.1文件類型:

普通文件—f;目錄文件—d;塊設備文件—b;字符設備文件—c;軟連接文件—l;套接字文件—s;管道文件—p

       1.2文件權限:

              讀—r  readable

              寫—w writeable

              執行—x。excutable(比如腳本、二進制文件、目錄等文件具有此權限)

本文主要就文件權限進行解釋以及對文件屬組、屬主、權限的修改做相關介紹。其他內容暫不做介紹。

    2、對于文件和目錄來說,rwx代表的權限是不一樣的。

rwx對文件來說:

       r: 代表可以使用文件查看類命令來查看文件內容,比如cat、less等。

       w:代表可以通過編輯器等修改文件內容。比如vim、nano、重定向等。

       x: 代表可以把此文件提交給內核啟動為進程。

rwx對目錄來說:

       說明下,目錄也是一種文件,存放的是下屬的文件與inode節點的對應關系。

       r: 可以通過ls查看文件內容

       w:可以在該目錄下創建文件或刪除文件

       x:可以通過cd命令進入該目錄,以及通過ls –l查看目錄下屬文件的詳細信息。 

3、文件權限的表示方法:

       文件的權限是3個字符一組的。分別對應所有者、所屬組、其他人的權限

blob.png

權限、二進制、八進制表示如下表

blob.png

例如:/etc/passwd的權限rw-r–r–可以表示為: 644

4、文件權限的修改

       通過chmod命令修改。用法為:

              chmod  [OPTION]…  OCTAL-MODE  FILE…   

                     常用options有:

-R 表示遞歸修改,長用于包含多個文件或子目錄的目錄權限修改。

–reference=source_file 參考某文件的權限來修改

4.1修改權限的方式一:

       可以針對屬主、屬組、other單獨修改: chmod  u=|g=|o=  file/dir

也可以組合修改: chmod  ug=|go=  file/dir

例:在某目錄下有test.file文件,對其進行權限修改

blob.png

4.2 方法二:

使用八進制來修改。上圖中文件的權限為664,將其修改為屬主、屬組、other都具有r、x權限。

blob.png

4.3 方法三:

參考某文件的權限進行修改。如:新建文件new.file,參考test.file將其權限修改與test.file一致。

blob.png

5、修改文件從屬關系

5.1 修改屬主、屬組。chown命令

chown  [options] username:groupname  filename

       常用options:-R 遞歸,用于目錄

chown  root  testfile :修改文件的屬主

chown  root:admins  testfile:修改文件的屬主和屬組

chown  :admins  testfile:修改文件的屬組

例:將test.file 屬主、屬組修改為hadoop,new.file屬組修改問gentoo

blob.png

5.2 chgrp (change group的縮寫,顧名思義,只能修改文件的屬組)

chgrp  grouname  file

       常用參數:-R:遞歸,用于目錄

三、umask介紹

       umask指在創建文件或目錄時的默認權限。

              1、新建的文件默認權限:666-umask

                     一般來說,文件默認不允許包含x權限,如果所得結果某位存在執行(奇數)權限,則將其權限+1

              2、新建的目錄默認權限:777-umask

查看umask:umask

       blob.png

設定umask:umask #

       blob.png

umask –p:輸出可被調用

五、linux文件系統的特殊權限

       權限針對owner、group、other,特殊權限也分別針對這三類用戶。

owner、group、other分別對應SUID、SGID、STICKY。

5.1 SUID介紹

       要了解SUID的應用,先來了解下安全上下文。

安全上下文:任何一個可執行文件能不能啟動為進程,起決于其發起者對程序文件是否有可執行權限。啟動為進程后,進程的屬主為發起者,進程的屬組為發起者所屬的組。進程訪問文件時的權限,起決于進程的發起者:

1、 進程的發起者,同文件的屬主,則應用文件屬主權限

2、 進程的發起者,屬于文件的屬組,則應用文件屬組的權限

3、 應用other的權限

應用場景:當一個用戶要以程序文件的的屬主身份發起進程,并且訪問文件時。比如:passwd命令可以修改用戶的密碼,但是普通用戶對/etc/passwd沒有讀權限,對/etc/shadow是沒有任何權限的。但是普通用戶又能成功修改密碼,這是因為,passwd文件具有SUID權限。

blob.png

 

 設置和取消SUID權限。

 chmod  u+s  file  設置SUID

 chmod  u-s  file  取消SUID

blob.png

當文件的屬主具有x權限是,SUID表現為s,當沒有SUID權限時,表現為S。

需要注意的是。具有SUID的程序文件運行為進程訪問文件是通過程序文件的屬主來對比權限的,在給屬主為root的文件設置SUID時應考慮到到對系統的破壞性,建議慎用。

5.2 SGID介紹

       當多個成員共同參與一個項目,該項目有專用的目錄來存放項目文件,目錄的屬組為項目組。這時,項目成員在該目錄下創建的目錄分別為自己的基本組,對于項目組管理來說帶來不便。

若為此目錄設置設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組。這就是SGID的作用。

SGID的設置方法:

chmod g+s DIR…

chmod g-s DIR…     

5.3 STICKY介紹

       若一個用戶對某目錄具有rwx權限時,意味著他可以刪除該目錄下其他用戶的文件,在項目協作的目錄中,要使用戶只能刪除自己所有的文件,其他文件可以修改但是不可刪除。這就需要設置STICKY權限。

權限設定:

chmod o+t DIR…

chmod o-t DIR…

5.4 權限位映射:

     SUID: user,占據屬主的執行權限位

s: 屬主擁有x權限

S:屬主沒有x權限

    SGID: group,占據屬組的執行權限位

s: group擁有x權限

S: group沒有x權限

   Sticky: other,占據other的執行權限位

t: other擁有x權限

T: other沒有x權限

六、訪問控制列表

       ACL(Access Control List)

除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限,實現靈活的權限管理。

6.1 設置ACL

setfacl  –m  u|g:username|groupname:mode  file:為某用戶或組設置acl。

setfacl  -M  acl_file  file:使用acl_file里面的配置來設置文件的acl

setfacl  -x  user  file:刪除指定文件指定用戶的acl

setfacl  -X  acl_file  file:參考cal_file刪除指定文件的acl配置

mask的權限也可通過修改屬組的權限來修改,屬組的權限和mask權限同步

setfacl  -m  mask::mode file

setfacl  -m  d:u:username:mode  dirname:對一個目錄設置defaults權限,在目錄先新建的文件將繼承此權限

setfacl  -k  file/dir:刪除默認的acl權限

mask:除了所有者和other,其他用戶的權限不能高于mask定義的權限;

setfacl  -b f ile/dir:刪除所有的acl權限(包括屬組的權限,通過setfacl新增的用戶、組的權限等)

setfacl  acl.txt | setfacl  -M-  newacl.txt:參考文件1的acl來設置文件2的acl

 

例:設置/gramdir /programfile1的權限,使hadoop用戶不具有寫、執行權限,program組具有讀寫權限,使新建文件自動具有acl權限:gentoo用戶具有rw權限;sysadmins組具有r權限。

 blob.png

查看:getfacl  filename

blob.png

 blob.png

6.2 acl的備份和恢復

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息。

#getfacl -R /tmp/dir1 > acl.txt

#setfacl -R -b /tmp/dir1

#setfacl -R –set-file=acl.txt /tmp/dir1

#getfacl -R /tmp/dir

例:備份gramdir目錄中所有文件的ACL,清除gramdir的所有ACL權限,并利用備份還原

blob.png

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/28347

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-08-04 14:40
下一篇 2016-08-04 14:40

相關推薦

  • 十四.Linux博客-2016年8月22日數組

    格式說明: 操作 概念 命令 說明及舉例 十四.數組 數組概念 變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。數組名和索引索引:編號從0開始,屬于數值索引注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。bash的數組支持稀疏格式(索引不連續) 聲明數組declare -…

    Linux干貨 2016-08-24
  • 手動創建掛載交換分區

    SWAP分區 SWAP [root@cloud ~]# fdisk /dev/sdb Command (m for help): d Selected partition 1 Command (m for help): w The…

    Linux干貨 2016-06-09
  • Linux啟動流程

    Linux的啟動流程有以下部分組成,以下流程以CentOs 6.8為例 1、POST加電自檢,檢測各項硬件工作是否正常,BIOS選擇啟動設備。 2、根據設備的前446字節,加載bootloader程序 3、initramfs是1.5階段,intramfs文件是創建系統時生成的文件。intramfs是一個過渡階段,initramfs加載系統的一些設備驅動,比如…

    2017-05-15
  • history          每打開一個終端都會從文件(.bash_history)中加載歷史記錄           不同終端歷史記錄不同彼此終端不共享 …

    2017-07-15
  • mariadb數據庫的主從復制

    mariadb的主從復制

    2018-02-27
  • hello! 我的博客第一站

    大家好!  這是我進博客的第一天,一個剛進來的新司機。在這里我就不秀我的車技了,只希望各位老司機開車不要太快,我暈車      —— 生命不息,奮斗不止

    Linux干貨 2017-07-11

評論列表(1條)

  • rex
    rex 2016-08-04 23:00

    對命令的常見用法總結的很好,SUID,SGID,Sticky的應用場景給出一些示例來,能讓讀者更清晰哦。

欧美性久久久久