Centos7.5-檔案許可權管理

來源:互聯網
上載者:User

標籤:補碼   怎麼辦   執行者   linux雲端運算   公眾號   tps   sdn   linux   bit   

本節所講內容:
- 7.1檔案的基本許可權:r w x (UGO)- 7.2檔案的特殊許可權:suid sgid sticky和檔案延伸權限ACL- 7.3實戰:建立一個讓root都無法刪除的檔案- 7.1 檔案的基本許可權- 7.1.1 許可權的作用

通過對檔案設定許可權可以達到以下三種訪問限制許可權:

  • 只允許使用者自己訪問;
  • 允許一個預先指定的使用者組中的使用者訪問;
  • 允許系統中的任何使用者訪問。
7.1.2 查看許可權
[[email protected] ~]# ll /etc/passwd-rw-r--r--. 1 root root 2053 9月  19 2017 /etc/passwd

檔案許可權基本解釋:

-   rw-        r--       r--.     1 root root 2053 9月  19 2017 /etc/passwd-   rwx r-x r-x user1   user1   time    FILENAME

檔案類型 擁有者的許可權 所屬組的許可權 其他人的許可權 擁有者 屬組 最後修改時間 對象

  • 其中:檔案類型,可以為p、d、l、s、c、b和 –
  • p表示具名管道檔案
  • d表示目錄檔案
  • l表示符號串連檔案
  • -表示普通檔案
  • s表示socket套介面檔案,比如我們啟用mysql時,會產生一個mysql.sock檔案
  • c表示字元裝置檔案,例: 虛擬控制台 或tty0
  • b表示塊裝置檔案 例: sda, cdrom

例:

[[email protected] ~]# ll /dev/sda /dev/cdrom  /etc/passwd /dev/tty0lrwxrwxrwx  1 root root    3 9月  19 2017 /dev/cdrom -> sr0brw-rw----  1 root disk 8, 0 9月  19 2017 /dev/sdacrw--w----  1 root tty  4, 0 9月  19 2017 /dev/tty0-rw-r--r--. 1 root root 2053 9月  19 2017 /etc/passwd   

如下:

7.1.3 許可權說明

對於檔案來說:

  • r:讀
  • w:寫
  • x:執行

對於目錄來說:

  • r:讀(看到目錄裡面有什麼) ls
  • w:在目錄裡面建檔案,刪除,移動 touch mkdir rm mv cp
  • x:進入 cd cat
7.1.4 檔案擁有者
  • UGO:所有者--使用者組--其它使用者
  • 所有者: 就是建立檔案的使用者,這個使用者擁有對它所建立的檔案的一切許可權,所有者可以允許其所在的使用者組可以訪問所有者的檔案。
  • 使用者組:
    使用者組是具有相同特徵使用者的邏輯集合,有時我們需要讓多個使用者具有相同的許可權,比如查看、修改某一個檔案的許可權,一種方法是分別對多個使用者進行檔案訪問授權,如果有10個使用者的話,就需要授權10次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此檔案的許可權,然後將所有需要訪問此檔案的使用者放入這個組中,那麼所有使用者就具有了和組一樣的許可權。這就是使用者組。
  • 其它使用者:系統內的其他所有者使用者就是other使用者類
7.1.5 舉例說明7.1.5.1 常見幾種檔案許可權組成
  • rwx --- ---:檔案所有者對檔案具有讀取、寫入和執行的許可權。
  • rwx r-- r--: 檔案所有者具有讀、寫與執行的許可權,使用者組裡使用者及其他使用者則具有讀取的許可權
  • rw- rw- r-x:檔案所有者與同組使用者對檔案具有讀寫的許可權,而其他使用者僅具有讀取和執行的許可權。
  • drwx--x—x: 目錄所有者具有讀寫與進入目錄的許可權,其他使用者近能進入該目錄,卻無法讀取任何資料。
  • drwx------: 除了目錄所有者具有完整的許可權之外,其他使用者對該目錄完全沒有任何許可權。

舉例如下:
每個使用者都擁有自己的專屬目錄,通常放置/home下

  • [[email protected] home]# ll /home/
  • 總用量 0
  • drwx------. 3 mk mk 78 9月 19 2017 mk
  • 註: [rwx------]表示目錄所有者本身擁有的許可權,其它使用者是無法進入的。 root可以。

例2: 你以什麼使用者身份登入,那麼你建立的檔案或目錄,自動成為該檔案的所屬主和組

  • [[email protected] home]# su - mk

上一次登入:二 9月 19 12:57:21 CST 2017:0 上

