文件的權限和訪問控制列表

  在linux管理中,為了使不同的用戶對文件有不同的操作權限。我們需要正確的修改文件的權限,一方面是為安全著想,

另一方面則是防止自己辛辛苦苦碼出的東西被其它用戶給誤刪。

1.如何修改文件的屬主和屬主:

  前面用戶和組管理的內容中,我們已經對文件的屬主、屬組問題做了說明。有時候我們需要對一些文件的屬組和屬組進行修改,

這里會用到兩個命令:chgrp和chown命令。

 (1)修改文件的屬組:chgrp

    chgrp [OPTION]… GROUP FILE..

    chgrp [OPTION]… –reference=RFILE FILE…

        -R 遞歸修改文件夾及其下的文件的屬組

 (2)修改文件的屬主和屬組:chown

    chown [OPTION]…[owner][:[GROUP]] FILE…

    用法:

        owner

        owerner:group

        :group

        命令中的冒號可用.替換;

        -R:遞歸

        chown [OPTION]… –reference=RFILE FILE…

2.文件的權限:

    文件的權限是文件屬主,屬組及其它用戶擁有對文件的操作權限的顯示。

 (1)文件:

     r:可使用文件查看類工具獲取其內容

     w:可修改其內容

     x可以把此文件提請內核啟動為一個進程

 (2)目錄:

     r:可以使用ls 查看此目錄中文件列表

     w:可在此目錄中創建文件,也可刪除此目錄中的文件

     x:可以使用ls -l查看此目錄中文件列表,可以cd進入目錄

     X:只給目錄x權限,不給文件x權限(在其下創建的目錄都有x權限,而文件沒有)

 (3)文件權限數字表示:

    r(讀):100:4; w(寫):010:2; x(執行):001:1;

 (4)修改文件的權限

    chmod命令:

    使用方法:

       chmod [OPTION]… OCTAL-MODE FILE…

    -R:遞歸修改權限

      chmod [OPTION]… MODE[,MODE]… FILE…

    MODE:

    修改一類用戶的所有權限

    u= g= ug= a= u=,g=

    修改一類用戶某位或某些位權限

    u+ u- g+ g- o+ o- a+ a- + –

    chmod [OPTION]… –reference=RFILE FILE…

    參考RFLE文件權限、,將FILE的修改為同RFILE;

 (5)umask:

     umask是用來設定新建文件和目錄的默認權限

     新建FILE權限:666-umask;如果結果中哪一位存在權限位為奇數情況,則把它的權限+1

     新建DIR權限:777-umask

     在linux中系統給我們默認的root的umask是022,非root的umask是002

     umask命令不加參數可以用來查看系統umask值。umask #:臨時自定義umask的值。永久生效需寫進配置文件

     umask -S 模式方式顯示umask,umask -p 輸出可被調用,如:umask -p > /etc/bashrc

     全局設置寫入:/etc/bashrc:用戶個人設置則在:~/.bashrc中修改

    

 (6)文件權限相關的課堂練習:

     1)當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作?

     用戶小明不能進入/testdir,不能刪除,不能創建。使用ll能看到有哪些文件,但是看不到具體信息

     2)當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作?

     不能查看文件夾內部有哪些文件,如果知道文件夾內有哪些,則可以刪除,也可以在里面創建

     3)當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除?

     不能刪除,對目錄無寫權限,說明不能刪除目錄中包含的file1的文件名和inode的對用關系

     因為文件只讀,所以也不會有修改權限

     如果wangcai對目錄有寫權限,則能夠刪除文件,但是還是不能修改文件

    4)復制/etc/fstab文件到/var/tmp下,設置文件所有者為wangcai讀寫權限,所屬組為sysadmins組有讀寫權限,其他人無權限

            ]# cp /etc/fstab /var/tmp/            
            
            ]# groupadd sysadmins
            ]# chmod 660 fstab
            ]# ll
            total 4
            -rw-rw---- 1 ci sysadmins 921 Aug  4 20:52 fstab

