1. 程式人生 > >Linux(RadHat)基礎學習—文件權限

Linux(RadHat)基礎學習—文件權限

chgrp 訪問 用戶權限 文件屬性 vpd 冒險位 images ont use

文件權限的意義:系統最底層安全設定方法之一,保證文件可以被可用的用戶作相應操作

1.文件屬性的查看

ls -l filename  等同於 ll    filename  (文件屬性)
ls -ld dir  等同於 ll -d dir   (目錄屬性)
-|rw-r--r--.|1| root| root|   46 |Oct  1 05:03 |filename
1      2       3    4       5      6             7                 8

1. "-"部分:文件類型


-   ##空文件,普通文本文件
d   ##目錄w
c   ##字符設備:顯示字符設備,接收字符屬出。
s   ##套接字 socket:“接口/門”,程序提供對外交互的一個"門"文件,後綴sock
p   ##管道
b   ##快設備 block:
l   ##軟連接:”快捷方式“ (ln file11 file2 把文件file1鏈接到file2)

2."rw-r--r--"部分:文件讀寫權限


rw-|r--|r--
(1) (2) (3)
    (1)【user】文件所有者的權限,對文件所能做的那些操作
    (2)【group】文件所有組的權限
    (3)【other】其他人的權限

3."1"部分:


文件硬連接個數
    對文件:文件內容被系統記錄的次數()
                    同一個文件通過鏈接產生另一個文件,雖然文件名字不同,但這兩個文件其實是同一個文件,可以看到其文件id一樣。這樣文件的硬鏈接個數變成了2。
    對目錄:目錄中文件屬性的字節數(目錄中子文件的元數據【文件屬性】大小):7+文件名字字符數

4."root"部分:


文件所有人

5."root"部分:


文件所有組

6."46"部分:


文件內容的大小

7."Oct 1 05:03"部分:


文件的內容最後一次被修改的時間,不包括其文件權限的修改

8."filename"部分:


文件名字

2.文件所有人所有組的管理

chown:更改文件/目錄所有者
        chown    username       file|dir    ##更改文件的所有人
        chown    username.groupname file|dir    ##更改所有人所有組(把.換成:也可以)
        chown -R username       dir     ##更改目錄本身及裏面所有內容的所有人
chgrp:更改文件/目錄所有組
        chgrp    groupname      dir     ##更改目錄/文件的所有組
        chgrp -R groupname      dir     ##更改目錄本身及裏面所有內容的所有組

監控命令

watch -n 刷新時間 命令
    watch -n 1 ls -lR /mnt   在監控頁面每間隔1s重新執行 ls -lR /mnt

3.文件普通權限

    rw-|r--|r--
     u    g   o
     r :有讀取權限           w:有寫入權限          x:有執行權限
u部分(user):文件所有人對文件可以讀寫
g部分(group):文件組成員對文件可讀
o部分(other):其他人對文件可讀

權限詳解


1.r(讀)


對文件:可以查看文件中的字符
對目錄:可以查看目錄中文件的信息

2.w(寫)


對文件:可以更改文件內記錄的字符。
對目錄:可以在目錄中子目錄或子文件的元數據(子目錄、子文件)進行更改,對子目錄、子文件的寫即是對目錄、文件的重命名,刪除等操作

3.x(執行權限)


對文件:可以運行文件內記錄的程序動作。執行、運行文件
對目錄:可以進入目錄中

4.修改該文件權限


1.字符方式修改權限


格式:chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir    
chmod u-x file1            文件file1擁有者去掉x權限
chmod g+w file1         文件 file1擁有組添加w權限
chmod u-x,g+w file1      文件 file1擁有者去掉x權,file1擁有組添加w權限
chmod u+rwx               文件 file1擁有著加讀寫執行權限
chmod ugo-r file2          文件 file2的用戶組其他人去掉r權限
chmod ug+x,o-r file3      文件 file3用戶和組添加x權限,其他人去掉r權限
chmod +r  file1              文件file1對所有的用戶增加讀權限
chmod g=rx file1             不管之前文件所有組的權限如何,使file1所有組權限變成讀、執行

2.數字方式修改該文件權限


文件權限數字表示方式
小科普:在linux文件權限表示中
        r=4 (2的2次方)
        w=2 (2的1次方)
        x=1 (2的0次方)
        -=0(-表示沒有對應權限,故為0)

舉個栗子:

rw-|r--|r--
 u    g   o
u=rw-=4+2+0=6
g=r--=4+0+0=4
o=r--=4+0+0=4
所以文件權限表示為644

命令:chmod 修改後權限值 file

