經常使用重要參數與選項:linux
語法格式:lsattr [-adR] 文件或目錄
選項與參數:
-a :將隱藏文件的屬性也秀出來;
-d :若是接的是目錄,僅列出目錄自己的屬性而非目錄內的文件名;
-R :連同子目錄的數據也一併列出來 !
示例:安全
[root@CentOS7 data]#touch testdir [root@CentOS7 data]#chattr +i testdir [root@CentOS7 data]#ls scripts testdir [root@CentOS7 data]#ll total 4 drwxr-xr-x. 5 root root 4096 Mar 19 19:38 scripts -rw-r--r--. 1 root root 0 Mar 19 19:39 testdir [root@CentOS7 data]#rm -r testdir rm: remove regular empty file ‘testdir’? y rm: cannot remove ‘testdir’: Operation not permitted [root@CentOS7 data]#lsattr testdir ----i----------- testdir
咱們一直使用的文件重要權限,那就是rwx這三個讀、寫、執行權限,那麼除了這個就沒有其餘權限了嗎?
細心的人會注意到當咱們查看/tmp和/usr/bin/passwd,在權限位上會出現咱們不認識的t、s,那麼這裏的t、s就是文件隱藏的特殊權限了。ide
[root@CentOS7 data]#ll -d /tmp /usr/bin/passwd drwxrwxrwt. 32 root root 4096 Mar 19 19:57 /tmp -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd [root@CentOS7 data]#lsattr -a /etc/shadow ---------------- /etc/shadow
咱們都知道/etc/shadow文件的權限爲000;那麼就是除了root外的全部用戶將對這個文件沒有任何權限,然而當普通用戶使用passwd命令時,發現咱們能修改用戶密碼並保存進/etc/shadow中,那豈不是就先後矛盾了?緣由就是/usr/bin/passwd上的特殊權限s,當普通用戶執行passwd命令時,會臨時擁有root的權限。
特殊權限SUID的功能:
(1)SUID權限僅對二進制程序有效; //普通用戶的/usr/bin/passwd 這個程序來講擁有x權限,表示普通用戶也能執行passwd;
(2)執行者對於該程序須要具備x的可執行權限; //passwd的擁有者時root,root對文件擁有絕對控制權;
(3)本權限僅在執行該程序的過程當中有效; //普通用戶執行passwd的過程當中,會暫時得到root的權限;
(4)執行者將具備該程序擁有者的權限; // 文件/etc/shadow能夠被普通用戶執行的passwd命令修改;
那麼普通用戶能使用cat命令讀取/etc/shadow的內容嗎?通下面命令咱們發現cat命令並不存在s特殊權限位,也不能讀取shadow的內容;測試
[root@CentOS7 data]#ll /bin/cat -rwxr-xr-x. 1 root root 54160 Oct 31 03:16 /bin/cat [root@CentOS7 data]#su gong [gong@CentOS7 data]$ cat /etc/shadow cat: /etc/shadow: Permission denied
當s標誌在文件的擁有者的x項目爲SUID,那s在羣組的x時則稱爲Set GID,簡寫爲SGID;SUID可做用在文件或目錄上;
當SGID做用在文件上,其起到的功能爲:
(1)SGIU對二進制程序有用;
(2)程序執行者對於該程序來講,需具有x 的權限;
(3)執行者在執行的過程當中將會得到該程序羣組的支持;ui
[hh@CentOS7 data]$ ls -l testfile //查看文件的權限,在羣組位置有的執行位上爲s,other用戶對程序只有x執行權限; -rw-r-s--x 1 root gong 10 Mar 20 09:31 testfile [hh@CentOS7 data]$ id hh //用戶hh屬於組gong的成員 uid=1004(hh) gid=1004(hh) groups=1004(hh),1000(gong) [hh@CentOS7 data]$ cat testfile //這時用戶hh在執行的過程當中得到了該程序羣組的支持,從而能夠讀取文件內容; d sd sd
當SGID做用在文件上,其起到的功能爲:
(1)用戶若對此目錄具備r與x的權限時,該用戶可以進入此目錄;
(2)用戶在此目錄下的有效羣組將會變成該目錄的羣組;
(3)用途:若用戶在此目錄下具備w的權限(能夠新建文件),則使用者所創建的新文件,改新文件的羣組與此目錄的羣組相同;
注:一般用於建立一個協做目錄; debug
[root@CentOS7 data]#ll -d testdir/ //查看目錄發現羣組對該目錄有s權限,其餘用戶只有w權限 drwxrws-w- 2 root gong 6 Mar 20 10:01 testdir/ [root@CentOS7 data]#su hh //切換用戶 [hh@CentOS7 testdir]$ id //用戶hh時羣組gong的組員 uid=1004(hh) gid=1004(hh) groups=1004(hh),1000(gong) [hh@CentOS7 data]$ cd testdir/ //hh用戶有進入目錄權限 [hh@CentOS7 testdir]$ touch testfile1 //hh用戶有建立新文件的權限 [hh@CentOS7 testdir]$ ll //發現hh用戶建立的文件的羣組自動屬於gong total 0 -rw-rw-r-- 1 hh gong 0 Mar 20 10:06 testfile1 [hh@CentOS7 testdir]$ echo 11111 > testfile1 //hh用戶可修改文件 [hh@CentOS7 testdir]$ cat testfile1 //hh用戶可讀取文件 11111 [hh@CentOS7 testdir]$ rm testfile1 //hh用戶可刪除文件
SBIT只對目錄有效,功能是:
當用戶對此目錄具備w、x權限,亦即具備寫入的權限時;
當用戶在該目錄下創建文件或目錄時,僅有本身與root纔有權利刪除該文件;code
[root@CentOS7 data]#ls -ld testdir/ //目錄testdir的other的權限位上爲t,權限爲777 drwxrwsrwt 2 root root 23 Mar 20 10:20 testdir/ [root@CentOS7 testdir]#su hh [hh@CentOS7 testdir]$ ll -d testfile1 -rwxrwxrwx 1 gong gong 0 Mar 20 10:20 testfile1 //文件的全部者和所屬組爲gong, hh用戶對該文件擁有rwx權限 [hh@CentOS7 testdir]$ rm -f testfile1 //但hh用戶不能刪除此文件,只能root和文件屬主才能刪除 rm: cannot remove ‘testfile1’: Operation not permitted
ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限以外的細部權限設定。ACL 能夠針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於須要特殊權限的使用情況很是有幫助。
查看本機的文件系統是否支持ACL:遞歸
[root@CentOS7 data]#dmesg |grep -i acl [ 0.869680] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 3.264996] SGI XFS with ACLs, security attributes, no debug enabled
使用ACL:
getfacl :取得某個文件/目錄的ACL設定項目
語法格式:setfacl [-bkRd] [{-m|-x} acl參數] 目標文件名
選項與參數:
-m :設定後續的 acl 參數給文件使用,不可與 -x 合用;
-x :刪除後續的 acl 參數,不可與 -m 合用;
-b :移除『全部的』 ACL 設定參數;
-k :移除『預設的』 ACL 參數,關於所謂的『預設』參數於後續範例中介紹;
-R :遞歸設定 acl ,亦即包括次目錄都會被設定起來;
-d :設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的數據會引用此默認值
setfacl :設定某個目錄/文件的ACL規範,對用戶的細緻acl權限設置:setfacl -m u:uname:rwx filenameip
[root@CentOS7 data]#touch acl_testfile //建立測試文件 [root@CentOS7 data]#ll acl_testfile //查看文件權限 -rw-r--r-- 1 root root 0 Mar 20 10:44 acl_testfile [root@CentOS7 data]#setfacl -m u:gong:rw acl_testfile //使用setfacl給用戶gong設置權限 [root@CentOS7 data]#ll acl_testfile //發現文件的權限後面多了一個+號 -rw-rw-r--+ 1 root root 0 Mar 20 10:44 acl_testfile [root@CentOS7 data]#setfacl -m u::rwx acl_testfile //當使用setfacl設置文件權限中間用戶空時,發現默認將文件全部者的修改 [root@CentOS7 data]#ll acl_testfile -rwxrw-r--+ 1 root root 0 Mar 20 10:44 acl_testfile
查看文件的具體acl權限:getfacl filenamerem
[root@CentOS7 data]#getfacl acl_testfile # file: acl_testfile # owner: root # group: root user::rwx user:gong:rw- group::r-- mask::rw- other::r--
setfacl :設定某個目錄/文件的ACL規範,對羣組的細緻acl權限設置:setfacl -m g:group:rwx filename
[root@CentOS7 data]#setfacl -m g:gong:r acl_testfile [root@CentOS7 data]#getfacl acl_testfile
# file: acl_testfile # owner: root # group: root user::rwx user:gong:rw- group::r-- group:gong:r-- mask::rw- other::r--