linux系統文件權限

第1章 文件權限概述

linux中每個文件或目錄都有一組共9個基礎權限位,每三位字符被分爲一組,分別是:屬主權限位,屬組權限位,其他用戶權限位。比如rwxr-xr-x,在linux中正式9個權限位(跟多權限位會在後面提到)位來控制文件屬性、用戶組以及其他用戶的權限。

1.1 linux的文件基礎權限:

字母

英文

對文件可執行的操作

對應數字權限

r

read

可讀權限

4

w

write

可寫權限

2

x

excute

可執行權限

1

-


0

1.2 linux用戶或用戶組定義:

u     代表屬主用戶(ower/user)
g     代表屬組(group)
o     代表其他用戶(other)
a     代表屬主,屬組00和其他用戶(all),即所有的用戶(或組)


第2章 基礎權限對普通文件的作用

打開四個窗口分別用rootoldboyoldgirltest用戶登錄。

2.1 分別測試oldboyoldgirltest用戶對test.sh 文件的權限

[root@oldboy ~]# mv /oldboy   /tmp/oldboy_bak
[root@oldboy ~]# mkdir /oldboy -p
[root@oldboy ~]# echo "echo oldboylinux">/oldboy/test.sh
[root@oldboy ~]# chmod +x /oldboy/test.sh
[root@oldboy ~]# ls -l /oldboy/test.sh
-rwxr-xr-x. 1 root root 17 Sep  6 08:59 /oldboy/test.sh
[root@oldboy ~]# cat /oldboy/test.sh
echo 123
[root@oldboy ~]# id oldboy
uid=500(oldboy) gid=502(incahome)groups=502(incahome)
[root@oldboy ~]# id oldgirl
uid=502(oldgirl) gid=502(incahome)groups=502(incahome)
[root@oldboy ~]# id test
uid=503(test) gid=503(test) groups=503(test)
[oldboy@oldboy ~]$ ll -d /oldboy/test.sh
-rwxr-xr-x. 1 root root 9 Sep  6 11:50 /oldboy/test.sh
[oldboy@oldboy ~]$ cat /oldboy/test.sh
echo 123
[oldboy@oldboy ~]$ echo >/oldboy/test.sh
-bash: /oldboy/test.sh: Permission denied
[oldboy@oldboy ~]$ /oldboy/test.sh
123
將文件對應的用戶改爲oldboy,用戶組改爲incahome,分別測試oldboy,oldgirl,test用戶對/oldboy/test.sh文件的權限。
[root@oldboy ~]# chown oldboy.incahome/oldboy/test.sh
[root@oldboy ~]# ll -d /oldboy/test.sh
-rwxr-xr-x. 1 oldboy incahome 9 Sep  6 11:50 /oldboy/test.sh

2.2 結論:

oldboy用戶擁有對應用戶的權限,及讀寫執行的權限

oldgirl用戶擁有對應組(incahome)的權限,及讀和執行的權限,沒有寫的權限。

test用戶擁有對用其他用戶(others)的權限,及讀和執行的權限,沒有寫的權限。

分別對每個權限(讀寫執行)進行控制變量的方法進行測試,查看他們的關係,結論如下:

2.3 linux普通文件的讀寫執行的權限的說明:

1、可讀r:表示用戶可以讀取文件的內容

2、可寫w:表示用戶可以增加,刪除,修改文件的內容。

  1. 如果沒有r配合,那麼vi編輯文件會提示無法編輯(但可以強制編輯,之前的內容會被覆蓋),echo可以重定向或追加(之前的內容還在)。

  2. 特別提示:刪除文件(修改文件名稱等)的權限受上級目錄的權限控制,和文件本身權限無關。

3、可執行x:表示用戶可以執行文件。

  1. 文件本身要能夠執行(命令,腳本文件)

  2. 普通用戶同時還需具備r的權限才能執行。

  3. root只要有x的授權就能執行。

  4. 2.4 關於文件刪除的說明:

實例2-1 

[oldboy@oldboy ~]$ ll -d /oldboy/test.sh

-rwxr-xr-x. 1 oldboy incahome 9 Sep  6 11:50 /oldboy/test.sh

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

