系統基礎之權限管理

權限管理:


概論:

 上節,為大家介紹了用戶,和組的知識.今天為大家介紹與用戶,組息息相關的知識,權限.linux是多用戶,多任務的操作系統,面對多人的操作,安全問題就很重要,權限機制就很好的對安全進行防護,避免他人操作自己的文件.下面給大家詳細介紹權限.

  首先讓我們先直觀地看下權限,對權限有個最基本的認識.以/etc/issue文件進行示例.

[root@wen-7 themes]# ll /etc/issue            #ls -l,命令 以長選項的格式查看文件
-rw-r--r-- 1 root root 41 7月  27 17:10 /etc/issue

  顯示信息前面有rwxrwxrwx形式的內容,這就是權限的最直接的表達方式,那每個字符分別有什么含義呢

權限標識:

rwxrwxrwx:

 左三位:定義user(owner)的權限(屬主)

 中三位;dingyi group的權限(屬組)

 右三位:定義other的權限(普通用戶)

 r:read   讀

 w:write   寫

 x:excute  執行

權限實際功能:(權限面對的對象不同,具體的功能不同)      

 對文件而言:

   r:可獲取文件的數據

   w:可修改文件的數據 (不可刪除文件)

   x:可將此文件運行為進程(針對二進制程序或腳本)

   X:不會增加X(前提本身無X權限)

 對目錄而言:

   r:可使用ls命令獲取其下的所有的文件列表

   w:可修改此目錄下的文件列表:即創建或刪除文件    不看文件權限  

   x:可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息

   X:不會增加X(前提本身無X權限

進程安全上下文(工作機制):

  進場對文件的訪問權限應用模型

   進程的屬主與文件的屬主是否相同:如果相同,則應用屬主權限;

    否則,則檢查進場的屬主是否屬于文件的屬組;如果是,則應用屬組權限

    否則,就只能應用other的權限

    按順序匹配,匹配成功,不在進行下面的匹配

權限組合機制:   

           

 符號 二進制  八進制
– – – 0  0
– – x 001  1
– w – 010  2
– w x 011  3
r – – 100  4
r – x 101  5
r w – 110  6
r w x 111  7

   練習: 對應說出下面權限位的八進制表示方法   

rw-rw-r--   rwxrwxr--   rwxr-x---  rw--------  rwxr-xr-x
  750          600        755         600         755


權限管理命令:


chmod: 改變文件的訪問權限

命令格式:

   chmod [options] ..mode[,mode] file…

  chmod [options]  [–reference=rfile]

  chmod [options]  OCTAL-MODE FILE….

 命令對象:          

   三類用戶:

    u:屬主

    g:屬組

    o:其他 

    a:所有

 

 選項:

    [-R]:遞歸修改,修改目錄權限,目錄下的所有文件的權限跟目錄權限一樣    默認是只修改目錄本身  除授權表示法外,其他表示法不建議使用   注意:僅管理員可修改文件的屬主和屬組 用戶僅能修改屬主為自己的那些文件的權限                ;

[root@wen-7 tmp]# chmod -R go= skel/
[root@wen-7 tmp]# ll -d skel
drwx------ 3 root root 87 7月  30 11:08 skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwx------   3 root root   87 7月  30 11:08 
.drwxrwxrwt. 19 root root 4096 7月  30 11:10 
..-rw-------   1 root root   18 7月  30 11:08 
.bash_logout-rw-------   1 root root  193 7月  30 11:08 
.bash_profile-rw-------   1 root root  231 7月  30 11:08 
.bashrcdrwx------   4 root root   37 7月  30 11:08 
.mozilla-rw-------   1 root root  658 7月  30 11:08 
.zshrc
[root@wen-7 tmp]# chmod -R g+r skel/
[root@wen-7 tmp]# ll -d skel/
drwxr----- 3 root root 87 7月  30 11:08 skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwxr-----   3 root root   87 7月  30 11:08 
.drwxrwxrwt. 19 root root 4096 7月  30 11:11 
..-rw-r-----   1 root root   18 7月  30 11:08 
.bash_logout-rw-r-----   1 root root  193 7月  30 11:08
bash_profile-rw-r-----   1 root root  231 7月  30 11:08
.bashrcdrwxr-----   4 root root   37 7月  30 11:08  
.mozilla-rw-r-----   1 root root  658 7月  30 11:08 .zshrc

 使用方法:

  (1)chmod [options] ..mode[,mode] file…

     MODE表示法:

       賦權表示法:直接操作一類用戶的所有權限位rwx:

         u= g= o= a=   不同用戶之間用逗號分隔

[root@wen-7 shlianxi]# chmod u=r,g=r,o=r 1.sh 
[root@wen-7 shlianxi]# chmod ugo=rwx 1.sh 
[root@wen-7 shlianxi]# chmod u=rwx 1.sh 
[root@wen-7 shlianxi]# ll 1.sh -rwxrwxrwx 1 root root 211 7月  30 09:56 1.sh

       授權表示法:直接操作一類用戶的所有權限位rwx:

          u+,u-   不同用戶之間用逗號分隔

         g+,g

         o+,o-

         a+,a-

[root@wen-7 shlianxi]# chmod u+x,g+w,o+w 1.sh 
[root@wen-7 shlianxi]# chmod ugo-x 1.sh 
[root@wen-7 shlianxi]# chmod u+x 1.sh 
[root@wen-7 shlianxi]# ll 1.sh -rwxrw-rw- 1 root root 211 7月  30 09:56 1.sh

           

   (2) chmod [options]  OCTAL-MODE FILE….

       使用八進制權限表示方式  

[root@wen-7 shlianxi]# chmod 660 1.sh 
[root@wen-7 shlianxi]# ll 1.sh -rw-rw---- 1 root root 211 7月  30 09:56 1.sh

       必須三位數字全寫,三位不全,默認從左邊為空

[root@wen-7 shlianxi]# chmod 66 1.sh 
[root@wen-7 shlianxi]# ll 1.sh
----rw-rw- 1 root root 211 7月  30 09:56 1.sh
[root@wen-7 shlianxi]# chmod 6 1.sh 
[root@wen-7 shlianxi]# ll 1.sh
 -------rw- 1 root root 211 7月  30 09:56 1.sh

   (3) chmod [options]  [–reference=rfile]

       引用其他文件的權限賦權到指定文件

[root@wen-7 shlianxi]# chmod --reference=/etc/passwd 1.sh
[root@wen-7 shlianxi]# ll 1.sh 
-rw-r--r-- 1 root root 211 7月  30 09:56 1.sh
root@wen-7 shlianxi]# ll /etc/passwd
-rw-r--r-- 1 root root 3406 7月  29 21:20 /etc/passwd
[root@wen-7 shlianxi]# chmod --reference=./6.sh 1.sh
[root@wen-7 shlianxi]# ll 1.sh
 -rw-r--r-- 1 root root 211 7月  30 09:56 1.sh