chmod   777 file  --------> 該文件權限全部開放
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---

5.系統默認權限的設定(umask)

從系統存在角度來說,開放權力越大,系統存在意義越高
從系統安全角度來說,開放權力越少,系統安全性越高
所以系統設定新建文件或目錄會去掉一些權限

設定方式:

umask              查看系統保留權限默認為022
umask 077      修改該系統保留權限為077,此設定為臨時設定,只當前shell中生效

永久設定方式:

編輯文件:vim /etc/bashrc
 70     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 71        umask 002    -----------> 普通用戶umask
 72     else
 73        umask 077    -----------> 超級用戶umask                                                                      
 74     fi

編輯文件:vim /etc/profile
 59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 60     umask 002     ------------> 普通用戶umask
 61 else
 62     umask 077       ------------> 超級用戶umask                                                                                         
 63 fi

以上兩個文件umask設定值必須保持一致!
讓設定立即生效:

source /etc/bashrc
source /etc/profile

6.特殊權限


1.sticky 粘制位


    只針對目錄生效,當一個目錄上有sticky權限時,在這個目錄中的文件只能被其所有者刪除。
設定方式:
    chmod o+t 目錄
    t = 1,故又可以:
    chmod 1xxx 目錄

2.sgid 強制位(只針對二進制可執行文件)


對目錄:

對文件:只針對二進制可執行文件,
    當文件有sgid權限時,任何人執行此文件產生的進程都屬於該文件的文件所有組,和程序發起人組的身份無關
對目錄:
    當目錄有sgid權限後,目錄中新建的所有文件的所有組,都自動歸屬到目錄的所有組之中,和文件建立者所在的組無關
設定方式:
    chmod g+s file/dir
    s = 2,故還可以:
    chmod 2xxx file/dir(xxx代表文件的普通權限數值)
進程查看:ps ax -o comm,user,group | grep watch

3.suid 冒險位置


    只針對與二進制的可執行文件,當文件上有suid時,任何人執行這個文件,程序產生的進程都屬於該文件所有人,即以文件所有者的身份運行該文件。用於程序執行中權力的提升或者下降。
設定方式:
    chmod u+s file
     s = 4,故還可以
    chmod 4xxx file (xxx代表文件的普通權限數值)

7.acl列表


1.acl定義


acl = access control (訪問控制)
    指定特殊用戶對特殊文件有特殊權限
drwxrwx---+ 2 root root 17 Jul 18 01:39 /westos/
      ^
這個‘x‘表示/westos目錄時設置有訪問控制列表
查看文件是否有acl列表:
    getfacl  /westos/

技術分享圖片

# file: westos/     ##文件名稱
# owner: root       ##文件所有人
# group: root       ##文件所有組
user::rwx       ##擁有者權限
user:student:rwx    ##特殊用戶權限
group::r-x      ##文件所有組權限
mask::rwx       ##權限掩碼(能賦予用戶的最大權力伐值)
other::r-x      ##其他人權限

註意:當文件上有權限列表時,ls -l 能看到的權限是不真實的


2.設定acl列表


setfacl -m <u|g>:<username|groupname>:權限    文件|目錄
            -m   #設定
             u      #用戶
             g     #組
舉2個栗子:  setfacl -m u:student:rwx ./westos(擁有全部權限)
                    setfacl -m u:student:0 /bin/watch   (0表示沒有任何權限)

3.刪除acl列表中的用戶或者組


setfacl -x <u|g>:<username|groupname>   文件|目錄
            -x   #刪除(從acl列表中刪除某個用戶/用戶組)

4.關閉acl列表


setfacl -b 文件|目錄    
            -b  #關閉文件上的acl列表

5.acl mask


mask:權限掩碼(表示能生效的權力值)
mask用來標實能夠賦予用戶最大權限閥值
當存在acl列表時,用chmod減小acl的文件權限時mask值可能會發生改變

修復文件mask值:

setfacl -m m:rwx 文件名稱

6.acl 默認權限設定


當我們需求某個目錄對於student可寫,並且目錄中新建的子目錄對student也可寫,此時就要設定默認默認權限

註意: acl權限只針對目錄設定,無法對文件進行設定。默認權限只對目錄中新建立的文件或者目錄生效,對已經建立的文件無效,對於目錄本身也無效
設定方式:

setfacl -m d:u:student:rwx  /westos

8.限制超級用戶權限

chattr +i filename  限制超級用戶對文件進行操作
查看完整詳細權限:lsattr filename  ( ls -l無法查看到的部分權限)
解除限制:chattr -i filename

Linux(RadHat)基礎學習—文件權限