文件權限

 本篇博客是對文件權限的簡單介紹,將會簡述下權限的數字表現形式,還有字母表現形式,還有一些特殊的suid、sgid、sticky的權限介紹,還有對ACL權限的簡述。

 一、權限的定義

    關于權限,百度百科的解釋如下:權限(privilege)是指某個特定的用戶具有特定的系統資源使用權力,像是文件夾,特定系統指令的使用或存儲量的限制。通常,系統管理員,或者在網絡中的網絡管理員,對某個特定資源的使用分配給用戶不同的權限,系統軟件則自動地強制執行這些權限。所以,對于文件,也同樣有讀寫執行的權限,只有擁有了這些權限,才能進行操作,否則,也是無權進行操作的。
 二、權限的數字字母表現形式
1.chown  chgrp命令
  
    要先介紹下chown和chgrp命令,一個是設置文件所有者,一個是設置文件的屬組信息。
    chown owner.(:)group file  可以用此命令設置文件file的所有人file及所在組group的信息
    chown -R owner.(:)group file 指可以進行目錄的遞歸操作
    以上只有root才能修改文件的所有人,且owner必須屬于group
    charp group file   設置file的所屬組group
    charp -R group file 可以進行遞歸操作
2.文件的讀、寫、執行權限
    
    文件讀權限   r:十進制100 二進制4  cat、less、more、nano、vim、執行腳本需要讀權限 
    文件寫權限   w:十進制010 二進制2  nano、vim、>、>>、tee、gedit需要寫權限
    文件執行權限 x:十進制001 二進制1  執行腳本需要執行權限
    r w x組合的意義:
    r: 用戶可以列出目錄下有哪些文件(不能查看文件的詳細信息)
        w: 只有w無意義。
        x: 用戶可以進入該目錄(如果知道文件名,且有相對應的文件權限 ,可以執行對應的操作)
        rx: 用戶可以進入目錄,且可以長列出。
        rw:等于只有r
        wx: 能進入,能創建能刪除,不能列出。故用戶能否刪除文件與文件自身權限無關。
        rwx: 全部權限。
        —:null
    chmod 權限的修改命令
    u代表user g代表group o代表other
    ①chmod ugo+rwx 
        可以直接在u g o上直接加權限(文件加執行權限是很危險的,可以用chmod ugo+X只給目錄加執行權限)
    ②chmod u=…,g=…,o=…
        直接修改u g o的權限
    ③chmod 777
        直接用數字來修改file權限r=4 w=2 o=1,用rwx的組合
    umask
    文件權限最大666   目錄權限最大是777
    umask    root用戶=002  普通用戶=022
    權限值=權限最大值-umask(當umask中包含奇數時,對于目錄直接減,對于文件,在奇數所在的位減完后加一。)
3.文件的suid、sgid、sticky權限
    
    suid權限是一種特殊的權限,舉個簡單的例子,用戶的密碼存在于/etc/passwd目錄中,但是該文件的權限是r——–,即400,只有文件所有人和root用戶才能修改密碼,但是普通用戶怎么修改自己的密碼呢?所以引入了suid權限,即普通用戶可以以文件所有者的身份對文件進行修改,用ll命令長列出文件信息時,會發現在user的執行權限位上是s,這個就是suid權限。
    sgid和suid同理,只是一個是以所有人身份運行,一個以所有組身份運行。
    Sticky屬性只能應用在目錄,當目錄擁有Sticky屬性所有在該目錄中的文件或子目錄無論是什么權限只有文件或子目錄所有者和root用戶能刪除。比如當用戶test在“/app”目錄中建立一個文件并將該文件權限配置為777,當/charles目錄擁有Sticky屬性時,只有root和test用戶可以將該文件刪除。在使用ll命令瀏覽目錄時,如果其他用戶權限的第三位是一個小寫的“t”就表明該執行文件或目錄擁有Sticky屬性。
    配置普通權限時可以使用字符或數字,SUID、SGID、Sticky也是一樣。使用字符時s表示SUID和SGID、t表示Sticky;4表示SUID、2表示SGID、1表示Sticky。在配置這些屬性時還是使用chmod命令,數字和字母都可以用。
    例如:chmod 7777 file   chmod u+s file  