[root@wen-7 shlianxi]# ll 6.sh
-rw-r--r-- 1 root root 176 7月  30 08:56 6.sh

    


從屬關系管理命令:  

chown:  – 修改文件所有者和組別(僅管理員用戶使)

  命令格式:

   chown [options] user [:group] file…

    chown [options] –reference=rfile file…

 選項: [-R]   遞歸修改 

 使用方式:

   指定屬主: chown username file…

   指定屬組: chown :groupname file…

   指定屬主加屬組: chown username: groupname file…     

[root@wen-7 tmp]# useradd docker
[root@wen-7 tmp]# chown -R docker skel/                #遞歸指定屬主為docker
[root@wen-7 tmp]# ll -d skel/
drwxr----- 3 docker root 87 7月  30 11:08 skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwxr-----   3 docker root   87 7月  30 11:08 .
.drwxrwxrwt. 19 root   root 4096 7月  30 11:14 ..
-rw-r-----   1 docker root   18 7月  30 11:08 .bash_logou
-rw-r-----   1 docker root  193 7月  30 11:08 .bash_profile
-rw-r-----   1 docker root  231 7月  30 11:08 .bashrcdrwxr
-----   4 docker root   37 7月  30 11:08 .mozilla
-rw-r-----   1 docker root  658 7月  30 11:08 .zshrc
[root@wen-7 tmp]# chown -R  wen:gentoo skel/           #指定屬主為wen 屬組為gentoo
[root@wen-7 tmp]# ll -d skel/
drwxr----- 3 wen gentoo 87 7月  30 11:08 skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwxr-----   3 wen  gentoo   87 7月  30 11:08 
.drwxrwxrwt. 19 root root   4096 7月  30 11:15 ..
-rw-r-----   1 wen  gentoo   18 7月  30 11:08 .bash_logout
-rw-r-----   1 wen  gentoo  193 7月  30 11:08 .bash_profile
-rw-r-----   1 wen  gentoo  231 7月  30 11:08 .bashrc
drwxr-----   4 wen  gentoo   37 7月  30 11:08 .mozilla
-rw-r-----   1 wen  gentoo  658 7月  30 11:08 .zshrc

  參考其他文件的權限修改指定文件或目錄       

[root@wen-7 tmp]# chown --reference=/etc/passwd /tmp/skel/
[root@wen-7 tmp]# ll -d skel/
drwxr----- 3 root root 87 7月  30 11:08 skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwxr-----   3 root root     87 7月  30 11:08 .
drwxrwxrwt. 19 root root   4096 7月  30 11:17 ..
-rw-r-----   1 wen  gentoo   18 7月  30 11:08 .bash_logout
-rw-r-----   1 wen  gentoo  193 7月  30 11:08 .bash_profile
-rw-r-----   1 wen  gentoo  231 7月  30 11:08 .bashrc
rwxr-----   4 wen  gentoo   37 7月  30 11:08 .mozilla
-rw-r-----   1 wen  gentoo  658 7月  30 11:08 .zshrc
[root@wen-7 tmp]# chown -R --reference=/etc/passwd /tmp/skel/
[root@wen-7 tmp]# ll -a skel/
總用量 24
drwxr-----   3 root root   87 7月  30 11:08 .
drwxrwxrwt. 19 root root 4096 7月  30 11:17 ..
-rw-r-----   1 root root   18 7月  30 11:08 .bash_logout
-rw-r-----   1 root root  193 7月  30 11:08 .bash_profile
-rw-r-----   1 root root  231 7月  30 11:08 .bashrc
drwxr-----   4 root root   37 7月  30 11:08 .mozilla
-rw-r-----   1 root root  658 7月  30 11:08 .zshrc