[[email protected] ~]$ [[email protected] ~]$ touch a.txt[[email protected] ~]$ ll a.txt -rw-rw-r-- 1 mk mk 0 5月   8 20:58 a.txt
7.1.5.2 變更檔的屬主和屬組
  • 改變檔案的所屬關係用到命令:
  • chown:可以用來改變檔案(或目錄)的屬主
  • chgrp:可以用來改變檔案(或目錄)的預設屬組
  • 如果你要對目錄進行操作,加參數 -R

chown
文法:

chown user:group filename   比如:chown hr:san a.txt  把檔案的屬主和屬組改為hr,sanchown user filename  比如:chown san a.txt  把檔案的屬主改為san使用者chown :group filename  比如: chown :miao a.txt   把檔案的屬組改為miao這個組chown user: filename 比如:chown san: a.txt  自動繼承這個使用者所有的組chgrp hr filename 比如: chgrp hr f.txt  -R :遞迴(目錄下的所有內容都更改,否則只修改目錄)

例:

[[email protected] ~]# touch  {a,b,c}.txt[[email protected] ~]# ll  *.txt-rw-r--r-- 1 root root 0 5月   8 21:03 a.txt-rw-r--r-- 1 root root 0 5月   8 21:03 b.txt-rw-r--r-- 1 root root 0 5月   8 21:03 c.txt[[email protected] ~]# chown mk a.txt[[email protected] ~]# ll a.txt -rw-r--r-- 1 mk root 0 5月   8 21:03 a.txt[[email protected] ~]# chown mk:mk a.txt[[email protected] ~]# ll a.txt -rw-r--r-- 1 mk mk 0 5月   8 21:03 a.txt[[email protected] ~]# chown :root  a.txt[[email protected] ~]# ll a.txt -rw-r--r-- 1 mk root 0 5月   8 21:03 a.txt

互動:一個檔案只有讀的許可權,擁有者是否可以寫這個檔案?
實驗:
[[email protected] ~]# su - mk

[[email protected] ~]$ touch a.txt[[email protected] ~]$ ll a.txt -rw-rw-r-- 1 mk mk 0 5月   8 21:07 a.txt

在另一個終端上,以root身份登入:

[[email protected] ~]# chmod 000 /home/mk/a.txt   #修改成000許可權[[email protected] ~]# ll /home/mk/a.txt  ---------- 1 mk mk 14 5月   8 21:08 /home/mk/a.txt

回到以mk身份登入的終端:

[[email protected] ~]$ vim a.txt   # 寫入aaa  ,  :wq!  儲存

在另一個終端上,以root身份登入:

[[email protected] ~]# cat /home/mk/a.txt aaaaa

實驗結果:檔案所有者一定可以寫檔案。 就像root可以對shadow強制寫。 因shadow的擁有者是root
Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:
①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥線上答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲端運算叢集架構師4冊書籍

7.1.6 修改許可權7.1.6.1 使用字元設定

修改許可權用的命令:chmod

  • 作用:修改檔案,目錄的許可權
  • 文法:chmod [對誰操作] [操作符] [賦於什麼許可權] 檔案名稱

對誰操作:

  • u----> 使用者user,表示檔案或目錄的所有者
  • g---->使用者組group,表示檔案或目錄所屬的使用者組
  • o---->其它使用者others
  • a---->所有使用者all

操作符:

  • #添加許可權 ; - # 減少許可權 ; = #直接給定一個許可權

許可權:r w x
例如下在的組合:

  • u-w user 擁有者

  • g+x group 組

  • o=r other 其他人

  • a+x all 所有人

例:chmod修改許可權

[[email protected] ~]# touch 1.txt[[email protected] ~]# ll 1.txt -rw-r--r-- 1 root root 0 5月   8 21:20 1.txt[[email protected] ~]# [[email protected] ~]# chmod u-w  1.txt[[email protected] ~]# ll 1.txt -r--r--r-- 1 root root 0 5月   8 21:20 1.txt[[email protected] ~]# chmod g+x  1.txt[[email protected] ~]# ll 1.txt -r--r-xr-- 1 root root 0 5月   8 21:20 1.txt[[email protected] ~]# chmod a+x  1.txt    # 給shell指令碼加一個可執行許可權[[email protected] ~]# ll 1.txt -r-xr-xr-x 1 root root 0 5月   8 21:20 1.txt[[email protected] ~]# [[email protected] ~]# chmod a=rwx  1.txt[[email protected] ~]# ll 1.txt -rwxrwxrwx 1 root root 0 5月   8 21:20 1.txt
7.1.6.2 使用八進位(0-7)數字表示許可權法

