1)設定權限
拷貝檔案/etc/fstab 到/var/tmp/fstab,配置檔案/var/tmp/fstab 的權限: 檔案/var/tmp/fstab 的擁有者是 root 使用者
檔案/var/tmp/fstab 屬于 root 組
檔案/var/tmp/fstab 對任何人都不可執行
使用者 natasha 能夠對檔案/var/tmp/fstab 執行讀和寫操作
使用者 harry 對檔案/var/tmp/fstab 既不能讀,也不能寫
所有其他使用者(目前的和将來的)能夠對檔案/var/tmp/fstab 進行讀操作
解題參考:
[root@localhost ~]# cp /etc/fstab /var/tmp/ -p //複制檔案
cp: overwrite ‘/var/tmp/fstab’? y
[root@localhost ~]# cd /var/tmp/
[root@localhost tmp]# ll fstab
-rw-r--r-- root root Oct : fstab
[root@localhost tmp]# setfacl -m u:natasha:rw fstab //設定ACL,natasha使用者讀寫權限
[root@localhost tmp]# setfacl -m u:harry:- fstab //設定ACL,harry無任何權限
2)建立共享目錄/home/admins
建立一個共享目錄/home/admins ,特性如下:
● /home/admins 目錄的組所有權是 adminuser
● adminuser 組的成員對目錄有讀寫和執行的權限。除此之外的其他所有使用者沒有任何
權限(root 使用者能夠通路系統中的所有檔案和目錄)
● 在/home/admins 目錄中建立的檔案,其組所有權會自動設定為屬于 adminuser 組
解題參考:
[root@localhost ~]# mkdir /home/admins //建立目錄
[root@localhost ~]# chown :adminuser /home/admins/ //設定數組
[root@localhost ~]# chmod 2770 /home/admins/ //設定特殊權限SetGID
解破析理
1)設定檔案權限
通路的方式(權限):rwx
對于檔案:
讀權限就是可以檢視文檔的内容;
寫權限就是可以修改檔案的内容;
執行權限,執行全縣就是使用者可以運作這個檔案
對于目錄:
讀權限相當于可以用ls看目錄下的内容;
寫權限就是可以改目錄的内容,比如删除,建立,改名,改權限等;
執行權限就是,使用者可以切換cd到這個目錄
文檔的歸屬
屬主User:擁有這個文檔的使用者
屬組Group:擁有這個文檔的組,這個就比如我們是幹運維的,我們就屬于運維組,這個運維組可以有好多使用者
其他使用者Other:
對一個檔案或目錄有什麼權限就是看這兩者的結合
檢視檔案權限:
ls -l:顯示檔案的屬性
ls -ld:顯示目錄的屬性
更改使用者的權限:
1、直接修改文檔的屬主或屬組
2、修改其他人的權限(不推薦,因為所有使用者都有權限,我們一般都會讓其有權限最小化)
更改通路權限:
chmod 文檔權限 文檔名
文檔權限:
屬組就是u、屬組就是g、其他使用者就是o
讀就是r、寫就是w、執行就是x
添加就是+、删除就是-,想讓其成為什麼權限就是=
也可以同時指定多個:ug+x,o-r
上面太麻煩,大招、、、
我們還可以用數字表示:
權限是8進制數:其中r為4、w為2、x為1
然後我們設定權限的時候可以通過權限相加來表示權限
其中表示的時候是用3個數字,第一個數字為屬主,第二個數字為屬組,第三個數字為其他使用者:
如果我們想修改檔案為屬主屬組所有權限,其他使用者沒權限,那麼就是
chmod 770 檔案名
如果我們修改的是一個目錄,且想将目錄連同目錄下的所有檔案的權限全部修改,那麼我們可以使用-R選項(遞歸)
更改歸屬:
chown
-R也是遞歸操作
chown 屬主:屬組 文檔
如果我們隻想修改屬主或者屬組,讓其保持原來的權限,那麼保持原來權限的位置就可以不寫:
chown 屬主 檔案
chown :屬組 檔案
3)給單獨使用者一個對檔案的特殊權限:setfacl
但是有些時候我們操作檔案時有時候不太友善,因為有時候我們可能像讓一個檔案對一個使用者有權限,但是這個使用者并不屬于這個檔案的屬主和屬組,那麼這時我們如果給其其他使用者這個權限就太不安全也是不允許的,這時我們就需要acl機制:
acl通路控制機制:
這個可以為個别使用者、組單獨設定權限
setfacl:設定文檔的通路控制清單
setfacl -m user:使用者名:權限 文檔
setfacl -m group:組名:權限 檔案
-R也可以遞歸
這時我們可以給一個檔案對natasha使用者有這樣的特殊的通路控制機制
檢視文檔的通路控制清單:
getfacl 檔案名
清空通路控制清單:
setfacl -b(block空白) 檔案名
但是不會清空基本權限
附權重限:
針對文檔的rwx的基本權限太少的問題,提出了附權重限的概念:
他能實作一些特殊的通路方式
由于他們是附權重限,是以他們不是獨立存在的,必須附加在文檔的指定位置(會讓指定位置的權限改變其原本的字元)
set uid:附加在屬主的x位上,并改變其為s
主要适用于可執行程式,如果檔案沒有x權限,那麼設定沒什麼意義,用于傳遞程式的所有者的權限(就類似于古時候我們欽差出門,我們皇帝會給其尚方寶劍,讓我們的欽差有皇帝的權限)
比如:我們可以看一下存儲密碼的檔案/etc/shadow,發現其沒有任何權限,但是我們想修改密碼,如果沒有特殊權限那麼就會寫不進去(除了root,但是我們其他的使用者也能修改其自己的密碼,在這個檔案中寫東西)
這時我們去看一下修改密碼的二進制程式的權限:
ls 0-l /usr/bin/passwd
這時這個程式就是一把尚方寶劍,拿着劍來行使皇帝的權限
執行程式的人擁有程式屬主的權限
set gid:附加在屬組的x位上,并改變其為s
基本和suid相同,但是我們修改權限一般會讓其讓其最大化,沒必要讓其和屬主的相同,不過他還有其他作用,适用于目錄,用來傳遞目錄的屬主身份:(如果我們沒有使用這個特殊權限的時候,那麼我們建立檔案時,屬組就會是建立此檔案的使用者的屬組,但是如果我們有這個特殊權限,那麼我們在這個目錄中建立的檔案就會是目錄的屬組)
建立文檔自動屬于這個組
sticky bit(粘滞位):附加在其他人的x位上,并改變其為t
适用于多個使用者都有寫入權限的目錄(/tmp,我們所有使用者都可以在此目錄有寫入權限,這時如果我們不給此目錄一些限制的話,我們超級使用者在跑一個程式,并在tmp目錄下有一些臨時檔案,而我們随便過來一個使用者就能将其檔案删除,還有就是我們張三建立的檔案,李四就能删除,這樣是不合理的)這時我們就需要進行限制,阻止對目錄w權限的濫用,如果加上此權限,那麼我們每個使用者隻能删除自己的檔案,不能删除其他人的檔案
suid是4、sgid是2、粘滞位是1
我們的附權重限也可以用數字表示,當我們寫三個數字的時候預設是屬主屬組和其他使用者的權限;但是當我們寫四個數字的時候,後三個預設還是屬主屬組和其他使用者的權限,但是第一個數字就代表附權重限,其中suid是4、sgid是2、粘滞位是1