chgrp: 改變文件的組所有權 (僅管理員用戶使用)

  命令格式:

   chgrp [options] user [:group] file…

   chgrp [options] –reference=rfile file…

  選項:

    -R :遞歸使用

[root@wen-7 ~]# chgrp gentoo file1 
[root@wen-7 ~]# ll file1 
-rw-r--r-- 1 root gentoo 37 8月   1 10:47 file1

       思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限,能否修改此文件內容?能否刪除此文件?

  1. [root@wen-7 tmp]# mkdir mytest

  2. [root@wen-7 tmp]# cp /etc/fstab mytest/

  3. [root@wen-7 tmp]# ll mytest/

  4. 總用量 4

  5. -rw-r--r-- 1 root root 465 7  30 11:28 fstab

  6. [root@wen-7 tmp]# ll -d mytest/

  7. drwxr-xr-x 2 root root 18 7  30 11:28 mytest/

  8. [root@wen-7 tmp]# chgrp gentoo mytest/

  9. [root@wen-7 tmp]# ll -d mytest/

  10. drwxr-xr-x 2 root gentoo 18 7  30 11:28 mytest/

  11. [root@wen-7 tmp]# chmod g+w mytest/

  12. [root@wen-7 tmp]# ll -d mytest/

  13. drwxrwxr-x 2 root gentoo 18 7  30 11:28 mytest/

  14. [root@wen-7 mytest]# su - gentoo

  15. [gentoo@wen-7 ~]$ cd /tmp/mytest/

  16. [gentoo@wen-7 mytest]$ ll

  17. 總用量 4

  18. -rw-r--r-- 1 root root 16 7  30 11:31 fstab

  19. [gentoo@wen-7 mytest]$ echo sefsdf >> fstab

  20. -bash: fstab: 權限不夠

  21. [gentoo@wen-7 mytest]$ rm  fstab

  22. rm:是否刪除有寫保護的普通文件 "fstab"?y

  23. [gentoo@wen-7 mytest]$ ls[gentoo@wen-7 mytest]$


練習:

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

[root@wen-7 testdir]# chmod 754 /testdir/
[root@wen-7 testdir]# ll -d /testdir/
drwxr-xr-- 2 root root 15 8月   3 20:27 /testdir/
[root@wen-7 testdir]# su - wangcai -c  "echo "fsdf" >> /testdir/file1"
-bash: /testdir/file1: 權限不夠
[root@wen-7 testdir]# su - wangcai -c  "rm /testdir/file1"
rm: 無法刪除"/testdir/file1": 權限不夠
[root@wen-7 testdir]#

 2.當用戶wangcai對/testdir目錄有寫權限時,該目錄的只讀文件file1是否可修改和刪除

[root@wen-7 testdir]# ll -d /testdir/
drwxrw-rwx 2 root root 15 8月   3 20:27 /testdir/
[root@wen-7 testdir]# su - wangcai -c  "echo "fsdf" >> /testdir/file1"
-bash: /testdir/file1: 權限不夠
[root@wen-7 testdir]# su - wangcai -c  "rm /testdir/file1"
rm:是否刪除有寫保護的普通文件 "/testdir/file1"?y
[root@wen-7 testdir]# ll
總用量 0
-rw-rw-r--+ 1 root root 0 8月   3 16:58 f1

 3.復制/etc/fstab 到/var/tmp/,設置文件屬主為wangcai讀寫權限,設置屬組為sysadmins讀寫權限,其他人無權限  

[root@wen-7 .mozilla]# cp /etc/fstab /var/tmp/
[root@wen-7 tmp]# chown wangcai:sysadmins fstab
[root@wen-7 tmp]# chmod 660 fstab 
[root@wen-7 tmp]# ll
總用量 4
drwxr-xr-x. 2 abrt    abrt        6 7月  19 19:32 abrt
-rw-rw----  1 wangcai sysadmins 465 8月   3 14:57 fstab

  

 4.誤刪用戶的家目錄,恢復家目錄,并權限一樣

[root@wen-7 ~]# useradd wangca
[root@wen-7 ~]# ll /home/wangcai/
總用量 0
[root@wen-7 ~]# ll -d /home/wangcai/
drwx------ 3 wangcai wangcai 87 8月   3 14:09 /home/wangcai/
[root@wen-7 ~]# rm -rf /home/wangcai/
[root@wen-7 ~]# cp -r /etc/skel/. /home/wangcai
[root@wen-7 ~]# ll -d /home/wangcai/
drwxr-xr-x 3 root root 87 8月   3 14:10 /home/wangcai/
[root@wen-7 ~]# chmod 700 /home/wangcai/
[root@wen-7 ~]# chown wangcai:wangcai /home/wangcai/
[root@wen-7 ~]# ll -d /home/wangcai/
drwx------ 3 wangcai wangcai 87 8月   3 14:10 /home/wangcai/