許可權 二進位值 八進位值 描述

  • --- 000 0 沒有任何許可權
  • --x 001 1 只有執行許可權
  • -w- 010 2 只有寫入許可權
  • -wx 011 3 有寫入和執行許可權
  • r-- 100 4 只有讀取許可權
  • r-x 101 5 有讀取和執行許可權
  • rw- 110 6 有讀取和寫入許可權
  • rwx 111 7 有全部許可權

例1:

例2:

  • 互動:rw- 的值是多少? 答: 4+2=6
  • rwx r-x r-x 的值是多少? 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx
    r-x r-x=7 5 5

文法:

chmod 755 檔案或檔案夾名字chmod a=rwx b.txt  等於 chmod 777 b.txt

例:

[[email protected] ~]# touch dd.txt[[email protected] ~]# ll dd.txt -rw-r--r-- 1 root root 0 5月   8 21:40 dd.txt[[email protected] ~]# chmod 755 dd.txt [[email protected] ~]# ll dd.txt -rwxr-xr-x 1 root root 0 5月   8 21:40 dd.txt[[email protected] ~]# chmod 700 dd.txt [[email protected] ~]# ll dd.txt -rwx------ 1 root root 0 5月   8 21:40 dd.txt
7.1.7 許可權對檔案和目錄的影響

有三種許可權可以應用:讀取,寫入與執行,這些許可權對訪問檔案和目錄的影響如下:
許可權 對檔案的影響 對目錄的影響

  • r(讀取) 可以讀取檔案的內容 可以列出目錄的內容(檔案名稱)
  • w(寫入) 可以變更檔的內容 可以建立或刪除目錄中的任意檔案
  • x(執行) 可以作為命令執行檔案 可以訪問目錄的內容(取決於目錄中檔案的許可權)
7.1.8 補碼

為什麼我們建立的檔案的許可權是644呢?
我們建立檔案的預設許可權是怎麼來的?

umask命令允許你設定檔案建立時的預設模式,對應每一類使用者(檔案屬主、同組使用者、其他使用者)存在一個相應的umask值中的數字檔案預設許可權=666 ,目錄預設許可權=777我們一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設定umask值。永久生效,編輯使用者的設定檔vim .bash_profile  [[email protected] ~]# vim /etc/profile

註: UID大於199 且使用者的組名和使用者名稱一樣,那麼 umask值為002,否則為022.
註: -gt 在shell中表示大於; id -g 顯示使用者組ID ,id -gn顯示組名。

臨時生效: umask 許可權補碼

[[email protected] ~]# umask 044[[email protected] ~]# touch ss.txt[[email protected] ~]# ll ss.txt -rw--w--w- 1 root root 0 5月   8 21:47 ss.txt

許可權的演算法:一般情況是:目錄預設許可權-umask 值

666-022=644  777-022=755 #這是一個好的記憶方法,但不嚴謹。

互動:umask掩碼為033 建立普通檔案後,許可權是什嗎?
互動:umask掩碼為033 建立普通檔案後,許可權是什嗎? 666-033=633 ( rw- -wx -wx) ?

例:[[email protected] ~]# umask 033[[email protected] ~]# touch k.txt[[email protected] ~]# ll k.txt -rw-r--r-- 1 root root 0 5月   8 22:00 k.txt答:結果為: 644 

許可權科學的計算方法:

  • 1、將預設許可權(目錄777,檔案666)和umask值都轉換為2進位 2、對umask取反 3、將預設許可權和umask取反後的值做與運算
    4、將得到的二進位值再轉換8進位,即為許可權,

例1: umask 為022

6  6  6            umask   0  2   2110 110 110               000 010  010    # 轉成二進位                            111 101  101    # umask取反的值110 110 110    與              #第二步,預設許可權和umask取反後的值做與運算111 101 101   # umask取反的值110 100 1006   4   4     #轉成8進位

例2: umask 為033 結果為: 644

6  6  6            umask   0  3   3110 110 110               000 011  011    # 轉成二進位                           111 100  100    # umask取反的值110 110 110    與              #預設許可權和umask取反後的值做與運算111 100 100   # umask取反的值110 100 1006   4   4    #轉成8進位

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:
①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥線上答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲端運算叢集架構師4冊書籍

7.2 檔案的特殊許可權:suid sgid sticky和檔案延伸權限ACL

  • 其實檔案與目錄設定不止這些,還有所謂的特殊許可權。由於特殊許可權會擁有一些“特權”.

  • 特殊許可權:
7.2.1 檔案的特殊許可權:suid sgid sticky
  • 1、SUID(set uid設定使用者ID):限定:只能設定在二進位可執行程式上面。對目錄設定無效

功能:程式運行時的許可權從執行者變更成程式所有者的許可權

  • 2、SGID:限定:既可以給二進位可執行程式設定,也可以對目錄設定
    功能:在設定了SGID許可權的目錄下建立檔案時,新建立的檔案的所屬組會,繼承上級目錄的所屬組
  • 3、Stickybit:粘滯位許可權是針對目錄的,對檔案無效,也叫防刪除位元 這3個特殊許可權對應的數值為

SUID SGID Stickybit

  • u+s或u=4 g+s或g=2 o+t或o=1
    SUID屬性一般用在可執行檔上,當使用者執行該檔案時,會臨時擁有該執行檔案的所有者許可權。使用”ls -l” 或者”ll”
    命令瀏覽檔案時,如果可執行檔所有者許可權的第三位是一個小寫”s”,就表明該執行檔案擁有SUID屬性。比如/usr/bin/passwd檔案

**互動: 普通使用者mk,沒有對shadow檔案寫入的許可權, 但是mk使用者使用passwd修改自己密碼時,可以修改shadow檔案中的內容,這是什麼原因
[[email protected] ~]# ll /etc/shadow
----------. 1 root root 1179 9月 19 2017 /etc/shadow
[[email protected] ~]# su - mk
上一次登入:二 5月 8 21:07:24 CST 2018pts/0 上
[[email protected] ~]$ passwd
更改使用者 mk 的密碼 。
為 mk 更改 STRESS 密碼。
(當前)UNIX 密碼:123456
新的 密碼:Xuegod666
重新輸入新的 密碼:Xuegod
666
passwd:所有的身分識別驗證令牌已經成功更新。
[[email protected] ~]# vim /etc/shadow #查看shadow檔案已經被mk使用者修改成功。
因為mk使用者執行passwd命令時,許可權會提升成root使用者,所以可以修改成功。**

例2:

[[email protected] ~]# useradd mk[[email protected] ~]# su - mk[[email protected] ~]$less /etc/shadow  #看不到內容[[email protected] ~]# su - root[[email protected] ~]# chmod u+s /usr/bin/less  #切換到root,給一個suid許可權[[email protected] ~]# su - mk[[email protected] ~]$ less /etc/shadow  #看到

查看u+s後的效果:

[[email protected] ~]# ll /usr/bin/less-rwsr-xr-x 1 root root 154536 Sep 26  2011 /usr/bin/less[[email protected] ~]# ps -axu | grep lessroot     43407  0.0  0.0 110260   980 pts/0    S+   22:30   0:00 less /etc/shadow

另外:

[[email protected] ~]# chmod 4755 /usr/bin/less  # 等同於 chmod u+s /usr/bin/less

SGID:

  • 限定:既可以給二進位可執行程式設定,也可以給目錄設定。
  • 功能:在設定了SGID許可權的目錄下建立檔案時,新建立的檔案的所屬組會繼承上級目錄的許可權。

    [[email protected] ~]# mkdir test
    [[email protected] ~]# ll -d test
    drwxr-xr-x 2 root root 4096 Jan 24 20:14 test
    [[email protected] ~]# chmod g+s test
    [[email protected] ~]# !ll
    ll -d test
    drwxr-sr-x 2 root root 4096 Jan 24 20:14 test

測試:sgid效果

 -[[email protected] ~]# chown :bin test/ [[email protected] ~]# touch   test/a.txt [[email protected] ~]# ll !$ ll test/a.txt   -rw-r--r-- 1 root bin 0 Jan 24 20:15 test/a.txt

Stickybit
限定:只作用於目錄
功能:目錄下建立的檔案只有root、檔案建立者、目錄所有者才能刪除。
例: 系統中的tmp目錄就是這樣

[[email protected] ~]# ll -d /tmp/drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/

用法:

chmod o+t /tmp/test/
7.2.1 檔案延伸權限ACL

擴充ACL :access control list
例:設定使用者mk對檔案a.txt擁有的rwx許可權 ,mk不屬於a.txt的所屬主和組,mk是other。怎麼做?

