linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表

權限管理:



TIP 1:
如果要用cp拷貝/etc/fstab文件到 /root/dir目錄內,最起碼需要文件和目錄各有什麼權限才能夠拷貝過去?

答:cp命令需要有執行權限,fstab文件要有r讀的權限,dir目錄要有wx讀和執行的權限


TIP 2:

  • 如果用戶jincheng 對目錄 Music 只有 r 權限,那麼就只能 ls dir/內的文件名稱而已,具體的權限無法使用 ls -l 查看,也無法 cd 進入該目錄。
  • 如果該用戶對目錄 Music 只有 x 權限,即可以 cd 進入該目錄,事先知道內部有文件且知道文件名稱的情況下,可以 ls -l Music/ct1.conf,查看該文件的權限,若對該ct1.conf有讀權限,也可以 cat Music/ct1.conf 文件內容。
  • 如果該用戶對目錄 Music 只有 w 權限,無法進行任何操作,起碼需要加上 x 權限纔可以在該文件夾內touch rm cat,如果知道內部文件名稱還可 ls -l Filename。

TIP3
chmod -R g+rwX /testdir X 權限位 針對文件夾增加 x 權限,-R遞歸文件夾內的文件夾增加 x 權限,如果遞歸文件夾內的文件有 x 權限,則ugo全部加上 x 權限。


TIP4
創建一個用戶jincheng,刪除其家目錄後,如何重新創建其家目錄?
首先考慮tom創建用戶時會把/etc/skels裏的文件放到jincheng家目錄內,所以創建文件後要拷貝文件過去,其次jincheng對家目錄及內部文件具有完全控制權限,要修改目錄和內部文件權限
拷貝/etc/skels裏的文件放到jincheng
/etc/skels裏的文件放到jincheng
更改屬主屬組
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
修改權限
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
查看內部文件
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP5
現有一項目,有兩人蔘與,分別爲jincheng martin,需要在某文件夾進行文件存放,相互之間可以修改,但不可刪除。要怎麼做?
1,創建devop組
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
2,將兩人加入到同一附加組devop中
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
3,更改programme文件夾屬組爲devop
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表

3,創建programme文件夾,並設置3777權限,加入SGID和Sticky位,分別爲了在文件夾內創建文件爲devop組和禁止用戶相互刪除對方文件。
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
4,測試效果,兩個用戶分別創建文件,martin進行修改jincheng創建的文件,顯示可以寫入文本,但刪除時提示無權限。
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP6
如果這個程序一開始沒有x權限,會顯示位 S 否則顯示爲 s
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP7
在/data目錄下新建一個martin.txt的文件,對其加以chattr +i權限後,即使是root用戶對此文件也無法刪除,改名和更改。但可以cp該文件,但特定屬性不會跟隨。
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP8
例如:
/data/下有個文件martin.txt,其他人權限爲只讀,對jincheng設置acl,讓其無法訪問和此文件。
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
刪除用戶額外acl
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
/data/下有個文件martin.txt,其他人權限爲只讀,對devop組設置acl,使其內部的用戶martin和jincheng,可以對該文件進行讀寫操作,下圖測試cp命令是,因爲/data文件夾無寫權限,所以拷貝失敗。
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP9
如果jincheng.txt文件設置acl之後,權限後面會多一個+,默認顯示的權限爲acl權限,而非原始的ugo權限,可設置遮罩mask,統一更改用戶對該文件的訪問權限,如下列mask,修改後的情況
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP10
如果一個服務需要用到一個文件夾,這個用戶對內部所有文件都需要設置權限,可使用acl遞歸設置權限,方便後續還原原本文件夾權限
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
待所有配置完成後,恢復該文件夾原有的權限
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


TIP11
備份acl後刪除acl,最後還原acl
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
恢復acl.txt方法有兩種,
其一
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表
其二
linux系統上權限管理,特殊權限,文件特定屬性以及訪問控制列表


文件:
r:可以使用內容查看類的命令來顯示其相關內容
w: 可以使用編輯器修改其內容
x:可以將其發起一個進程
目錄:
r:可以使用ls命令查看目錄內容的文件信息
w:可以創建、刪除文件
x:可以使用ls -l命令來查看目錄內容的文件信息,並且可以使用cd命令切換此目錄爲工作目錄:

文件的權限主要針對三類對象定義:

owner:屬主 u
group:屬組 g
other:其他 o


每個文件針對每類訪問者都定義了三種權限:

r:readable
w:writeable
x:excutable


權限位

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
750:rwxr-x---


修改文件權限:chmod



chmod [OPTION]... OCTAL-MODE FILE...
-R:遞歸修改權限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一類用戶的所有權限:
u=
g=
o=
ug=
a= #所有
u=,g=
修改一類用戶某位或某些位權限
u+
u-
chmod [OPTION]... --reference=RFILE FILE...
參考RFILE文件的權限,將FILE的修改爲同RFILE
例如:
chgrp sales testfile
chown root:admins testfile
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
chown mage testfile


