[toc] linux許可權管理 特殊許可權 一,特殊許可權 1.suid(4000) SetUID(suid):會在屬主許可權位的執行許可權上寫個s 如果該屬主許可權位上有執行許可權,則:s 如果該屬主許可權位上沒有執行許可權,則:S 授權方式 setuid總結: 1.讓普通用戶對可執行的二進位文件,臨時擁有二 ...
目錄
linux許可權管理-特殊許可權
一,特殊許可權
1.suid(4000)
SetUID(suid):會在屬主許可權位的執行許可權上寫個s
如果該屬主許可權位上有執行許可權,則:s
如果該屬主許可權位上沒有執行許可權,則:S
授權方式
chmod u+s filename
chmod 4755 filename
setuid總結:
1.讓普通用戶對可執行的二進位文件,臨時擁有二進位文件的屬主許可權
2.如果設置的二進位文件沒有執行許可權,那麼suid的許可權顯示就是S
3.特殊許可權suid僅對二進位可執行程式有效,其他文件或目錄則無效
2.sgid(2000)
[root@oldboyedu ~]# ll /bin/write
-rwxr-sr-x. 1 root tty 19624 Oct 31 2018 /bin/write
setgid(sgid):會在屬組許可權位的執行許可權上寫個s
如果該屬組許可權位上有執行許可權,則:s
如果該屬組許可權位上沒有執行許可權,則:S
授權方式
[root@db04 ~]# chmod 2755 /tmp/test/
[root@db04 ~]# chmod g+s /tmp/test/
作用:1.針對用戶組許可權位修改,用戶創建的目錄或文件所屬組和該目錄的所屬組一致。
2.當某個目錄設置了sgid後,在該目錄中新建的文件不在是創建該文件的預設所屬組
3.使用sgid可以使得多個用戶之間共用一個目錄的所有文件變得簡單。
3. sbit
粘滯位:
[root@oldboyedu ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 105 Jul 2 10:15 /tmp/
如果該其他用戶許可權位上有執行許可權,則:t
如果該其它用戶許可權位上沒有執行許可權,則:T
授權方式:
[root@db04 ~]# chmod 1755 /opt
[root@db04 ~]# chmod o+t /opt
sticky(SI TI KI)粘滯,目前只對目錄有效,作用如下:
普通用戶對該目錄擁有w和x許可權,即普通用戶可以在此目錄中擁有寫入許可權,如果沒有粘滯位,那麼普通用戶擁有w許可權,就可以刪除此目錄下的所有文件,包括其他用戶建立的文件。但是一旦被賦予了粘滯位,除了root可以刪除所有文件,普通用戶就算有w許可權也只能刪除自己建立的文件,而不能刪除其他用戶建立的文件。
註意:系統中存在的/tmp目錄是經典的粘滯位目錄,誰都有寫許可權,因此安全成問題,常常是木馬第一手跳板。
特殊許可權總結
SUID
主要是對命令,或者二進位文件,以該二進位文件的屬主許可權來執行該文件 命令:passwd
2.SGID
主要是針對目錄進行授權,共用目錄3.SBIT
粘滯位,即便是該目錄擁有w許可權,但是除了root用戶,其他用戶只能對自己的文件進行刪除、移動操作
一個普通用戶:zls 屬於 oldboyedu這個組
一個文件許可權:rwxrw-r-x root.oldboyedu filename1
zls對文件的許可權:rw-
r:讀
w:寫
x:執行
suid:4000
sgid:2000
t:1000
Linux許可權屬性chattr概述
chattr只有root用戶使用,用來修改文件系統許可權屬性,建立凌駕於rwx基礎許可權之上的授權
chattr命令格式:[root@db04 ~]# #chattr【 +-=】[選項] 文件名或目錄名
lsattr:查看特殊許可權
chattr:設置特殊許可權
i:鎖定文件,不能編輯,不能修改,不能刪除,不能移動,可以執行
a:僅可以追加文件,不能編輯,不能刪除,不能移動,可以執行
設置文件屬性(許可權)針對所有用戶,包括root
#選項:+增加許可權 -減少許可權 =等於某個許可權
#a:讓文件或目錄僅可追加內容
#i:不得任意更動文件或目錄
#創建文件並設置屬性
[root@zls ~]# touch file_a file_i
[root@zls ~]# lsattr file_a file_i
---------------- file_a
---------------- file_i
#設置屬性
[root@zls ~]# chattr +a file_a
[root@zls ~]# chattr +i file_i
[root@zls ~]# lsattr file_a file_i
-----a---------- file_a
----i----------- file_i
#a許可權, 無法覆蓋寫入和刪除文件
[root@zls ~]# echo "aa" > file_a
bash: file_a: Operation not permitted
[root@zls ~]# rm -f file_a
rm: cannot remove ‘file_a’: Operation not permitted
#a許可權, 只能追加, 適用於日誌文件
[root@zls ~]# echo "aa" >> file_a
#i許可權, 無法寫入, 無法刪除
[root@zls ~]# echo "i" > file_i
bash: file_i: Permission denied
[root@zls ~]# echo "i" >> file_i
bash: file_i: Permission denied
[root@zls ~]# rm -f file_i
rm: cannot remove ‘file_i’: Operation not permitted
#解除限制
[root@zls ~]# chattr -a file100
[root@zls ~]# chattr -i file200
linux進程掩碼umask
umask如何改變新文件許可權
系統預設umask為022,那麼當我們創建一個目錄時,正常情況下目錄的許可權應該是777,但是umask表示要減去的值,所以新目錄文件的許可權應該是777-022=755。至於文件的許可權也依次類推:666-022=644
umask涉及的配置文件
/etc/bashrc
/etc/profile
~/.bashrc
~/.bash_profile
註意:
umask影響的範圍
shell (vim,touch) --umask--> 新文件或目錄許可權
vsftpd --umask--> 新文件或目錄許可權
samba --umask--> 新文件或目錄許可權
useradd --umask--> 用戶 HOME
1,在shell進程中創建文件
//查看當前用戶的umask許可權
[root@zls ~]# umask
0022
[root@zls ~]# touch file0022
[root@zls ~]# mkdir dir0022
[root@zls ~]# ll -d file0022 dir0022/
drwxr-xr-x 2 root root 6 Jan 24 09:02 dir0022/
-rw-r--r-- 1 root root 0 Jan 24 09:02 file0022
2,修改shell umask值(臨時生效)
[root@zls ~]# umask 000
[root@zls ~]# mkdir dir000
[root@zls ~]# touch file000
[root@zls ~]# ll -d dir000 file000
drwxrwxrwx 2 root root 6 Jan 24 09:04 dir000
-rw-rw-rw- 1 root root 0 Jan 24 09:04 file000
3,修改shell umask(永久生效,不建議)
[root@zls ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
//立即在當前 shell 中生效
[root@zls ~]# source /etc/profil