文件權限

一、文件權限

       linux系統中文件眾多,針對不同的文件面向的對象不同,因此對其設置的權限各不相同,那么我們來對文件設置權限呢?

        1470484917439742.jpg

            如上圖所示,文件的權限主要分三個部分:r、w、x

                                文件面向的對象有三類:屬主,數組和other

           rwx權限分別對于應文件和目錄的意義如下:

            對于文件:

                            r:可以ls,可以cat

                            w:可以修改文件中的內容,可以ll,如果其父目錄具有wx權限可以刪除文件

                            x:可以執行二進制程序

            對于目錄:

                            r:可以ls

                            w:可以在目錄中創建文件,但需要配合x使用

                            x:可以cd到目錄,可以訪問目錄中的文件

  

        相關命令:chmod    chown   chgrp

        chmod:修改權限

                格式:

                          chmod [option] file | dir

                          chmod u+rwx file

                         chmod a+rwx file    a—-ugo

                          chmod u=rwx file

                          chmod 777 file

                注意:當我們執行給文件添加X權限時,如果該文件之前權限有一位x,則可以添加x權限,如果一位x權限都沒有,則不能添加x權限。

                          目錄不受影響

                               rwxr–r– –>chmodrwxrwxrwx
                               ——— –>rw-rw-rw-

                選項:

                          -R 遞歸

                          –reference=RFILE FILE…   參考RFILE文件的權限,修改FILE的權限與RFILE一致

        chown:修改屬主和屬組

                格式:

                           chown  tom:harry f1

                           chown tom f1       修改屬主為tom

                           chown tom: f1      修改屬主和屬組為tom

                           chown :harry f1    修改屬組為tom

        chgrp:將文件的屬組

        umask:我們發現在我們創建文件或目錄時,他們都會有一個默認的權限,這個權限就是通過umask來設置的,umask這個值管理員默認是022,普通用戶是002,當我們在配置文件(/etc/profile、/etc/bashrc、也可以是用戶自己的.bashrc)中配置umask的值時,就可以定義用戶創建文件或目錄時的默認權限,也可以說是限制了ugo的權限。

                管理員文件的權限和umask的關系為:666-022=644,如果計算結果中有基數,則加1,例如666-123=543 ->644,這里加1主要是為了避免給用戶提供文件的執行權限,將執行權限屏蔽。

                管理員目錄的權限和umask的關系為:777-022=755

                umask -S  查看文件夾的默認權限

                umask -p 輸出可以被調用

                umask # 可以設置默認值的大小臨時生效

二、文件系統的特殊權限

        當我們用tom的身份執行cat /etc/passwd 時,我們的匹配權限的流程是,先匹配/etc/passwd 這個文件的屬主,該文件的數主是root與tom不是同一個,不匹配,接著匹配文件的數組,發現也不匹配,接下來就到other的權限了,我們發現other的權限為r,所以我們就以other的身份來訪問/etc/passwd 這個文件了,這里需要注意的是,當我們從前往后匹配的時候,如果匹配到權限就不往后面匹配了,就算后面的數組或者other的權限比數主大,也不匹配。

            tom@cenots6.8  ~ # ll /etc/passwd
            -rw-r--r--. 1 root root 1849 8月   6 17:44 /etc/passwd
            tom@cenots6.8  ~ # cat /etc/passwd

特殊權限  

suid

            面向對象:二進制程序 

            格式:chmod u+s file  、 chmod 4### file

            作用:用戶發起進程訪問文件時,不在是以用戶自己的身份來訪問,而是以進程屬主的身份來訪問。        

            應用場景:passwd 所有用戶都需要執行的二進制程序,直接給管理員的程序,不用單獨給某些用戶添加加權限。

             -rwsr-xr-x. 1 root root 30768 11月 24 2015 /usr/bin/passwd   —–此時我們就是以passwd的數主roor身份運行,而不是當前用戶的身份。

        sgid

             面向對象:文件、目錄

            格式: chmod g+s file | dir   、 chmod 2### file | dir

             作用:

                    目錄:用戶在該目錄下創建文件時,文件的屬組不在是以自己的身份創建,而是以該目錄數組的身份創建。

                    文件:用戶發起進程訪問文件時,不在是以用戶自己的身份來訪問,而是以進程屬組的身份來訪問。

             應用場景:

                    目錄:比如組內同事,以某一特定的權限共享將一些文件或目錄給大家,這樣避免單獨給多個文件分別設置權限。

        sticky

            面向對象:目錄 

            格式:chmod o+t dir   、chmod 1### dir

            作用:用戶在該目錄下可以自由的創建改文件,但是不能刪除非自己創建的文件

            應用場景:/tmp 所有用戶都可以編輯,但是不能刪除別人的文件

    注意:在給文件添加uid gid sticky位后,如果對應的位為S或T,則表示該文件之前具有x權限,如果對應的對時s或t,則表示文件沒有x權限。