umake:文件的權限反向掩碼;遮罩碼; 管理文件創建時的默認權限

 本質:從目錄或文件上屏蔽掉最大權限相應的位,從而得出默認的權限

 計算公式:   

   文件: 

     666-umake=默認權限     (三位每位奇數加1,偶數保留)

      注意:之所以文件用666去減,表示文件默認不能擁有執行權限,如果減得的結果中有執行權限,則需要加1

   目錄:

     777-umake=默認權限

 umask命令:

   使用方式:

     (1)umask 022 用八進制權限數  指定當期用戶的umake值

     (2)umask u=rw,g=rw,o=r  用賦權表示法    指定當期用戶的umake值

      (3)umake -S   顯示新建文件夾的默認權限

     (4)imask -p 打印系統當前umask值,可方便輸出重定向至配置文件

      (5)  umask:查看當前umask值

[root@wen-7 testdir]# umask
0022
[root@wen-7 testdir]# umask -S
u=rwx,g=rx,o=rx
[root@wen-7 testdir]# umask  022
[root@wen-7 testdir]# umask
0022
[root@wen-7 testdir]# umask u=rw,g=rw,o=r
[root@wen-7 testdir]# umask
0113
[root@wen-7 testdir]# touch qwe.sh
[root@wen-7 testdir]# ll
總用量 0
-rw-rw-r--+ 1 root root 0 8月   3 16:58 f1
-rw-rw-r--  1 root root 0 8月   3 20:39 qwe.sh

   umask 命令設置  僅對當前用戶進程有效

   永久生效: 局部修改用戶自己bash的配置文件,.bahsrc    #umask 002|022 ,謹慎修改全部bash配置文件

   root的umask值是022. root創建的文件權限越小,對用戶的限制越大

[wen@wen-7 ~]$ umask0002
[wen@wen-7 ~]$ umask 027
[wen@wen-7 ~]$ touch fil1
[wen@wen-7 ~]$ ll fil1-rw-r----- 1 wen wen 0 7月  30 11:42 fil1
[wen@wen-7 ~]$ mkdir file
[wen@wen-7 ~]$ ll file
總用量 0
[wen@wen-7 ~]$ ll -d filed
rwxr-x--- 2 wen wen 6 7月  30 11:42 file

install命令:復制文件并設置屬性

   命令格式:      

    單源復制: 

      install [options] -t 

    多源復制:

      install [options] [-s] [–strip] source dest

      install [options] [-s] [–strip] source… directory

     創建目錄:   

      install [options] [-d] directory…

   選項:

     -m: 設定目標文件權限,默認為755

     -o:設定目標文件屬主

     -g:設定目標文件屬組

[root@wen-7 ~]# install -o gentoo -g gentoo -m 640 /etc/inittab /tmp/init
[root@wen-7 ~]# ll /tmp/init 
-rw-r----- 1 gentoo gentoo 511 7月  30 12:30 /tmp/init

     -d:創建目錄                

[root@wen-7 ~]# install -d qwe
[root@wen-7 ~]# ls
ad  passwd.bak  qwe  shell  shlianxi

    

            

mktemp命令: 創建臨時文件或目錄

  命令格式:

    mktemp [options] template

root@wen-7 ~]# mktemp /tmp/mysq.XXXXX/
tmp/mysq.iQZDU
[root@wen-7 ~]# mktemp /tmp/mysq.XXXXX
/tmp/mysq.eXRRU
[root@wen-7 ~]# mktemp /tmp/mysq.XXXXX
/tmp/mysq.kZtAV
[root@wen-7 ~]# mktemp /tmp/mysq.XXXXXXXXXXX
/tmp/mysq.6zqQ5nLxlRR
[root@wen-7 ~]# mktemp /tmp/mysq.XXXXXXXXXXX
/tmp/mysq.ROygQ5RFLOa
[root@wen-7 ~]# mktemp /tmp/mysq.XXXXXXXXXXX
/tmp/mysq.8ST1lOItKUy
[root@wen-7 ~]# myfile=$(mktemp /tmp/ds.XXXXXX)
[root@wen-7 ~]# echo $myfile
/tmp/ds.8qKqpU

  選項:

    -d:創建目錄

    -u:測試,但不創建文件

[root@wen-7 ~]# mktemp -d /tmp/mysq.XXXXX
/tmp/mysq.8aKkM
[root@wen-7 ~]# ls /tmp/
ds.8qKqpU  mysq.6zqQ5nLxlRR  mysq.8ST1lOItKUy  mysq.iQZDU  mysq.ROygQ5RFLOa  /tmp/mysq.8aKkM/

[root@wen-7 ~]# mktemp -u /tmp/mysq.XXXXX/
tmp/mysq.3fgo1
[root@wen-7 ~]# ls 
/tmp/ds.8qKqpU  mysq.6zqQ5nLxlRR  mysq.8ST1lOItKUy  mysq.iQZDU  mysq.ROygQ5RFLOa  mytestinit

注意,mktemp會將創建的臨時文件名直接返回,因此,可直接通過命令引用保存起來.






特殊權限: SUID,SGID,STICKY


在系統中,上面提到的三個權限,我們稱之為普通權限.在普通權限外,還有一些特殊的權限,提供各樣的功能,下面進行詳解.

 先看下特殊權限與普通先的對比

[root@wen-7 ~]# ls -l /bin/passwd                            #特殊權限
rwsr-xr-x. 1 root root 27832 6月  10 2014 /bin/passwd
[root@wen-7 ~]# ll -d /tmp                                    #普通權限
rwxrwxrwt. 12 root root 4096 7月  30 12:45 /tmp