[[email protected] ~]# touch /tmp/a.txt[[email protected] ~]# getfacl  /tmp/a.txtgetfacl: Removing leading ‘/‘ from absolute path names# file: tmp/a.txt# owner: root# group: rootuser::rw-group::r--other::r--#setfacl -m u:mk:rwx   /tmp/a.txt     u : 設定某個使用者擁有的許可權[[email protected] ~]# getfacl  /tmp/a.txtgetfacl: Removing leading ‘/‘ from absolute path names...user::rw-user:mk:rwx[[email protected] ~]$ vim /tmp/a.txt [[email protected] ~]$ ll /tmp/a.txt -rw-rwxr--+ 1 root root 8 5月   8 22:42 /tmp/a.txt

例2: 給目錄加延伸權限

[[email protected] ~]# mkdir /tmp/test #setfacl -m d:u:mk:rwx    /tmp/test   # -d  default    設定預設acl,對目錄有效,此目錄下建立的目錄或檔案都繼承此acl許可權

例:測試一下 -d 參數:

[[email protected] ~]# mkdir /tmp/test [[email protected] ~]# setfacl -m d:u:mk:rwx    /tmp/test [[email protected] ~]# getfacl  /tmp/test/getfacl: Removing leading ‘/‘ from absolute path names# file: tmp/test/# owner: root# group: rootuser::rwxgroup::r-xother::r-xdefault:user::rwxdefault:user:mk:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x[[email protected] ~]# touch /tmp/test/a.txt[[email protected] ~]# mkdir /tmp/test/data[[email protected] ~]# getfacl /tmp/test/a.txt   #因為-d參數,所以test下所有建立的檔案和目錄都繼承了預設的acl許可權getfacl: Removing leading ‘/‘ from absolute path names# file: tmp/test/a.txt# owner: root# group: rootuser::rw-user:mk:rwx         #effective:rw-group::r-x          #effective:r--mask::rw-other::r--[[email protected] ~]# getfacl /tmp/test/datagetfacl: Removing leading ‘/‘ from absolute path names# file: tmp/test/data# owner: root# group: rootuser::rwxuser:mk:rwxgroup::r-xmask::rwxother::r-xdefault:user::rwxdefault:user:mk:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x

例3:給目錄下所有檔案都加延伸權限

[[email protected] ~]# setfacl -R -m u:lee:rw- testdirectory/    #-R一定要在-m前面,表示目錄下所有檔案[[email protected] ~]# setfacl -x u:mk /tmp/a.txt          # 去掉單個許可權[[email protected] ~]# setfacl -b  /tmp/a.txt              # 去掉所有acl許可權
7.3實戰:建立一個讓root都無法刪除的檔案

發現windows中 有檔案刪除不了,怎麼辦? 使用360 強制移除,粉碎檔案
那麼在Linux下怎麼辦?

[[email protected] ~]# touch hack.sh aa.sh [[email protected] ~]# ll hack.sh aa.sh -rw-r--r-- 1 root root 0 May 24 21:29 aa.sh-rw-r--r-- 1 root root 0 May 24 21:29 hack.sh[[email protected] ~]# rm -rf aa.sh***使用xshell悄悄執行在後台添加attr擴充屬性:(這個別讓學員看到^_^)[[email protected] ~]# chattr  +i hack.sh

刪除檔案:

[[email protected] ~]# rm -rf  hack.sh  #發現刪除不了

為什麼刪除不了?

從REHL6 開始,新增加檔案系統擴充屬性:
命令:chattr

  • 參數: a 只能追加內容 ; i 不能被修改
  • +a: 只能追加內容 如: echo aaa >> hack.sh
  • +i:即Immutable,系統不允許對這個檔案進行任何的修改。如果目錄具有這個屬性,那麼任何的進程只能修改目錄之下的檔案,不允許建立和刪除檔案。

註:immutable [??mju:t?bl] 不可改變的 ; Append [??pend] 追加

  • -i :移除i參數。 -a :移除a參數

解決:

[[email protected] ~]# lsattr hack.sh----i----------- hack.sh[[email protected] ~]# chattr -i hack.sh[[email protected] ~]# echo aa >> hack.sh[[email protected] ~]# lsattr hack.sh   #查看擴充屬性---------------- hack.sh[[email protected] ~]# chatchat    chattr  [[email protected] ~]# chattr +a hack.sh[[email protected] ~]# rm -rf hack.shrm: 無法刪除"hack.sh": 不允許的操作[[email protected] ~]# echo aaa >> hack.sh

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:
①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥線上答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲端運算叢集架構師4冊書籍

公眾號:

MK老師號:

總結:

  • 7.1檔案的基本許可權:r w x (UGO)
  • 7.2檔案的特殊許可權:suid sgid sticky和檔案延伸權限ACL
  • 7.3實戰:建立一個讓root都無法刪除的檔案

Centos7.5-檔案許可權管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.