rm: cannot remove `/oldboy/test.sh': Permissiondenied

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

drwxr-xr-x. 7 root root 4096 Sep  6 13:31 /oldboy/

上述實例可以看出:

       雖然oldboytest.sh文件的用戶,但是無法刪除該文件,原因是oldboy用戶對test.sh的父目錄oldboy目錄沒有w權限,即不能刪除oldboy目錄下的文件。

總結:

文件的刪除跟文件本身的權限沒有關係,看用戶對應該文件的上級目錄是否擁有寫的權限。

文件刪除的說明。

       linux中的文件名是存在與上級目錄的block裏面,並指向這個文件的inode節點,這個文件的inode節點在標記指向存放這個文件的block的數據塊。我們刪除一個文件,實際上並不清除inode節點和block的數據,只是在這個文件的上一級目錄裏面的block中刪除這個文件的名字和這個文件inode的對應關係,是這個文件名消失。然後系統會釋放inode節點和存放這個文件的數據塊,並更新inodeMAPblockMAP。讓這些位置可以存放其他新文件的數據信息。

       所以說,當誤刪文件後,如果想恢復數據的話就,在恢復數據之前就不能向磁盤中再次寫入新的數據,因爲新的數據會優先覆蓋刪除文件後的數據塊,這樣的話以前的數據就被覆蓋掉,無法恢復。

 linux下文件刪除的原理精華講解(考試題答案系列) 
http://oldboy.blog.51cto.com/2561410/791322 

第3章 基礎權限對目錄的rwx權限:

3.1 實例測試各位權限對目錄的操作

實例3-1 

讓用戶只有r權限:

[root@oldboy oldboy]# ll -d test
dr--r-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[root@oldboy oldboy]# pwd
/oldboy
[oldboy@oldboy ~]$ ls /oldboy/test
ls: cannot access /oldboy/test/haha: Permissiondenied
ls: cannot access /oldboy/test/oldboy.txt:Permission denied
haha oldboy.txt
[oldboy@oldboy ~]$ ls -l /oldboy/test/
ls: cannot access /oldboy/test/haha: Permissiondenied
ls: cannot access /oldboy/test/oldboy.txt:Permission denied
total 0
-????????? ? ? ? ?            ? haha
-????????? ? ? ? ?            ? oldboy.txt
[oldboy@oldboy ~]$ cd /oldboy/test
-bash: cd: /oldboy/test: Permission denied
[oldboy@oldboy ~]$ echo111>>/oldboy/test/haha
-bash: /oldboy/test/haha: Permission denied

讓用戶只有w權限

[root@oldboy oldboy]# chmod u=w test
[root@oldboy oldboy]# ll -d test
d-w-r-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[oldboy@oldboy ~]$ ll -d /oldboy/test
d-w-r-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
ls: cannot open directory /oldboy/test: Permissiondenied
[oldboy@oldboy ~]$ cd /oldboy/test
-bash: cd: /oldboy/test: Permission denied
[oldboy@oldboy ~]$ echo 111>>/oldboy/test/haha
-bash: /oldboy/test/haha: Permission denied

讓用戶只有x權限:

[root@oldboy oldboy]# chmod u=x test
[root@oldboy oldboy]# ll -d test
d--xr-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[oldboy@oldboy ~]$ ll -d /oldboy/test
d--xr-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
ls: cannot open directory /oldboy/test: Permissiondenied
[oldboy@oldboy~]$ cd /oldboy/test
[oldboy@oldboy test]$ echo111>>/oldboy/test/haha
-bash: /oldboy/test/haha: Permission denied

讓用戶擁有rw權限

[root@oldboy oldboy]# chmod u=rw test
[root@oldboy oldboy]# ll -d test
drw-r-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[oldboy@oldboy ~]$ ll -d /oldboy/test
drw-r-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
ls: cannot access /oldboy/test/oldboy.txt:Permission denied
oldboy.txt
[oldboy@oldboy ~]$ cd /oldboy/test
-bash: cd: /oldboy/test: Permission denied
[oldboy@oldboy ~]$ echo111>>/oldboy/test/haha
-bash: /oldboy/test/haha: Permission denied

讓用戶擁有rx權限

[root@oldboy oldboy]# chmod u=rx test
[root@oldboy oldboy]# ll -d test
dr-xr-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[oldboy@oldboy ~]$ ll -d /oldboy/test
dr-xr-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
oldboy.txt
[oldboy@oldboy ~]$ cd /oldboy/test
[oldboy@oldboy test]$ echo111>>/oldboy/test/haha
-bash: /oldboy/test/haha: Permission denied

讓用戶擁有wx權限

[root@oldboy oldboy]# chmod u=wx test
[root@oldboy oldboy]# ll -d test
d-wxr-xr-x. 2 oldboy incahome 4096 Sep  6 11:06 test
[oldboy@oldboy ~]$ ll -d /oldboy/test
d-wxr-xr-x. 2 oldboy incahome 4096 Sep  6 18:39 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
ls: cannot open directory /oldboy/test: Permissiondenied
[oldboy@oldboy ~]$ cd /oldboy/test
[oldboy@oldboy test]$ echo 111>>/oldboy/test/haha
[oldboy@oldboy test]$ cat /oldboy/test/haha
111

讓用戶擁有rwx權限

[root@oldboy oldboy]# ll -d test
drwxr-xr-x. 2 oldboy incahome 4096 Sep  6 18:37 test
[root@oldboy oldboy]# cat /oldboy/test/haha
[oldboy@oldboy ~]$ ll -d /oldboy/test
drwxr-xr-x. 2 oldboy incahome 4096 Sep  6 18:39 /oldboy/test
[oldboy@oldboy ~]$ ls /oldboy/test
oldboy.txt
[oldboy@oldboy ~]$ cd /oldboy/test
[oldboy@oldboy test]$ echo 111>>/oldboy/test/haha
[oldboy@oldboy test]$ cat /oldboy/test/haha
111

通過上面的實例可以分析總結出下表:

 

目錄屬主的各權限與其對應目錄文件的操作

權限

對目錄文件的可讀權限(ls

對文件的執行權限(cd)

對文件的可寫權限(echo)

r--

OK,但會提示無法訪問目錄下文件

denied

denied

-w-

denied

denied

denied

--x

denied

OK

denied

rw-

OK,但會提示無法訪問目錄下文件

denied

denied

r-x

OK

OK

denied

-wx

denied

OK

OK

rwx

OK

OK

OK

3.2 總結測試結論:linux目錄的讀寫執行權限說明:

1、可讀r:表示具有瀏覽目錄下面文件及子目錄的權限,即ls /oldboy/test

  1. 如果沒有x權限,不能進到目錄裏,既無法cd/oldboy/test

  2. 如果沒有x權限,ls列表時可以看到所有文件名,但是會提示無權訪問目錄下文件;

  3. 如果ls -l 列表,所有的屬性會帶有問號,也會提示無權訪問目錄下文件,但是可以看到所有文件名。

2、可寫w:表示具有增加、刪除或修改目錄文件名(一般指文件名)的權限(需要x權限配合);

3、課執行x:表示具有進入目錄的權限;例如:cd /oldboy/test

但是沒有r無法列表文件及目錄,沒有w無法新建和刪除。

站點目錄的文件和目錄給什麼權限:

默認權限是安全權限的臨界點,工作中儘量給這個臨界點,或者小於臨界點,不要大於臨界點權限。

問題:爲什麼默認權限目錄755,文件644而不是其他的值呢?

不管是操作系統還是網站站點目錄,安全權限的臨界點:

1、目錄755,文件644是相對安全的權限。(用戶本身可以任意操作,其他用戶僅可以查看)

2、並且用戶爲root以及用戶組。

以上權限兼顧了安全和使用,生產中要儘量讓我們的文件和目錄達到以上默認的權限,包括用戶和屬組都是root

linux系統默認權限:允許瀏覽,查看,但是禁止創建和修改文件以及文件內容以及執行。

3.3 生產環境下,保護文件安全措施:

1、通過對用戶權限的設置。

2、程序:控制文件擴展名

3、http協議:請求方法(禁止.php get方法)

4、磁盤掛載參數禁止上傳或執行 可執行文件。


第4章 系統的umask

linux系統下文件的默認權限是由umask決定的

       umask是通過八進制的數值來定義用戶創建文件或目錄的默認權限的。

       umask對應數值表示的是禁止的權限,具體細節文件和目錄略有不同。

[root@oldboy ~]# umask   //系統默認的umask指(系統管理員)

0022

設定系統默認umask值的地方:

[root@oldboy ~]# sed -n '65,69p' /etc/bashrc 
    if [ $UID -gt 199 ] && ["`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 022
    fi