在這里我們有提到了安全上下文,可見這是特別重要的.必須了解權限的運行機制.

 安全上下文:

    1.進程以某用戶的身份運行,進程是發起此進程用戶的代理,因此以此用戶的身份和權限完成所有操作

    2.權限匹配模型:

     (1)判斷進程的屬主,是否為被訪問的屬主,如果是,則應用屬主的權限,否則進去第2步.

     (2)判斷進程的屬主,是否屬于被訪問的文件屬組;如果是,則應用屬性的權限;否則進去第3步

     (3)應用other的權限

 

 

第一種特殊權限: SUID

   系統默認情況下,用戶發起的進程,進程的屬主是其發起者,因此,進程是以其發起者的身份在運行

[wen@wen-7 ~]$ whoami
wen
[wen@wen-7 ~]$ cat /etc/issue
#\S
#Kernel \r on an \m
#$hostname
#date
[wen@wen-7 ~]$ ps aux | grep cat
wen       12757  0.0  0.0 112660   960 pts/1    R+   20:52   0:00 grep --color=auto cat    
      #cat 進程是wen 這個用戶在運行

  

  SUID 功用: 用戶運行某程序時,如果此程序擁有SUID權限,那些二進制程序運行為進程時,其屬主不是發起者,而是程序文件自己的屬主(讓普通用戶運行部分root權限)

    管理SUID權限:

            chmod u+|u-s FIle..

            展示位置:屬主的執行權限位,如果屬主原本有執行權限,顯示為小寫s;否則,顯示為大寫S

[root@wen-7 ~]# cp /usr/bin/cat /tmp 
[root@wen-7 ~]# ll /tmp/cat 
-rwxr-xr-x 1 root root 54048 8月   3 21:37 /tmp/cat
[root@wen-7 ~]# chmod u+s /tmp/cat 
[root@wen-7 ~]# su - wen
上一次登錄:三 8月  3 20:57:07 CST 2016pts/1 上
[wen@wen-7 ~]$ /tmp/cat /etc/shadow
root:$6$aetYyxyt$7KPPYdtBGaFY2yRne/aL8ECDEl9zLNW7jQsp3p1MAlHhZH7o1fI.ah1R2EcnzgZNXpgVylXR8joNLQZ0Qtha/.:17009:0:99999:7:::
bin:*:16659:0:99999:7:::

第二種權限:SGID:   

  展示位置:屬組的執行權限位,如果屬組原本有執行權限,顯示為小寫s;否則,顯示為大寫S

  功用:當某目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組的用戶,且以屬組身份再此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄是屬組;

 通常用于創建一個寫作目錄

  管理文件的SGID權限:

     chmod g+|-s FILE… 

[root@wen-7 testdir]# ll -d /testdir/
drwxr-xr-- 2 root root 28 8月   3 20:39 /testdir/
[root@wen-7 testdir]# chgrp sysadmins /testdir/
[root@wen-7 testdir]# chmod 774 /testdir/
[root@wen-7 testdir]# ll -d /testdir/
drwxrwxr-- 2 root sysadmins 28 8月   3 20:39 /testdir/

[root@wen-7 testdir]# gpasswd  -a wangcai sysadmins
正在將用戶“wangcai”加入到“sysadmins”組中
[root@wen-7 testdir]# gpasswd  -a wen  sysadmins
正在將用戶“wen”加入到“sysadmins”組中
[root@wen-7 testdir]# groupmems -l  -g sysadmins
wangcai  wen 

wangcai@wen-7 testdir]$ touch wang.sh
[wangcai@wen-7 testdir]$ ll
-rw-rw-r--  1 wangcai wangcai 0 8月   3 21:45 wang.sh
[wangcai@wen-7 testdir]$ su - wen
[wen@wen-7 ~]$ cd /testdir/
[wen@wen-7 testdir]$ touch wen.sh
[wen@wen-7 testdir]$ ll
-rw-rw-r--  1 wangcai wangcai 0 8月   3 21:45 wang.sh
-rw-rw-r--  1 wen     wen     0 8月   3 21:46 wen.sh

[root@wen-7 testdir]# !chm
chmod g+s /testdir/
[root@wen-7 testdir]# ll -d /testdir/
drwxrwsr-- 2 root sysadmins 67 8月   3 21:47 /testdir/

[wen@wen-7 testdir]$ touch qwewq
[wen@wen-7 testdir]$ ll
總用量 0
-rw-rw-r--+ 1 root    root      0 8月   3 16:58 f1
-rw-rw-r--  1 root    root      0 8月   3 20:39 qwe.sh
-rw-rw-r--  1 wen     sysadmins 0 8月   3 21:47 qwewq
-rw-rw-r--  1 wangcai wangcai   0 8月   3 21:45 wang.sh
-rw-rw-r--  1 wen     wen       0 8月   3 21:47 wen.sh
[wangcai@wen-7 testdir]$ touch wang2
[wangcai@wen-7 testdir]$ ll
總用量 0
-rw-rw-r--  1 wen     wen       0 8月   3 21:47 wen.sh
-rw-rw-r--  1 wen     sysadmins 0 8月   3 21:47 qwewq
-rw-rw-r--  1 wangcai sysadmins 0 8月   3 21:53 wang2
-rw-rw-r--  1 wangcai wangcai   0 8月   3 21:45 wang.sh


