linux特殊許可權SUID,SGID,sticky

2021-08-28 02:59:17 字數 3873 閱讀 7812

一、為什麼要使用特殊許可權?

比如系統中假如有超過四類人然而每一類人都需要一種獨特許可權.只有三種獨特許可權的基礎許可權系統就會明顯不夠用.特殊許可權可以擴充套件系統基礎許可權的功能,使得linux許可權更加強大靈活

二、suid

-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd
1)suid工作原理

linux中有乙個二進位制程式vim,屬主屬組均為root

linux中有乙個系統檔案/etc/shadow,屬主屬組均為root

我們建立乙個普通使用者叫zm

zm具有對vim的執行許可權

zm 不具有對/etc/shadow的任何許可權

zm執行vim,系統建立乙個vim程序,程序的屬主屬組取程式發起者,也就是zm:zm

vim程序訪問/etc/shadow,由於程序屬主屬組是zm:zm,與/etc/shadow的屬組屬主都不匹配,所以被拒絕訪問.

zm執行vim.系統建立乙個vim程序,程序的屬主取vim的屬主,屬組取程式發起者,就是root:zm

vim程序訪問/etc/shadow,由於程序屬主是root,與/etc/shadow的屬主匹配,所以被允許編輯.

2)例子

passwd命令是linux系統中用來修改密碼的命令.系統中所有使用者都可以使用.而passwd命令改密碼的行為是通過修改/etc/shadow檔案來實現 

----------. 1 root root 908 7月  18 20:18 /etc/shadow
-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd
不難發現passwd這個程式的屬主位的執行位不是x而是s,說明passwd被設定了特殊許可權suid.;於是普通使用者執行passwd命令,系統建立的passwd程序的屬主由預設為"程式發起者"變為了passwd的屬主;而passwd的屬主是root,所以普通使用者其實是在用root的許可權修改/etc/shadow檔案.最後passwd命令執行結束,passwd程序被關閉.

3)例子

給命令vim新增suid,可以讓普通使用者自己把自己變為超級使用者.

給vim加個suid 

[root@centos2 test]# ls -l /usr/bin/vim

-rwsr-xr-x. 1 root root 1967072 4月 5 2012 /usr/bin/vim

[root@centos2 test]#

[zhang@centos2 ~]$ vim /etc/passwd   #修改uid=0

zhang:x:0:500::/home/zhang:/bin/bash

退出再次登陸;可以看出當前的使用者是root

[root@centos2 test]# su - zhang

[root@centos2 ~]# whoami

root

[root@centos2 ~]#

驗證。首先找乙個屬主屬組都為root且o位無w的檔案

[root@centos2 ~]# find / -name haha -type f -exec ls -l {} \;

-rw-r--r--. 1 root zhang 0 9月 14 22:18 /tmp/haha

[root@centos2 ~]#

[root@centos2 tmp]# cd /tmp/

[root@centos2 tmp]# mv haha didi

[root@centos2 tmp]# find / -name didi -type f -exec ls -l {} \;

-rw-r--r--. 1 root zhang 0 9月 14 22:18 /tmp/didi

[root@centos2 tmp]#

改名成功,說明ok

三sgid

-rwxr-sr-x. 1 root root 0 9月  14 21:14 test
1)例子

普通使用者zhang在/tmp中建立乙個目錄叫zhangdir,新增sgid.許可權777

[zhang@centos2 zhangdir]$ chmod 2777 /tmp/zhangdir/

[zhang@centos2 zhangdir]$ ll -d

drwxrwsrwx. 2 zhang zhang 4096 9月 14 21:53 .

[zhang@centos2 zhangdir]$

切換到普通使用者ming,在zhangdir目錄中建立乙個檔案和乙個目錄

[ming@centos2 ~]$ cd /tmp/zhangdir/

[ming@centos2 zhangdir]$ mkdir mingdir

[ming@centos2 zhangdir]$ ll

總用量 4

drwxrwsr-x. 2 ming zhang 4096 9月 14 22:00 mingdir

[ming@centos2 zhangdir]$

可以看出,ming在zhangdir目錄下建立的檔案和目錄都自動繼承了zhangdir的屬組

而且新目錄的許可權也繼承了sgid.;所以設定了sgid的目錄中的所有新建檔案和目錄都會自動屬於zhang組.

四、sticky

-rwx--x--t. 1 root root 0 9月  14 21:20 caiwu
1)例子

目的:希望在系統中建立乙個很多使用者可以共同使用的目錄,但是要求使用者之間不能互相刪除改變對方的檔案.

首先:建立乙個777的/test/dir目錄;分別用zhang和ming使用者在/test/dir目錄建立自己的檔案和目錄;可是任何使用者都可以刪除裡面的內容。如何解決呢?

[root@centos2 dir]# ll

總用量 16

drwxrwxr-x. 2 ming ming 4096 9月 14 21:35 md1

drwxrwxr-x. 2 ming ming 4096 9月 14 21:35 md2

drwxrwxr-x. 2 ming ming 4096 9月 14 21:35 md3

-rw-rw-r--. 1 ming ming 0 9月 14 21:34 mf1

-rw-rw-r--. 1 zhang zhang 0 9月 14 21:34 zd1

-rw-rw-r--. 1 zhang zhang 0 9月 14 21:34 zd2

-rw-rw-r--. 1 zhang zhang 0 9月 14 21:34 zd3

drwxrwxr-x. 2 zhang zhang 4096 9月 14 21:34 zf1

[root@centos2 dir]#

要給/tmp這個資料夾設定乙個sticky位.

[root@centos2 test]# chmod 1777 dir/

[root@centos2 test]# ll -d dir/

drwxrwxrwt. 6 root root 4096 9月 14 21:35 dir/

[root@centos2 test]#

到這嘗試登陸普通使用者到這個目錄下刪除mf1等檔案和目錄。刪除不了說明生效了。

注:普通使用者在設定了sticky位的目錄下建立的子目錄不會繼承這個sticky許可權,所以要注意設定好自己目錄的許可權. 

Linux 特殊許可權

特殊許可權 對檔案的影響 對目錄的影響 u s suid 以擁有檔案的使用者身份,而不是以執行檔案的使用者身份執行檔案。無影響。g s sgid 已擁有檔案的組的身份執行檔案。在目錄中最新建立的檔案將其組所有者設定為與目錄的組所有者相匹配。o t sticky 無影響。對目錄具有寫入許可權的使用者僅...

linux特殊許可權

訪問控制列表 應用場景,我有我所屬目錄的所有許可權,我的開發組也有,但是我有乙個朋友想要進我的目錄參觀,不能給所屬也不能讓他進組,需要乙個後門這就是acl訪問控制列表。首先要在掛載後面加上acl選項 可在mount o remount,acl 也可在 etc fstab表中改正重啟 兩個常用命令 g...

Linux的特殊許可權

linux中除了常見的讀 r 寫 w 執行 x 許可權以外,還有3個特殊的許可權,分別是setuid setgid和stick bit 1 setuid setgid 先看個例項,檢視你的 usr bin passwd 與 etc passwd檔案的許可權 root mylinux ls l usr...