由上面可以看出:

情況一:當用戶的UID大於200並且uidgid相等的情況,系統默認的umask值爲002

情況二:當用戶的UID小於200或者UIDGID不相等的情況,系統默認的umask值爲022

[root@oldboy ~]# id root
uid=0(root) gid=0(root) groups=0(root)                  //情況二
[root@oldboy ~]# umask
0022
[oldboy@oldboy ~]$ id oldboy
uid=501(oldboy) gid=504(incahome)groups=504(incahome)  //情況二
[oldboy@oldboy ~]$ umask
0022
[test@oldboy ~]$ id test
uid=502(test) gid=502(test) groups=502(test)            //情況三
[test@oldboy ~]$ umask
0002

4.1 根據umask計算文件權限的方法:

root下默認普通文件(默認權限666)權限的計算方法

1、所有位爲偶數位

假設umask值爲022

6 6 6        //文件初始權限

       0 2 2 -          //umask的值

      --------------

       6 4 4            //最終的文件權限

驗證一下:

[root@oldboy ~]# umask 022
[root@oldboy ~]# umask
0022
[root@oldboy ~]# touch 022.file
[root@oldboy ~]# ll -d 022.file
-rw-r--r-- 1 root root 0 Sep  7 10:14 022.file

2umask有奇數爲(所有爲奇數的位加1

       假設umask值爲031

6 6 6         //文件初始權限

       0 3 1 -           //umask的值

      --------------

       6 3 5

0 1 1 +          //對應奇數各加上1

              --------------

6 4 6         //最終的文件權限

驗證一下:

[root@oldboy ~]# umask 031
[root@oldboy ~]# umask
0031
[root@oldboy ~]# touch 031.file
[root@oldboy ~]# ll -d 031.file
-rw-r--rw- 1 root root 0 Sep  7 10:20031.file

4.2 root下默認目錄文件權限的計算方法

目錄權限(默認權限777)的計算就是直接用對應位的權限減去umask對應位的權限即可。

[root@oldboy ~]# umask 045
[root@oldboy ~]# umask
0045
[root@oldboy ~]# mkdir 045.dir
[root@oldboy ~]# ll -d 045.dir/
drwx-wx-w- 2 root root 4096 Sep  7 10:25 045.dir/

直接用777減去045即得到目錄權限爲732

第5章 特殊權限位setuidsetgid、粘滯位

 

linux系統基本權限位爲9位權限,還有額外3位權限,共12位權限。

SUID:通過S標識,如果用戶位對應的x位上有x,則爲s標識,對應的數字是4,用戶對應的權限位(用戶對應的3位上的x位如果有s就表示suid),文件顯示白字紅底。

SGID:通過S標識,如果用戶組對應的x位上有x,則爲s標識,對應的數字是2,用戶組對應的權限位,文件顯示黑字黃底。

sticky:通過T標識,如果其他用戶位對應的x位上有x,則爲t標識,對應的數字是1,其他用戶位權限,文件顯示黑字綠底。特殊權限語法:

5.1 設置特殊權限位權限語法:

chmod u+s 文件名/目錄名
提示:當 用戶權限位 沒有x權限時,SUID顯示爲S,大S就是無效的SUID,小s纔是有效的SUID,SUID使用數字表示是4
設置SGID語法:
chmod g+s 文件名/目錄名
提示:當 用戶組權限位 沒有x權限時,SGID顯示爲S,大S就是無效的SGID,小s纔是有效的SGID,SGID使用數字表示是2
設置粘滯位語法:
chmod o+t 目錄名
提示:當 其他人權限位 沒有x權限時,粘滯位顯示爲S,大T就是無效的粘滯位,小t纔是有效的粘滯位,粘滯位使用數字表示是1

 

5.2 SUID

在二進制的程序上設置SUID,所有使用改命令的用戶在使用該命令期間 都擁有和這個命令對應用戶的權限。用八進制表示爲4000

實例5-1 

[root@oldboy ~]# ll /bin/touch
-rwxr-xr-x. 1 root root 52560 May 11 16:59/bin/touch
[root@oldboy ~]# ll -d /oldboy/
drwxr-xr-x 3 root root 4096 Sep  7 14:49 /oldboy/
[oldboy@oldboy /oldboy]$ pwd
/oldboy
[oldboy@oldboy /oldboy]$ ll -d ./
drwxr-xr-x 3 root root 4096 Sep  4 11:56 ./
[oldboy@oldboy /oldboy]$ touch 11
touch: cannot touch `11': Permission denied
-------------------------------------------------------------
[root@oldboy ~]# chmod u+s /bin/touch
[root@oldboy ~]# ll /bin/touch
-rwsr-xr-x. 1 root root 52560 May 11 16:59 /bin/touch
[root@oldboy ~]# ll -d /oldboy/
drwxr-xr-x 3 root root 4096 Sep  7 14:49 /oldboy/
[oldboy@oldboy /oldboy]$ touch 11
[oldboy@oldboy /oldboy]$ ll
total 8
-rw-r--r-- 1 root  incahome    0 Sep  7 14:49 11
drwx-wx--x 2 oldboy incahome 4096 Sep  4 12:09 test
-rwx-wxr-- 1 oldboy incahome   35 Sep 4 11:32 test.sh

5.2.2 SUID知識小結:是針對命令和二進制命令的

1、用戶和屬主對應的前三位權限的x位上如果有s就表示SUID權限。

x位上沒有小寫x執行權限的時候,SUID的權限顯示就是大S

2、SUID作用是讓普通用戶可以以root(或其他)的角色運行只有root(或其他)賬號才能運行的程序或命令,或程序命令對應本來沒有權限操作的文件等。

(注意和dusudo的區別),SUID爲某一個命令設置特殊權限(使用者爲所有人)。

3、問題:希望oldboy用戶能夠刪除本來無權限刪除的文件。

a.       sudooldboy授權rootb.rm命令設置SUIDc.設置上級目錄w權限。

4、SUID修改的是執行命令passwd,而不是處理的目標文件/etc/shadow.

5、僅對二進制命令程序有效,不能用在shell等類似腳本文件上。

(因爲shell腳本進進是調用二進制命令程序而已,因此具體權限還要看二進制命令本身)

6、二進制程序需要有可執行權限x配合。

7、SUID權限僅在程序命令執行過程中有效。

8、執行SUID命令的任意系統用戶都可以獲得該命令程序在執行期間對應的擁有者的所有權限。

9、SUID是一把雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。

系統SUID的無用功能取消SUID權限(安全優化)。

查找系統中設置了SUID的命令

[root@oldboy ~]# find /usr/bin/ -type f -perm4755|xargs ls -l
-rwsr-xr-x. 1 root root 54496 Feb 20  2015 /usr/bin/at
-rwsr-xr-x. 1 root root 70480 May 11 05:23/usr/bin/chage
-rwsr-xr-x. 1 root root 51784 Nov 10  2015 /usr/bin/crontab
-rwsr-xr-x. 1 root root 75640 May 11 05:23/usr/bin/gpasswd
-rwsr-xr-x. 1 root root 40240 May 11 05:23/usr/bin/newgrp
-rwsr-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passwd
-rwsr-xr-x. 1 root root 22544 Mar 17  2015 /usr/bin/pkexec

5.3 SGID

在文件或目錄上設置SUID,所有執行命令的用戶可以獲得該命令程序執行期間所屬組的權限。

實例5-2 

[root@oldboy ~]# ll /bin/touch
-rwxr-xr-x. 1 root root 52560 May 11 16:59/bin/touch
[root@oldboy ~]# chmod g+s /bin/touch
[root@oldboy ~]# ll /bin/touch
-rwxr-sr-x. 1 root root 52560 May 11 16:59/bin/touch
[oldboy@oldboy ~/oldboy]$ ll
total 4
-r--r-xr-x 1 oldboy incahome 17 Sep  7 19:40 test.sh
[oldboy@oldboy ~/oldboy]$ touch haha
[oldboy@oldboy ~/oldboy]$ ll
total 4
-rw-r--r-- 1 oldboy root      0Sep  7 21:07 haha
-r--r-xr-x 1 oldboy incahome 17 Sep  7 19:40 test.sh

5.3.2 SGID小結

1、SUID不同的是,SGID既可以針對文件也可以針對目錄設置!

2、SGID是針對用戶組權限位的

對文件來說,SGID的功能如下:

a.       sgid僅對二進制命令程序有效。

b.      二進制命令或程序需要有可執行權限x

c.       執行命令的任意用戶可以獲得該命令程序執行期間所屬組的權限。

對文件來說:SGID的功能如下:

a.       linux裏默認情況多有用戶創建文件,默認用戶和組都是自身。

b.      SGID可以讓用戶在此目錄下創建文件和目錄,具有和此目錄相同的用戶組設置。

setgid位主要用在目錄中,當爲某個目錄設置了setgid位以後,在該目錄中心創建的文件具有該目錄所屬組權限,而不是創建該文件的用戶默認的所有者。這樣,使得在多個用戶之間共享一個目錄中文件變得簡單。用八進制表示爲2000

5.3.3 SGID基於目錄案例:

創建共享目錄
創建共享目錄/home/admins:屬組爲adminuseradminuser組成員對目錄有寫入讀寫和執行的權限,其他所有用戶沒有任何權限(root除外):/home/admins目錄中創建的文件 會自動繼成adminuser(sgid).

[root@oldboy ~]# mkdir /home/admins
[root@oldboy /home]# ll -d admins/
drwxr-xr-x 2 root root 4096 Sep  7 21:24 admins/
[root@oldboy /home]# groupadd adminuser
[root@oldboy /home]# chown .adminuser admins/
[root@oldboy /home]# ll -d admins/
drwxr-xr-x 2 root adminuser 4096 Sep  7 21:24 admins/
[root@oldboy /home]# chmod g+w,o-rx admins/
[root@oldboy /home]# ll -d admins/
drwxrwx--- 2 root adminuser 4096 Sep  7 21:24 admins/
[root@oldboy /home]# chmod g+s /home/admins/
[root@oldboy /home]# ll -d admins/
drwxrws--- 2 root adminuser 4096 Sep  7 21:36 admins/
[root@oldboy ~]# usermod -g adminuser test
[root@oldboy ~]# id test
uid=502(test) gid=506(adminuser)groups=506(adminuser)
[test@oldboy /home/admins]$ touch test1.sh
[test@oldboy /home/admins]$ ll
total 0
-rw-r--r-- 1 test adminuser 0 Sep  7 21:36 test1.sh

查看有SGID的系統命令:

[oldboy@oldboy ~/oldboy]$ find /usr -type f -perm2755|xargs ls -l
find: `/usr/lib64/audit': Permission denied
-rwxr-sr-x. 1 root nobody   141384 May 11 07:10 /usr/bin/ssh-agent
-rwxr-sr-x. 1 root tty       12016 May 11 06:58 /usr/bin/write
-rwxr-sr-x. 1 root postdrop 184904 Nov 10  2015 /usr/sbin/postdrop
-rwxr-sr-x. 1 root postdrop 217832 Nov 10  2015 /usr/sbin/postqueue

設置小結:

SUIDchmod 4755 file或者chmod u+s file

sgidchmod 2755 file 或者 chmodg+s file

同事設置SUIDSGIDchmod 6755 file 或者chmodug+s file

 

5.4 粘滯位sticky

sticky:比SGID更安全的措施,讓多個用戶都具有寫權限的目錄,每個用戶只能刪除自己的文件。表現在other位!用t表示,如果沒有執行權限,那麼就是T;如果有執行權限,那麼就是t表示。

[root@oldboy /]# mkdir /test
[root@oldboy /]# ll -d /test
drwxr-xr-x 2 root root 4096 Sep  7 21:52 /test
[root@oldboy /]# chmod 777 /test
[root@oldboy /]# ll -d /test
drwxrwxrwx 2 root root 4096 Sep  7 21:52 /test
[test@oldboy /test]$ touch test.txt
[oldboy@oldboy /test]$ touch oldboy.txt
[oldboy@oldboy /test]$ ll
total 0
-rw-r--r-- 1 oldboy incahome  0 Sep 7 22:07 oldboy.txt
-rw-r--r-- 1 test  adminuser 0 Sep  7 22:07 test.txt
[test@oldboy /test]$ whoami
test
[test@oldboy /test]$ rm -f oldboy.txt
[test@oldboy /test]$ ll
total 0
-rw-r--r-- 1 test adminuser 0 Sep  7 22:07 test.txt
————————————————————————可以刪除修改其他用戶創建的文件
[root@oldboy /]# chmod o+t /test
[root@oldboy /]# ll -d /test
drwxrwxrwt 2 root root 4096 Sep  7 22:10 /test
[oldboy@oldboy /test]$ ll -d /test
drwxrwxrwt 2 root root 4096 Sep  7 22:10 /test
[oldboy@oldboy /test]$ ll
total 0
-rw-r--r-- 1 test adminuser 0 Sep  7 22:07 test.txt
[oldboy@oldboy /test]$ rm -f test.txt
rm: cannot remove `test.txt': Operation notpermitted
加上粘滯位後,用戶不能修改除自己以外的文件。


 

三個特殊權限,SUIDSGID在企業基本上不用,爲了安全起見,還需要把系統中具有此權限的命令和文件優化掉。sticky粘滯位,則多用在公共的共享目錄中,這樣,其他人就能隨便修改其他用戶創建的文件。

 

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