第三個特殊權限:Stlcky

  功用:對于屬組或全局可寫的目錄,組內所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件;如果為此類目錄設置Sticky權限,則每個用戶都能創建新文件,且只能刪除自已的文件

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

 sticky設置在文件上無意義

  管理文件的Sticky權限:

    chmod o+|-t FILE…

  展示位置:其他用戶的執行權限位,如果屬組原本有執行權限,顯示為小寫t;否則,顯示為大寫T

  系統上的/tmp和/bar/tmp目錄默認均有Sticky權限

wangcai@wen-7 testdir]$ rm qwewq 
[wangcai@wen-7 testdir]$ ll
-rw-rw-r--  1 wangcai sysadmins 0 8月   3 21:53 wang2
-rw-rw-r--  1 wangcai wangcai   0 8月   3 21:45 wang.sh
-rw-rw-r--  1 wen     wen       0 8月   3 21:47 wen.sh

[root@wen-7 testdir]# chmod o+t /testdir/
[root@wen-7 testdir]# ll -d /testdir/
drwxrwsr-T 2 root sysadmins 67 8月   3 21:54 /testdir/

[wangcai@wen-7 testdir]$ rm qwewq 
[wangcai@wen-7 testdir]$ ll
總用量 0
-rw-rw-r--+ 1 root    root      0 8月   3 16:58 f1
-rw-rw-r--  1 root    root      0 8月   3 20:39 qwe.sh
-rw-rw-r--  1 wangcai sysadmins 0 8月   3 21:53 wang2
-rw-rw-r--  1 wangcai wangcai   0 8月   3 21:45 wang.sh
-rw-rw-r--  1 wen     wen       0 8月   3 21:47 wen.sh
[wangcai@wen-7 testdir]$ rm wen.sh 
rm:是否刪除有寫保護的普通空文件 "wen.sh"?y
rm: 無法刪除"wen.sh": 不允許的操作

管理特殊權限的另一種方式:

 采用八進制標識方法:

SUID SGID STICKY 八進制表示
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7

基于八進制方式賦權時,可于默認的三位八進制數字左側在加一位八進制數字

        例: chmod 1777

[root@wen-7 testdir]# ll -d /testdir/
d--------- 2 root sysadmins 67 8月   3 21:54 /testdir/
[root@wen-7 testdir]# chmod 1777 /testdir/
[root@wen-7 testdir]# ll -d /testdir/
drwxrwxrwt 2 root sysadmins 67 8月   3 21:54 /testdir/


第四種特殊權限:隱藏特殊權限

lsattr:查看文件被添加的特殊權限  

[root@wen-7 testdir]# lsattr 
---------------- ./f1
---------------- ./qwe.sh
---------------- ./wang.sh
---------------- ./wen.sh
---------------- ./wang2

chattr:   增加特殊權限,  功用是為了避免讓你的文件誤操作,

         +A:鎖定時間戳

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

         +a : 只能修改   

[root@wen-7 testdir]# chattr +i /testdir/qwe.sh 
[root@wen-7 testdir]# lsattr 
---------------- ./f1
----i----------- ./qwe.sh
---------------- ./wang.sh
---------------- ./wen.sh
---------------- ./wang2
[root@wen-7 testdir]# rm qwe.sh 
rm:是否刪除普通空文件 "qwe.sh"?y
rm: 無法刪除"qwe.sh": 不允許的操作

[root@wen-7 testdir]# chattr +A /testdir/wen.sh 
[root@wen-7 testdir]# lsattr 
---------------- ./f1
----i----------- ./qwe.sh
---------------- ./wang.sh
-------A-------- ./wen.sh
---------------- ./wang2
[root@wen-7 testdir]# touch -a 1607022213.05  wen.sh 
[root@wen-7 testdir]# stat wen.sh 
  文件:"wen.sh"
  大?。?         	塊:0          IO 塊:4096   普通空文件
設備:fd00h/64768d	Inode:9969        硬鏈接:1
權限:(0664/-rw-rw-r--)  Uid:( 1000/     wen)   Gid:( 1000/     wen)
最近訪問:2016-08-03 22:16:00.569677511 +0800
最近更改:2016-08-03 21:47:15.398196128 +0800
最近改動:2016-08-03 22:16:00.569677511 +0800
創建時間:-


[root@wen-7 testdir]# lsattr 
-----a---------- ./f1
----i----------- ./qwe.sh
---------------- ./wang.sh
-------A-------- ./wen.sh
---------------- ./wang2
---------------- ./1608032213.05
---------------- ./1608022213.05
---------------- ./1607022213.05
---------------- ./非
[root@wen-7 testdir]# echo "fdsf" >> f1
[root@wen-7 testdir]# cat f1 
fdsf
[root@wen-7 testdir]# rm f1 
rm:是否刪除普通文件 "f1"?y
rm: 無法刪除"f1": 不允許的操作

    

    

第五種特殊權限: acl訪問控制列表 

ACL:Access Control List 實現靈活的權限管理

facl: file access control llsts 訪問控制列表

針對特定文件系統, vfat文件系統不支持(沒有權限機制)