3.linux文件系統上的特殊權限:

 (1)安全上下文

    前提:進程有屬主和屬組;文件有屬主和屬組

     1)任何一個可執行程序能不能啟動為進程:取決于發起者對程序文件是否擁有執行權限

     2)啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

     3)進程訪問文件的權限,取決于進程的發起者

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

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

          應用文件‘其它’權限

 (2)可執行文件上SUID權限

     1)任何一個可執行程序文件能不能啟動為進程:取決于發起者對程序文件是否擁有執行權限

     2)啟動為進程之后,其進程的屬主為原程序文件的屬主

     3)SUID只對二進制可執行程序有效

     4)SUID設置在目錄上無意義

     5)權限設置:

        chmod u+/-s FILE…

 (3)可執行文件上的SGID權限

    1)任何一個可執行文件能不能啟動為進程:取決于發起者對程序文件是否擁有執行權限

    2)啟動為進程之后,其進程的屬主為原程序文件的屬組

    3)權限設置:

        chmod g+/-s FILE…

 (4)目錄上的SGID權限

     1)默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組

     2)一旦某目錄被設置了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組

     3)通常用于創建協作目錄

    4)權限設定:

        chmod g+/- DIR…

 (5)Sticky位

     1)具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該問及愛你的權限或擁有權

     2)在目錄設置Sticky位,只有文件的所有者或root可以刪除該文件

     3)Sticky設置在文件上無意義

     4)權限設置:

chmod o+/-t DIR…

 (6)特殊權限數字法:

     SUID:4; SGID:2;Sticky:1;

     chmod 4777 /tmp/a.txt

     特殊權限中的SUID占據屬主的執行權限位,屬主有執行權限則為s,屬主無執行權限則是S

     SGID在屬組的執行權限位,也是用s字母表示。屬組有執行權限則為s,屬組無執行權限則是S

     Sticky在other的執行位:other有執行權限則是t,other無執行權限則是T

3.設定文件特殊屬性:

     命令chattr:設置文件的特殊屬性,對文件的修改做更嚴格的限制

     chattr +i 不能刪除,改名,更改

     chattr +A 不修改文件的訪問時間(atime不變)

     chattr +a 只能增加

     lsattr 顯示特定屬性

取消則是把+改為-

4.訪問控制列表:

 (1)ACL:Access Control List,實現靈活的權限管理

 (2)除了文件的所有者,所屬組和其它人,可以對特定的用戶設置權限

 (3)CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。

 (4)CentOS7.x之前的版本,默認手工創建的ext4文件系統無acl功能,需要手動添加

    tune2fs -o acl /dev/sdb1

    mount -o acl /dev/sdb1 /mnt

 (5)ACL生效順序:所有者,自定義用戶,自定義組,其它人

 (6)為多用戶或者組文件和目錄賦予訪問權限rwx

     mount -o acl /DIR 使掛載在該目錄下的文件系統擁有acl功能

     getfacl file|DIR 查看文件或目錄的acl信息

     setfacl -m u:wang:rwx file|dir 設置文件或目錄的對wang用戶的權限位讀寫執行

     setfacl -Rm g:sales:rwX DIR 遞歸設置組對目錄的訪問權限

     setfacl -M file.acl file|dir 以文件的形式批量修改文件或目錄對多個用戶的訪問權限

     setfacl -m g:salesgroup:rw file|dir 設置salegroup組對文件或目錄的訪問權限

     setfacl -m d:wang:rw dir  設置默認的acl權限,只針對新文件

     setfacl -x u:wang file|dir 刪除文件或目錄的acl設置

     setfacl -X file.acl dir 批量刪除acl設置

 (7)ACL文件上的group權限是mask值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限

 (8)默認ACL權限給了x,文件也不會繼承x權限,base ACL不能刪除

 (9)setfacl -k dir 刪除默認ACL權限,setfacl -b file1 清除所有ACL權限

 (10)getfacl file1|setfacl –set-file=- file2 復制file1的acl權限給file2

 (11)mask只影響所有者和other之外的人和組的最大權限,MASK需要和用戶的權限進行邏輯與運算后

    才能編程有限的權限(Effective Permission)

    用戶或組的設置必須存在與mask權限設定范圍內才能生效

        setfacl -m mask::rw file

    –set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的位置,和-m選項添加ACL有一定區別

        setfacl –set u::rw,u:wang:rw,g::r,o::- file1

 (12)訪問列表的備份和還原:

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

     和文件的ACL信息

     getfacl -R /tmp/dir1 > acl.txt 備份dir1目錄下 文件的ACL信息到acl.txt中

     setfacl -R -b /tmp/dir1 刪除dir1目錄下文件的acl列表

     setfacl -R –set-file=acl.txt /tmp/dir1 恢復dir下的acl列表

     getfacl -R /tmp/dir1 遞歸顯示dir1下文件的acl列表

    

