Linux 文件特殊權限_013

 

 

***Linux 系統文件除了9位基本權限,還有額外3位特殊權限,分別是SUID(setuid),SGID(setgid),SBIT(sticky bit)linux

 

 

1、Linux 系統文件3位特殊權限位說明安全

 

標註:這3位特殊權限不建議使用(除系統默認的特殊權限可使用之外),除非有特殊需求bash

 

特殊權限app

特殊權限位小寫優化

特殊權限位大寫ui

權限值this

s (suid)spa

小寫s (有suid執行權限)ci

大寫S (無suid執行權限)rem

4

s (sgid)

小寫s (有sgid執行權限)

大寫S (無sgid執行權限)

2

t(sticky bit)

小寫t (有sticky bit執行權限)

大寫T (無sticky bit執行權限)

1

0恢復文件原來權限,chmod 0755 file

 

 

 

SUID

標註:見下面範例1

一、SUID是對二進制命令或二進制程序有效,對目錄無效

二、普通用戶具備該文件其它用戶x執行權限並分配了s權限將具備文件全部者的權限

三、用戶屬主對應的前三位權限的x位上若是有s就表示suid權限,當x位上沒有小寫x執行權限時候,suid的權限顯示就是大S

四、suid權限僅在程序命令執行過程當中有效

五、suid功能是一把雙刃劍,是一個比較危險的功能,對系統安全有必定威脅系統,suid的無用的功能取消suid權限(安全優化)

 

 

SGID

標註:見下面範例2

一、SGID和SUID不一樣之處在於,SGID能夠用於目錄

二、SGID的權限s是出如今文件用戶組的x權限位上

 

SGID針對文件

一、sgid僅對二進制命令程序有效

二、普通用戶具備該文件其它用戶x執行權限並分配了s權限將具備文件所屬用戶組的權限

三、執行命令任意用戶能夠獲取該命令程序執行期間所屬用戶組的權限

 

SGID針對目錄

一、linux 默認狀況全部用戶建立文件,默認用戶和組都是自身

二、sgid可讓用戶再此目錄下建立的文件和目錄,具備和此目錄相同的用戶組設置

sgid位主要用在目錄中,當爲某個目錄設置sgid位之後,在改目錄中

新建立的文件具備改目錄的所屬組權限,而不是建立改文件的用戶的默認

全部者,這樣,使得在多個用戶之間共享一個目錄中的文件變得簡單

 

 

SBIT  (粘滯位)

標註:見下面範例3

一、SBIT與SUID,SGID不一樣的是,SBIT只能用於目錄

二、普通用戶在該目錄下,僅目錄屬主與root纔有權力刪除\移動\重命名目錄

三、若是目錄權限是777並添加粘滯位t,普通用戶能夠在此目錄下建立文件和目錄

 

 

 

 

2、特殊權限位設置方法

 

範例1:SUID設置方法

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 root root 4096 Dec  5 19:16 /oldboy/

[root@oldboy ~]# ls -l /oldboy/test.sh

-rw-r--r-- 1 root root 0 Dec  5 19:16 /oldboy/test.sh

[root@oldboy ~]# which rm

alias rm='rm -i'

    /bin/rm

[root@oldboy ~]# ls -l /bin/rm

-rwxr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

rm: remove write-protected regular empty file `/oldboy/test.sh'? y

rm: cannot remove `/oldboy/test.sh': Permission denied

[oldboy@oldboy ~]$ su - root

Password:

[root@oldboy ~]# ls -l /bin/rm

-rwxr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# chmod u+s /bin/rm              ##等同命令chmod 4755 /bin/rm,取消suid命令 chmod u-s /bin/rm或chmod 0755 /bin/rm

[root@oldboy ~]# ls -l /bin/rm

-rwsr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

[oldboy@oldboy ~]$ ls -l /oldboy/

total 0

 

 