除了文件的所有者,所屬組和其他人,可以對更多的用戶設置權限

CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。
CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
ACL生效順序:所有者,自定義用戶,自定義組,
其他人


文件的額外賦權機制

 在原來的u,g,o之外,另一層讓普通用戶能控制賦權給另外用戶或組的賦權機制;

  

使用方法:

 顯示訪問控制列表:

   getfacl  FILE…

    user:USERNAME:MODE

    group:GROUPNAME:MODE

[root@wen-7 testdir]# getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:wen:rwx			#effective:rw-
group::r--
group:sysadmins:rwx		#effective:rw-
mask::rw-
other::r--

管理訪問控制列表:

  setfacl命令: 賦權

   授權給目錄:

    setfacl -m d:u:USERNAME:MODE FILE…   對以后在目錄下的新建的文件有跟目錄設置的defaul默認權限有相同的acl權限(默認文件ACL權限)

[root@wen-7 testdir]# setfacl -m d:u:wen:rw wen
[root@wen-7 testdir]# getfacl wen
# file: wen
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rw-
default:user:wen:rw-
default:group::r-x
default:mask::rwx
default:other::r-x

[root@wen-7 testdir]# getfacl wen/f1
# file: wen/f1
# owner: root
# group: root
user::rw-
group::r--
other::r--

[root@wen-7 testdir]# touch wen/f2 ;getfacl wen/f2
# file: wen/f2
# owner: root
# group: root
user::rw-
user:wen:rw-
group::r-x			#effective:r--
mask::rw-
other::r--

   賦權給用戶:

     setfacl -m u:USERNAME:MODE FILE…

   賦權給組

     setfacl -m g:GROUPNAME:MODE FILE…

[root@wen-7 ~]# setfacl -m d:u:wangcai:rx /testdir            #授權用戶對該目錄讀執行權限
[root@wen-7 ~]# getfacl /testdir/
getfacl: Removing leading '/' from absolute path names
# file: testdir/
# owner: root
# group: sysadmins
# flags: --t
user::rwx
group::rwx
other::rwx
default:user::rwx
default:user:wangcai:r-x
default:group::rwx
default:mask::rwx
default:other::rwx
[root@wen-7 testdir]# setfacl -m u:wen:rw wang.sh               #授權用戶對該文件讀寫
[root@wen-7 testdir]# setfacl -m g:sysadmins:rw wang.sh         #授權組隊該文件讀寫
[root@wen-7 testdir]# getfacl wang.sh
# file: wang.sh
# owner: wangcai
# group: wangcai
user::rw-
user:wen:rw-                       #顯示wen用戶的權限
group::rw-
group:sysadmins:rw-               #顯示組sysadmins的權限
mask::rw-
other::r--

   批量授權:

[root@wen-7 testdir]# cat acl.sh 
u:rooter:rw
u:wangcai:rwx
g:gentoo:rw
g:user3:rx
[root@wen-7 testdir]# setfacl -M acl.sh wen.sh 
[root@wen-7 testdir]# getfacl wen.sh 
# file: wen.sh
# owner: wen
# group: wen
user::rw-
user:root:rw-
user:wangcai:rwx
group::rw-
group:gentoo:rw-
group:user3:r-x
mask::rwx
other::r--

     遞歸授權:

         setfacl -Rm g:sales:rwX directory

    

   撤銷賦權:

    setfacl -x u:USERNAME FILE…

    setfacl -x g:GROUPNAME FILE…

[root@wen-7 testdir]# getfacl wen.sh 
# file: wen.sh
# owner: wen
# group: wen
user::rw-
user:root:rw-
user:wangcai:rwx
group::rw-
group:gentoo:rw-
group:user3:r-x
mask::rwx
other::r--
[root@wen-7 testdir]# setfacl -x u:wangcai  wen.sh 
[root@wen-7 testdir]# setfacl -x g:gentoo   wen.sh 
[root@wen-7 testdir]# getfacl wen.sh 
# file: wen.sh
# owner: wen
# group: wen
user::rw-
user:root:rw-
group::rw-
group:user3:r-x
mask::rwx
other::r--

   批量撤銷授權:

[root@wen-7 testdir]# setfacl -X acl.sh   wen.sh 
[root@wen-7 testdir]# getfacl wen.sh 
# file: wen.sh
# owner: wen
# group: wen
user::rw-
group::rw-
mask::rw-
other::r--

[root@wen-7 testdir]# cat acl.sh 
u:rooter
u:wangcai
g:gentoo
g:user3

  清空facl全部信息

     setfacl -b FIle….

[root@wen-7 testdir]# setfacl -b qwe.sh 
[root@wen-7 testdir]# getfacl qwe.sh 
# file: qwe.sh
# owner: root
# group: root
user::rw-
group::rw-
other::r--

   make權限設置:

    當設置acl權限后,原屬組的權限位更改為mask的權限位,除了所有者和other的權限,其他的權限(組,添加的其他用戶)都不能高過mask的權限,mask的權限是高壓線 高過mask的權限會自動屏蔽. #effective:rw- 表示屏蔽后的實際可執行權限.        

  設置mask權限:   setfacl -m m::rw filename  

