一、基本權限
基本概述:不同用戶有不同權限,在服務器上,每個用戶都會定義合理的等級。一般只有一個管理員,其他都是普通用戶。
二、文件基本權限
1.Linux文件權限的設定
- r w x
文件類型(-:普通文件 d:目錄文件 l 軟連接文件)
R:讀 ?w:寫 ?x:執行
修改權限命令:
Chmod 【選項】 模式 文件名
選項:-R 遞歸
模式:[ugoa][+ - =][rwx] //
??????[mode=421]
a:所有人
權限的數字表示:
R:4(2*2) ????w:2(2*1) ?????x:1(2*0)?
例: rwxr-xr-x ?:755
2.Linux文件權限的作用
3.linux中權限對目錄的作用
對文件來講:最高權限是x(執行)
對目錄來講:最高權限是w(寫)
#whoami ??//查看當前用戶
#uaseradd user1 ?//添加用戶user1
#passwd user1 ???//更改user1用戶的密碼
#是超級用戶登錄時候的提示符;$是普通用戶登錄的提示符
4.linux中其他權限的作用
#chown 用戶名 文件名 ??//修改文件所有者 ?如果需要一個普通用戶對一個文件有7權限,可以使用此命令
#chgrp 用戶組 文件名 ?//修改文件的所屬組
Linux中,不管添加多少用戶,都會默認添加一個與用戶名稱相同的組作為初始組
#chown root:root 123 ?//修改文件的用戶組和用戶 為root
例子:#groupadd user //添加一個user用戶組
#gpasswd -a user1 user ?//把user1用戶加入到user組?
三、默認權限
1.文件的默認權限
1)文件的默認權限:Windows中,新建文件的權限是由上級所在目錄繼承過來的。
Linux中,是通過umask來定義文件的默認權限。
#umask ?//查看默認權限
此時回車之后控制臺自己輸出的0022 ?//第一位0:文件的特殊權限 ?022:文件的默認權限.
文件的默認權限:
①文件默認不能建立為執行文件,必須手工賦予執行權限
②所以文件的默認權限最大為666
③默認權限需要換算成字母再相減
④建立文件之后的默認權限,為666減去umask的值
例子:文件的默認最大權限666,umask的值是022
??????-Rw-rw-rw- 減去 ?- - - -w- -w 等于 -rw-r- -r- -
2.目錄的默認權限
目錄的默認權限:
①目錄的默認權限最大是777
②默認權限需要換算成字母再相減
③建立文件之后的默認權限,為777減去 umask的值
例子:目錄默認最大權限是777? umask值是022
?????-Rwxrwxrwx ?減去 - - - - -w- - w - 等于 -rwxr-xr-x
修改umask的值
?- umask 0002 //臨時修改
??Vi /etc/profile //永久修改
四、特殊權限
1.簡介
簡介:所有者和所屬組有讀寫執行權限,其他人無權限。但是此時想要將一個人賦予權限r-w權限。不考慮這個用戶是所有者還是所屬組,直接把這個用戶拿出來,賦予它acl的權限。
如何做:
第一步:查看分區acl權限是否開啟
#dumpe2fs -h /dev/sda5 ??//dumpe2fs命令是查詢指定分區詳細文件系統信息的命令
選項:-h ?//僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息
第二步:如果ACL權限沒有打開,需要臨時開啟ACL權限
#mount -o remount,acl / ??//重新掛載根分區,并掛載加入acl權限
第三步:如果想要ACL權限永久生效,需要修改配置文件
#vi /etc/fstab
2.linux中acl權限查看與設定
?#getfacl 文件名 ?//查看acl的權限
?????#setfacl 選項 文件名 //設定acl權限的命令
選項:-m:設定acl權限
???????????-x:刪除指定的acl的權限
???????????-b:刪除所有的acl的權限
???????????-d:設定默認acl的權限
???????????-k :刪除默認的ACL的權限
???????????-r:遞歸設定acl的權限
3.ACL最大權限與刪除
1)最大有效權限mask
Mask是用來指定最大有效權限的。如果給用戶賦予了acl權限,是需要和mask的權限“相與”才能得到用戶的真正權限。
2)刪除acl權限
#setfacl -x u:用戶名 文件名 ??//刪除指定用戶的acl權限
#setfacl -x g:組名 文件名 ??//刪除指定用戶組的acl權限
#setfacl -b 文件名 ????????//刪除文件的所有的acl權限
4.默認的ACL權限和遞歸ACL權限
如果使用遞歸權限,就難以避免會出現權限溢出。因為執行權限,對目錄和文件是不一樣的,如果對目錄賦予權限,對該目錄下的文件賦予遞歸權限,該文件就會得到目錄的權限。除非,對該目錄下的文件一個一個賦予權限,就可以避免權限溢出。
如果遞歸之后,又重新建立文件,此時新建的文件,沒有遞歸的權限。但是可以使用默認權限。
此時再新建文件,就會有acl權限了。
默認權限也是只針對目錄生效!?。。?/p>
五、Sudo權限
1.基本概述
root把本來只能超級用戶執行的命令賦予普通用戶執行, Sudo的操作對象是系統命令。
例子:授權普通用戶重啟電腦
#visudo
#su - user1 ???//普通用戶登錄
#sudo /sbin/shutdown ??//普通用戶重啟電腦?
2.授權普通用戶可以添加其他用戶
用戶如果不設定密碼時,無法正常登錄;所以要給它賦予設定密碼的權限。
例子:給普通用戶賦予vi權限,可以查看修改/etc/shadow文件
#visudo
添加# ?user1 ALL=/bin/vi
此時普通用戶會有vi權限
普通用戶登錄之后
$ sudo /bin/vi ?/etc/shadow ?
六、特殊文件權限
注:特殊權限盡量少去修改。
1.SetUID功能:
①只有可以執行的二進制程序才能設定SUID權限
②命令執行者要對該程序擁有x(執行)權限
③命令執行者在執行該程序時獲得該程序文件屬主的身份(在執行程序的過程中,靈魂附體為文件的屬主)
④SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效。
當輸入mask的時候,回車會出現 0022;第一位0就是特殊權限,后三位是文件的基本權限。
2.取消SetUID的方法
#chmod 0755 文件名 ?//取消文件的權限,用0
#chmod u -s 文件名 ?//取消組文件的權限
注意:
①關鍵目錄應嚴格控制寫權限。比如“/”“/usr”等
②用戶的密碼設置要嚴格遵守密碼三原則
③對系統中默認應該具有SetUID權限的文件作一列表,定時檢查有沒有這之外的文件被設置了SetUID權限。
?Suid腳本:定時檢查有沒有文件被設置了suid權限。
3.linux中的setGID
SetGID針對文件的作用:
①只有可執行的二進制程序才能設置SGID權限
②命令執行者要對該程序擁有x(執行)權限
③]命令執行在執行程序的時候,組身份升級為該程序文件的屬組
④SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效。
例子:
①/usr/bin/locate是可執行二進制程序,可以賦予SGID
②執行用戶lamp對/usr/bin/locate命令擁有執行權限
③執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db 數據庫擁有r權限,所以普通用戶可以使用locate命令 查詢 mlocate.db數據庫
④命令結束,lamp用戶的組身份返回為lamp組
SetGID針對目錄的作用:
①普通用戶必須對此目錄擁有r和x權限,才能進入此目錄
②普通用戶在此目錄中的有效組會變成此目錄的屬組
③若普通用戶對此目錄擁有w權限時候,新建的文件的默認屬組是這個目錄的屬組
4.SBIT權限
SBIT粘著位的作用
①粘著位目前只是針對目錄有效
②普通用戶對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入權限
③如果沒有粘著位,因為普通用戶擁有w權限,所以可以刪除此目錄下的所有文件。
一旦賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。
注意:不建議手工建立擁有粘著位的目錄,因為它要求必須給其他用戶賦予7最高權限。
設置粘著位:
#chmod 1755目錄名
#chmod o+t目錄名
取消粘著位:
#chmod 0777目錄名
#chmod o-t目錄名
七、不可改變位權限
chattr權限:
Chattr [+ - =] [選項] 文件或者目錄名
?+:增加權限
?-:刪除權限
?=:等于某權限
[選項]:
i:等價于insert。如果對文件設置i屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據;如果對目錄設置i屬性,那么只能修改目錄文件下的數據,但不允許建立和刪除文件。
A:等價于append(追加)。如果對文件設置a屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據;如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除。
不僅對于文件如此;對目錄也是如此(目錄中的文件的內容可以修改)