三、ACL權限
1.ACL權限的簡單定義

    傳統的權限僅有三種身份(owner,group,others)搭配三種權限(r,w,x)以及三種特殊的權限(SUID,SGID,SBIT),隨著應用的發展,這些權限組合已不能適應現在復雜的文件系統權限控制要求,所以引入了ACL(Access Control Lists)權限。舉個簡單的例子:目錄data的權限為:rwxr-x—,所有者與所屬組均為root,在不改變所有者和所屬組的前提下,要求用戶mage對該目錄有完全訪問權限(rwx),但又不能讓其他有用完全權限(rwx)。這個要求看似不能實現,這就看出來傳統的權限管理設置有時候也會力不從心。這時候,我們就可能通過ACL來實現。ACL可以針對單個用戶,單個文件或目錄來進行r,w,x的權限設定,特別適用于需要特殊權限的使用情況。但是ACL權限只支持linux:ext2 ext3 ext4 xfs vfat ntfs的文件系統。
2.如何查看ACL權限是否開啟

    CentOS7當中,無論是操作系統安裝時還是之后手工創建的文件系統(xfs、ext4)均會開啟ACL功能。
    CentOS6及之前的版本,僅操作系統安裝時創建的文件系統才會默認開啟ACL,手工創建的文件系統,需要手工開啟ACL功能。
      mount -o acl /dev/sda7  取消的方式,重新掛載時不指定即可
      mount -o remount,acl /dev/sda7
         以上兩種方式開啟的ACL可以通過mount |grep sdaX查看
      創建: tune2fs -o acl /dev/sda7 
      取消: tune2fs -o ^acl /dev/sda7
         使用以上方式開啟的ACL可以通過tune2fs -l /dev/sda7 |grep option查看
3.關于ACL權限命令
    
    setfacl -m u:liubei:rwx f1  設置ACL user
    setfacl -m g:shuguo:rwx f1  設置ACL group
    setfacl -M acl.txt f1
        acl.txt 內容來自getfacl f1 > acl.txt(把ACL權限導入文件acl.txt),文件如下
            # file: fstab
            # owner: root
            # group: root
            user::rw-
            user:zhangfei:rwx
            group::r–
            mask::rwx
            other::r–
    setfacl -Rm u:zhangfei:rwx acltest/   遞歸設置user權限
    setfacl -m mask:rwx f1
    或 chmod g=rwx f1 一旦設置了ACL權限后,原有的文件group不可再更改,使用chmod即修改ACL mask
    ACL mask隨著新的ACL設置會被重置,重置的標準是讓該文件上的所有ACL及文件原group上的權限都有效。
    setfacl -x u:liubei f1  單獨去除一條ACL權限
    setfacl -X aclrm.txt f1[ f2 f3 *]
        aclrm.txt 內容如下
            u:liubei
            g:shuguo
    setfacl -x d:sunquan d11 刪除一條默認權限
    setfacl -k d1 刪除全部默認權限
    setfacl -b d1 刪除ACL屬性

    getfacl -R /tmp/dir1 > acl.txt  將目錄下的所有文件的ACL屬性備份到文件
    setfacl -R -b /tmp/dir1            清除目錄下所有文件的ACL屬性
    setfacl -R –set-file=acl.txt /tmp/dir1   通過文件還原ACL屬性的方法1
    setfacl –restore acl.txt    通過文件還原ACL屬性的方法2

以上便是本篇博客的全部內容,如有什么問題還請各位大牛幫忙提出,謝謝!

原創文章,作者:Mr.DONG,如若轉載,請注明出處:http://www.www58058.com/82987

(0)
Mr.DONGMr.DONG
上一篇 2017-07-29
下一篇 2017-07-29

相關推薦

  • 第五周作業

    1. 顯示當前系統上root、fedora或user1用戶的默認shell; grep -E "^(root|centos|user1)\>" /etc/passwd 或 awk -F: '{if($1=="root" || $1==…

    Linux干貨 2017-01-10
  • 負載調度器:調度算法

    調度算法(ipvs scheduler) 起點公平:平均分配,不管分別干的怎么樣。 結果公平:誰現在還剩下的在處理的少,就分配給誰。      根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種: 靜態方法 靜態方法:僅根據算法本身進行調度; RR      …

    2016-10-28
  • 用戶權限管理

    描述: 用戶在系統上的操作受到權限的約束,例如對文件或者目錄進行查看、修改、復制、刪除等操作時,由文件或者目錄對應的操作的權限所決定的。 在root的家目錄下創建一個普通文件和目錄并查看其屬性: [root@localhost ~]# echo 123 > file1 [root@localhost&n…

    Linux干貨 2016-08-04
  • 遷移分區

          1 備份/home    2 創建分區 /dev/sdc1 10G   [root@localhost ~]# du -sh /home   52K /home   3 格式化分區   [root@localhost …

    Linux干貨 2017-04-25
  • grep命令

    grep命令:grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來;grep搜索的結果被送到屏幕,不影響原文件內容。Unix的grep家族包括grep、egrep和fgrep…

    Linux干貨 2016-08-08
欧美性久久久久