三、訪問控制列表

        通常我們訪問文件時,是以屬主、屬組或其他的身份訪問的,當我們想單獨給某一個用戶設定權限時,可通過ACL訪問控制列表來進行設置。

        相關命令:setfacl 、getfacl 、mask

        setfacl:

                選項:

                    -Rm(遞歸指定權限):u(指定用戶):user1(用戶名):rwx(權限) dir   

                    -x(取消權限):g(指定組) file | dir

                    -M file.txt  file|dir –>   文件格式:u:wang:0         指定文件中用戶或組acl權限
                                                                    u:wangcai:rw
                                                                    g:it:rw

                     -X file.txt file|dir                                                   取消文件中用戶或組acl權限

                    -x:d:u:user:rwx                                            對新建的文件具有的acl權限

                    -b file | dir:清除所有acl權限

                    -k file | dir:清除默認acl權限

                    –set選項會吧原有的acl項都刪除,用新的替代,需要注意的時一定要包含ugo的設置,不能像-m一樣添加acl就可以    

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

    

    getfacl file | dir:查看文件或目錄的acl權限

    getfacl -R dir > acl.txt    將dir目錄及其子目錄的acl權限記錄到acl.txt文件中

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

       mask:是在指定給某些用戶或者組設置ACL權限時,針對除了屬主和other之外的人,其中
包括屬組和添加ACL的用戶和組,限制了他們的權限,不能超過mask的權限,mask在使用時需要注意的是,當我們設置了ACL權限時,如果設置組的權
限chmod g=rw file|dir,等同于設置了mask的權限,此時所有設置了ACL權限的人和文件或目錄的數組都會改變。

       ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限) ,而非傳統的組權限,改變group權限,mask也會變。
       默認ACL權限給了x,文件也不會繼承x權限,這就是為什么針對file文件給user1用戶指定rwx權限時,我們getfacl file查看mask權限為rw-的原因。

        mask的設置方法:setfacl -m m::rw file

                                    setfacl -m mask::rwx file

    當我們通過tar命令打包文件時,是不能像cp -p|-a 一樣保存元數據屬性,我們可以采取如下備份和恢復訪問控制列表的方法:

            getfacl -R /tmp/dir1 > acl.txt
            setfacl -R -b /tmp/dir1
            setfacl -R –set-file=acl.txt /tmp/dir1
            getfacl -R /tmp/dir1

     設定文件特定屬性
            chattr +A 鎖定不能修改時間
                       -A 解鎖
                      +i 不能更改刪除改名 只能讀
                      +a 只能修改內容
            lsattr 顯示特定屬性(chattr都設置了那些屬性)

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

(0)
NarutoNaruto
上一篇 2016-08-08 09:22
下一篇 2016-08-08 09:43

相關推薦

  • 馬哥教育第一天記

    一天學習心得和記錄

    Linux干貨 2018-03-26
  • 壓縮工具

     壓縮和解壓縮工具和bash腳本編程      壓縮比        目的:時間換空間        cpu的時間—>磁盤空間        compress/uncompress.…

    Linux干貨 2016-12-31
  • haproxy 簡單實現80轉后端8000

    一,安裝 yum -y install gcc automake autoconf libtool make tar -xzf haproxy-1.6.8 cd haproxy-1.6.8 make TARGET=linux2628 make install 二,編輯配置文件 Haproxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇作為配…

    Linux干貨 2016-09-19
  • apache工作模式及虛擬主機的配置

    apache的工作模式 MPM 名詞解釋MPM   Multipath Process Module 多道處理模塊。Linux中常使用prefork worker event三種MPM 即apache常用的三種工作模式。 prefork prefork為多進程模型,每個進程響應一個請求。其工作過程簡單說來就是一個主進程:負責生成n個 子進程(子進程…

    Linux干貨 2016-07-02
  • Bash腳本寫法及變量如何使用

    Bash是什么? bash腳本是作為linux執行與內核交互的一個方便快捷的腳本語言工具。它可以幫助我們快速的解決問題。 Bash寫法: 需要創建一個文件,以.sh結尾。這樣就生成一個腳本文件 我們文件內容開頭要以#!/bin/bash 開頭,這是腳本規定的格式,目的是告訴編譯器我們這個腳本是bash類型的腳本。 當上述工作都做好以后,我們就可以正式開始腳本…

    Linux干貨 2017-04-10
  • linux分區管理工具—fdisk

    一、關于為什么要分區       (1)為了數據的安全:當文件系統只有一個分區時,如果遇到分區需要格式化的情況,則硬盤里的數據無法保留,而如果提前對硬盤做了分區那么就可以很好地額解決這個問題;       (2)為了提升效率:硬盤(這里單指機械硬盤)分為外圈和…

    Linux干貨 2016-03-12
欧美性久久久久