問題:在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。

    ]# mkdir -p /data/testdir
	]# groupadd g1; groupadd g2; groupadd g3
	]# useradd alice;useradd tom
	以上為創建目錄、用戶、組的初始化準備工作
	]# gpasswd -a alice g2;gpasswd -a tom g3
	]# setfacl -m d:alice:rw  ../testdir #
	]# setfacl -m d:tom:r  ../testdir
	]# setfacl -m d:o:0  ../testdir
	]# getfacl ../testdir
	# file: ../testdir
	# owner: root
	# group: root
	user::rwx
	group::r-x
	other::r-x
	default:user::rwx
	default:user:alice:rw-
	default:user:tom:r--
	default:group::r-x
	default:mask::rwx
	default:other::---
	]# touch f1
	]# getfacl f1
	# file: f1
	# owner: root
	# group: root
	user::rw-
	user:alice:rw-
	user:tom:r--
	group::r-x                      #effective:r--
	mask::rw-
	other::---

	[root@CentOS6 testdir]#

原創文章,作者:提著醬油瓶打醋,如若轉載,請注明出處:http://www.www58058.com/29243

(0)
提著醬油瓶打醋提著醬油瓶打醋
上一篇 2016-08-04
下一篇 2016-08-05

相關推薦

  • shell編寫的linux命令練習工具

    linux常用命令加選項,有成百上個,僅僅靠背誦忘記得太快,所以寫了此腳本,便于對linux命令的練習,希望能幫助到大家。 運行腳本效果如下: 上邊兩圖一個是運行腳本時的截圖,另一個為題庫的格式(@做分隔符,所以如果題目中有@一定要替換掉) 下面附上源碼 #!/bin/bash#版本號:1.0 #作者:Mr.L #WX:504498722FILE=/root…

    2017-03-19
  • Linux基礎知識(三)

    1、列出當前系統上所有已經登錄的用戶的用戶名(多次登錄的用戶,只顯示一次即可) [root@bogon ~]# w |grep -E ".*(pts|tty).*"|awk '{print $1}'|uniq 2、列出最后登錄到當前系統的用戶的相關信息 [root@bogon ~]# last -aF 3、取出當前系統…

    Linux干貨 2016-10-09
  • Linux網絡屬性配置,計算機基礎

    Linux網絡屬性配置,計算機基礎 Linux網絡屬性配置(1): 計算機網絡通信:TCP/IP 通過流式化數據相互通信,通過雙方一致的時鐘頻率來完成信號傳輸; 有兩種方式傳輸:同步傳輸,異步傳輸; 借助于介質傳輸:同軸電纜、網線、無線等; 要想相互通信,也要必須遵循一種(復雜)組織機制,就產生了協議; 通過把協議分層,來分別解決傳輸過程中各種復雜的操作; …

    Linux干貨 2016-09-05
  • Linux網絡屬性管理

    Linux網絡屬性管理 linux的網絡配置方法有多種,而且隨發行版及版本而略微不同。我目前的測試環境為CentOS6和CentOS7。 常用的網絡配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。 首先:命令方法介紹 一、命令簡介 ifconfig:是個比較傳統的命令,可以配置網絡接口的啟用及關閉,IP地址等…

    系統運維 2016-05-29
  • 第7天:磁盤文件管理

    http://note.youdao.com/yws/public/redirect/share?id=57ab13d4749920de1fbb0d4953fcd21b&type=false

    Linux干貨 2016-08-18
  • vim編輯器

      在linux系統中使用文本編輯器來編輯你的配置文件是一件很重要的事。vim是linux最常用的文本編輯器,具有以下優勢:所有的linux都內置vi文本編輯器。很多軟件都會主動調用vi,如crontab、visudo等. 所以我們必須學好vi,vim分為以下3種模式:   一般模式: 用 vi打開一個文件時,一進入該文件就是一般模式了?!?/p>

    Linux干貨 2016-06-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-07 23:42

    對命令的總結很詳細,如果有一些應用場景模擬會讓你對各個權限理解會更深刻哦

欧美性久久久久