1.特殊權限
特殊權限分為三種:setuid,setgid,sbit
1)setuid
- 用戶運行起來程序叫做進程,用戶用cat命令查看一個文件,看的是這個用戶對這個文件有沒有權限
簡稱suid,可以對二進制文件進行使用,對二進制文件設置suid權限后,普通用戶使用該二進制文件對一個文件進行操作時,會使用這個二進制文件屬主的身份對文件進行操作。
可以使用chmod u+s 或者 chmod 4---來設置權限
[root@oldboy-1 ~] ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@oldboy-1 ~]# ll /etc/shadow
----------. 1 root root 1692 Aug 8 15:14 /etc/shadow
#密碼信息存放在/etc/shadow中,但是對任何人沒有權限,除了root外,任何用戶不能查看,編輯該文件
#但是,加了setuid權限之后,普通用戶會繼承cat命令屬主的身份,也就是說,普通用戶會以root身份查看該文件,那么就可查看該文件的內(nèi)容
2)setgid
setgid,可以對目錄進行附加setgid權限,對目錄附加setgid權限之后,在其目錄下創(chuàng)建的目錄或文件默認都將繼承上一級目錄的屬組
chmod g+s 或者 chmod 2---設置setgid權限
[root@oldboy-1 ~] chmod g+s test/
[root@oldboy-1 ~] ll -d test/
drwxr-sr-x. 2 root GG 6 Aug 6 17:19 test/
[root@oldboy-1 ~] mkdir test/admix
[root@oldboy-1 ~] ll -d test/admix/
drwxr-sr-x. 2 root GG 6 Aug 8 16:11 test/admix/
#給test目錄賦予setgid權限,到test目錄下創(chuàng)建的文件或者目錄默認屬組就是test的屬組,這樣我們可以實現(xiàn)同一個屬組內(nèi)的文件共享
3)sbit
sbit是粘連位,對一個目錄設置粘連位之后,每個目錄自己創(chuàng)建的文件或目錄,只能自己刪除,別的用戶刪除不了,并且不能進行編輯(root用戶除外)
chmod o+t 或者chmod 1--- 設置sbit權限
[root@oldboy-1 home] chmod 1777 test/
[root@oldboy-1 home] ll -d test/
drwxrwsrwt. 3 root GG 19 Aug 8 16:11 test/
[syy@oldboy-1 test]$ touch file1
[sg@oldboy-1 test]$ rm -rf file1
rm: cannot remove ‘file1’: Operation not permitted
#給test目錄設置粘連位之后,syy用戶創(chuàng)建了一個文件file1,但是sg用戶刪除不了,所以,這就是sbit權限的作用
2.高級權限
chattr可以設置一些權限給目錄或者文件,這些權限是高于普通權限的,如果修改之后,也可以對root進行權限限制,chattr 可以使用+ - = 來設置權限
chattr +a #可以對文件或者目錄使用,a選項可以對文件進行上鎖,是文件只能追加,不能做其他的操作,這個命令常用于一些重要的日志文件
chattr +i #可以對文件進行上鎖,任何人對這個文件不能做任何操作,包括root,這個命令常用于/etc/passwd ,通常公司用戶創(chuàng)建足夠之后,就不會再允許別人創(chuàng)建用戶,可以用chattr+i實現(xiàn)
lsattr #查看文件的高級權限
3.umask
umask是系統(tǒng)創(chuàng)建默認權限的依據(jù),umask涉及到的相關文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
#如果一個用戶的uid大于199 并且 如果用戶的屬主等于屬組,那么umask=002,不然,umask就是022
ps:1)一般文件的權限都是666-022=644
一般目錄的權限都是777-022=755
2)如果文件的權限有奇數(shù),那么,權限就會加一
例如 如果umask=033
那么 666-033=633 后面兩位是奇數(shù),就得加一 權限就是644
3)用umask 后面加值,可以臨時的修改umask值