修改文件的屬主和屬組:僅root可用



修改文件的屬主:chown

chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP

注意:命令中的冒號可用.替換

-R:遞歸
chown [OPTION]... --reference=RFILE FILE...



修改文件的屬組:chgrp

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
文件或目錄創建時的遮罩碼:umask
FILE: 666-umask


注意:如果某類的用戶的權限減得的結果中存在x權限,則將其權限+1

DIR:777-umask
umask:查看
umask #:設定
例如:
umask 002
umask u=rw,g=r,o=
僅對當前用戶的當前shell進程有效,若想一直生效,可修改全局設置: /etc/bashrc 用戶設置:~/.bashrc
umask –S 模式方式顯示
umask –p 輸出可被調用


特殊權限:SUID,SGID,Stikcy



1.權限

r,w,x
user group other


2.安全上下文

前提:進程有屬主和屬組,文件有屬主和屬組
1.任何一個可執行文件能不能啓動爲進程,取決於發起者對程序文件是否擁有執行權限
2.啓動進程之後,其進程的屬主爲發起者,屬組爲發起者所屬的組
3.進程訪問文件時的權限,取決於進程的發起者
4.進程的發起者,同文件的屬主,則應用文件屬主權限
5.進程的發起者,屬於文件的屬組,則應用文件屬組權限
6.進程的發起者,屬於其他用戶,則應用文件其他權限


3.SUID

1.任何一個可執行文件能不能啓動爲進程,取決於發起者對程序文件是否擁有執行權限
2.啓動爲進程之後,其進程的屬主仍爲原程序文件的屬主
權限設定:
chmod u+s FILE...
chmod u-s FILE...


4.SGID

默認情況下,用戶創建文件時,其屬組爲此用戶所屬的基本組
一旦某目錄被設定了SGID,則對此目錄具有寫權限的用戶在此目錄中創建的文件所屬的組爲此目錄的屬組
權限設定:
chmod g+s DIR...
chmod g-s DIR...


5.Sticky

對於一個多人可寫的目錄,如果設置了sticky,則每個用戶僅能刪除自己的文件
權限設定:
chmod o+t DIR...
chmod o-t DIR...
SUID SGID STICKY
chmod 1777 /tmp/kk.txt
幾個權限位映射:
SUID:user佔據屬主的執行權限位
s:屬主擁有x權限
S:屬主沒有x權限
SGID:group佔據屬主的執行權限位
s:group擁有x權限
S:group沒有x權限
sticky:other佔據屬主的執行權限位
t:other擁有x權限
T:other沒有x權限


設定文件特定屬性



chattr +i 不能刪除,改名,更改
chattr +a 只能追加內容
lsattr 顯示特定屬性


訪問控制列表



ACL:Access Control List,實現靈活的權限管理
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
CentOS7 默認創建的xfs和ext4文件系統具有ACL功能
CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效順序:所有者,自定義用戶,自定義組,其他人


爲多用戶或者組的文件和目錄賦予訪問權限rwx
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -Rm g:sales:rwX directory 遞歸對目錄設置acl權限
setfacl -Rb directory 對目錄內遞歸刪除設置的acl權限
setfacl -M file.acl file|directory 根據file.acl內設置的權限對file或directory設置權限
setfacl -m g:salesgroup:rw file| directory 此選項爲給salesgroup組設置權限,使屬於這個組的用戶對file或directory具有rw權限
setfacl -m d:u:wang:rx directory 此選項爲對目錄設置acl ,其下創建的目錄對wang用戶繼承acl權限
setfacl -x u:wang file |directory :此選項不能完全刪除文件acl權限,完全清楚所有acl,使用-b選項
setfacl -X file.acl directory


ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限
getfacl 可看到特殊權限:flags
通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
base ACL 不能刪除
setfacl -k dir 刪除默認ACL權限
setfacl –b file1清除所有ACL權限
getfacl file1 | setfacl --set-file=- file2 複製file1的acl權限給file2


mask隻影響除所有者和other的之外的人和組的最大權限
Mask需要與用戶的權限進行邏輯與運算後,才能變成有限的權限(Effective Permission)
用戶或組的設置必須存在於mask權限設定範圍內纔會生效 setfacl -m mask::rx file
--set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以
示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1


備份和恢復ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1


練習

1,在/testdir/dir裏創建的新文件自動屬於devop組,組apps的成員如:jinchengt能對這些新文件有讀寫權限,組dbs的成員如:martin只能對新文件有讀權限,其它用戶(不屬於webs,apps,dbs)不能訪問這個文件夾
2,備份/testdir/dir裏所有文件的ACL權限到/root/acl.txt中,清除/testdir/dir中所有ACL權限,最後還原ACL權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章