範例2:GUID設置方法

 [root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 root root 4096 Dec  5 19:28 /oldboy/

[root@oldboy ~]# chown oldboy.incahome /oldboy/

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 oldboy incahome 4096 Dec  5 19:28 /oldboy/

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# ls -l /oldboy/test.sh

[root@oldboy ~]# ls -l /oldboy/

total 0

-rw-r--r-- 1 root root 0 Dec  5 19:29 test.sh

[root@oldboy ~]# chmod g+s /oldboy/               ##等同命令chmod 2755 /bin/rm,取消guid命令 chmod g-s /bin/rm或chmod 0755 /bin/rm

[root@oldboy ~]# touch /oldboy/file.txt

[root@oldboy ~]# ls -l /oldboy/

total 0

-rw-r--r-- 1 root incahome 0 Dec  5 19:29 file.txt

-rw-r--r-- 1 root root     0 Dec  5 19:29 test.sh

 

 

範例3:SBIT設置方法

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# mkdir /oldboy/share

[root@oldboy ~]# chmod 777 /oldboy/

[root@oldboy ~]# chmod 777 /oldboy/share/

[root@oldboy ~]# chmod 777 /oldboy/test.sh 

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwx 2 root root 4096 Dec  6 10:23 /oldboy/

[root@oldboy ~]# ls -l /oldboy/

total 4

drwxrwxrwx 2 root root 4096 Dec  6 10:24 share

-rwxrwxrwx 1 root root    0 Dec  6 10:23 test.sh

[root@oldboy ~]# chmod 1777 /oldboy/            ##等同命令chmod o+s /oldboy

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwt 3 root root 4096 Dec  6 10:24 /oldboy/

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

rm: cannot remove `/oldboy/test.sh': Operation not permitted

[oldboy@oldboy ~]$ rm -rf /oldboy/share/

rm: cannot remove `/oldboy/share': Operation not permitted

[oldboy@oldboy ~]$ mv /oldboy/test.sh /tmp/

mv: try to overwrite `/tmp/test.sh', overriding mode 0755 (rwxr-xr-x)? y

mv: cannot move `/oldboy/test.sh' to `/tmp/test.sh': Operation not permitted

[oldboy@oldboy ~]$ mv /oldboy/test.sh /oldboy/file.sh

mv: cannot move `/oldboy/test.sh' to `/oldboy/file.sh': Operation not permitted

[oldboy@oldboy ~]$ cp /oldboy/test.sh /tmp/

cp: cannot create regular file `/tmp/test.sh': Permission denied

[oldboy@oldboy ~]$ touch /oldboy/file.txt

[oldboy@oldboy ~]$ mkdir /oldboy/user

[oldboy@oldboy ~]$ ls -l /oldboy/

total 8

-rw-r--r-- 1 oldboy root    0 Dec  6 10:30 file.txt

drwxrwxrwx 2 root   root 4096 Dec  6 10:28 share

-rwxrwxrwx 1 root   root    0 Dec  6 10:28 test.sh

drwxr-xr-x 2 oldboy root 4096 Dec  6 10:31 user

[oldboy@oldboy ~]$ su - root

Password:

[root@oldboy ~]# rm -rf /oldboy/test.sh

[root@oldboy ~]# rm -rf /oldboy/share/

 

 

 

3、chattr改變文件屬性(特殊功能)

 

參數

參數原版描述

備註

實例

+i

A file with the 「i」 attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be  written to the file. 

讓任何用戶(包括root管理員)沒法刪除\重命名\移動目錄,但能夠複製目錄。若是針對文件添加i權限是沒法修改\刪除\添加文件的內容而且沒法刪除\重命名\移動文件,但能夠複製文件

範例1

-i

 

取消i功能

範例1

-a

A  file with the ‘a’ attribute set can only be open in append mode for writing.

功能相似「i」,只是多了一個能夠追加的功能

範例2

 

 

範例1:

1、針對oldboy目錄添加i權限

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# chmod 777 /oldboy/

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# touch /oldboy/file.txt

[root@oldboy ~]# chmod 777 /oldboy/*

oot@oldboy ~]# ls -l /oldboy/

total 0

-rwxrwxrwx 1 root root 0 Dec  6 11:21 file.txt

-rwxrwxrwx 1 root root 0 Dec  6 11:21 test.sh

[root@oldboy ~]# chattr +i /oldboy/

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwx 2 root root 4096 Dec  6 11:21 /oldboy/

[root@oldboy ~]# lsattr -d /oldboy/

----i--------e- /oldboy/

[root@oldboy ~]# lsattr /oldboy/

-------------e- /oldboy/file.txt

-------------e- /oldboy/test.sh

[root@oldboy ~]# rm -rf /oldboy/

rm: cannot remove `/oldboy/file.txt': Permission denied

rm: cannot remove `/oldboy/test.sh': Permission denied

[root@oldboy ~]# mv /oldboy/* /tmp/

mv: cannot move `/oldboy/file.txt' to `/tmp/file.txt': Permission denied

mv: overwrite `/tmp/test.sh'? y

mv: cannot move `/oldboy/test.sh' to `/tmp/test.sh': Permission denied

[root@oldboy ~]# mv /oldboy/test.sh /oldboy/test.sh.bak

mv: cannot move `/oldboy/test.sh' to `/oldboy/test.sh.bak': Permission denied

[root@oldboy ~]# echo "test" > /oldboy/test.sh          ##這個文件內容不屬於/oldboy/ block範圍內

[root@oldboy ~]# cat /oldboy/test.sh

test

[root@oldboy ~]# lsattr -d /oldboy/

----i--------e- /oldboy/

[root@oldboy ~]# chattr -i /oldboy/

[root@oldboy ~]# lsattr -d /oldboy/

-------------e- /oldboy/

 

2、針對test.sh文件添加i權限

[root@oldboy ~]# touch test.sh

[root@oldboy ~]# chmod 777 test.sh

[root@oldboy ~]# ls -l test.sh

-rwxrwxrwx 1 root root 30 Dec  1 09:14 test.sh

[root@oldboy ~]# chattr +i test.sh

[root@oldboy ~]# lsattr test.sh

----i--------e- test.sh

[root@oldboy ~]# rm -rf test.sh

rm: cannot remove `test.sh': Operation not permitted

[root@oldboy ~]# mv test.sh /tmp/

mv: overwrite `/tmp/test.sh'? y

mv: cannot move `test.sh' to `/tmp/test.sh': Operation not permitted

[root@oldboy ~]# echo "abc" > test.sh

-bash: test.sh: Permission denied

[root@oldboy ~]# echo "abc" >> test.sh

-bash: test.sh: Permission denied

 

 

範例2:

[root@oldboy ~]# touch test.sh

[root@oldboy ~]# lsattr test.sh

-------------e- test.sh

[root@oldboy ~]# chattr +a test.sh

[root@oldboy ~]# lsattr test.sh

-----a-------e- test.sh

[root@oldboy ~]# rm -rf test.sh

rm: cannot remove `test.sh': Operation not permitted

[root@oldboy ~]# > test.sh

-bash: test.sh: Operation not permitted

[root@oldboy ~]# echo 123 >> test.sh

[root@oldboy ~]# cat test.sh

123

相關文章
相關標籤/搜索