[root@wen-7 testdir]# cat acl.sh 
u:rooter:rw
u:wangcai:rwx
g:gentoo:rwx
g:user3:rwx
[root@wen-7 testdir]# setfacl -M acl.sh wang2
[root@wen-7 testdir]# getfacl wang2
# file: wang2
# owner: wangcai
# group: sysadmins
user::rw-
user:root:rw-
user:wangcai:rwx
group::rw-
group:gentoo:rwx
group:user3:rwx
mask::rwx
other::r--
[root@wen-7 testdir]# setfacl -m m:rw wang2
[root@wen-7 testdir]# getfacl wang2
# file: wang2
# owner: wangcai
# group: sysadmins
user::rw-
user:root:rw-
user:wangcai:rwx		#effective:rw-
group::rw-
group:gentoo:rwx		#effective:rw-
group:user3:rwx			#effective:rw-
mask::rw-
other::r--

   acl注意事項:

    (1)ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限) ,而非傳統的組權限
    (2) getfacl 可看到特殊權限: flags
    (3)默認ACL權限給了x,文件也不會繼承x權限。
    (4)base ACL 不能刪除
    (5)setfacl -k dir 刪除默認ACL權限
    (6)setfacl -b file1清除所有ACL權限

    (7) getfacl file1 | setfacl –set-file=- file2 復制file1acl權限給f

備份和恢復ACL

  主要的文件操作命令cp和mv都支持acl,只是cp命令需要加上-p參數.但是tar等常見的備份工具是不會保留目錄文文件的ACL信息,需要我們手動備份ACL,備份后,也可以手動恢復.

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

  #setfacl -R -b /tmp/dir1

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

  #getfacl -R /tmp/dir1

[root@wen-7 testdir]# getfacl -R wang2  >  acl.txt
[root@wen-7 testdir]# cat acl.txt 
# file: wang2
# owner: wangcai
# group: sysadmins
user::rw-
user:root:rw-
user:wangcai:rwx	#effective:rw-
group::rw-
group:gentoo:rwx	#effective:rw-
group:user3:rwx	#effective:rw-
mask::rw-
other::r--

[root@wen-7 testdir]# setfacl -R -b wang2
[root@wen-7 testdir]# ll
總用量 28
-rw-r--r--  1 root    root       51 8月   3 22:39 acl.sh
-rw-r--r--  1 root    root      202 8月   4 10:50 acl.txt
-rw-rw-r--+ 1 root    root        5 8月   3 22:17 f1
-rw-rw-r--  1 root    root        0 8月   3 20:39 qwe.sh
-rw-rw-r--  1 wangcai sysadmins   0 8月   3 21:53 wang2
-rw-rwxr--+ 1 wangcai wangcai     9 8月   3 23:02 wang.sh
-rw-rw-r--+ 1 wen     wen         0 8月   3 21:47 wen.sh
-rw-rw-rw-+ 1 root    root        0 8月   4 09:24 zxc.sh
-rw-r--r--  1 root    root        5 8月   3 22:17 非
[root@wen-7 testdir]# getfacl wang2
# file: wang2
# owner: wangcai
# group: sysadmins
user::rw-
group::rw-
other::r--

[root@wen-7 testdir]# setfacl -R --set-file=acl.txt wang2
[root@wen-7 testdir]# getfacl wang2
# file: wang2
# owner: wangcai
# group: sysadmins
user::rw-
user:root:rw-
user:wangcai:rwx		#effective:rw-
group::rw-
group:gentoo:rwx		#effective:rw-
group:user3:rwx			#effective:rw-
mask::rw-
other::r--


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

(0)
wencxwencx
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • 在CentOS7.3上編譯安裝httpd-2.4.27

    在CentOS7.3上編譯安裝httpd-2.4.27     在實際生產中,軟件廠商并不總會提供針對Linux平臺的rpm軟件包,有時會以源碼的形式發布軟件。源碼,比如c語言的源碼,可以跨平臺運行。在只能獲得源碼的情況下,那么就需要用戶根據自己的平臺,進行手動的編譯安裝。此時,需要借助一些專門的編譯工具,而Linux…

    Linux干貨 2017-08-06
  • 簡單救援模式應用

                                  …

    2017-08-12
  • 馬哥教育首屆IT技術博客大賽–結果揭曉

    號外、號外!!馬哥教育首屆博客大賽已圓滿結束。感謝小伙伴們的積極參與! 噼里啪啦,小伙伴們掌聲響起來,啤酒烤鴨high起來~~咳咳,跑題了,小編好像忘了一件很重要的事: 馬幫博客大賽就是與眾不同,全銀河系也就僅此一家,為啥這么說呢,您看啊,咱就喜歡原創,鼓勵原創,酷愛原創,以原創博客作為技術交流的平臺供大家隨意圍觀和吐槽,您看看,除了馬哥這里,哪里還有這么自…

    Linux干貨 2016-06-22
  • 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash declare -i sum_login=0 declare -i sum_nologin=0 while read line;do shell=$(echo $l…

    Linux干貨 2017-03-05
  • 馬哥教育網絡班21期-第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; # mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 # mount&…

    Linux干貨 2016-08-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-07 22:39

    文章整體思路清晰,從普通權限到特殊權限都有了完整的總結與對應的模擬實現,后面排版如果能認真點就更好了。

欧美性久久久久