偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用特殊權(quán)限:setuid、setgid和sticky位?

系統(tǒng) Linux
通常,在類 Unix 操作系統(tǒng)上,文件和目錄的所有權(quán)是基于文件創(chuàng)建者的默認(rèn) uid(user-id)和 gid(group-id)的。啟動一個進(jìn)程時(shí)也是同樣的情況:它以啟動它的用戶的 uid 和 gid 運(yùn)行,并具有相應(yīng)的權(quán)限。這種行為可以通過使用特殊的權(quán)限進(jìn)行改變。

[[220252]]

目標(biāo)

了解特殊權(quán)限的工作原理,以及如何識別和設(shè)置它們。

 

要求

 

難度

簡單

 

約定

  • # - 要求直接以 root 用戶或使用 sudo 命令執(zhí)行指定的命令
  • $ - 用普通的非特權(quán)用戶來執(zhí)行指定的命令

 

介紹

通常,在類 Unix 操作系統(tǒng)上,文件和目錄的所有權(quán)是基于文件創(chuàng)建者的默認(rèn) uid(user-id)和 gid(group-id)的。啟動一個進(jìn)程時(shí)也是同樣的情況:它以啟動它的用戶的 uidgid 運(yùn)行,并具有相應(yīng)的權(quán)限。這種行為可以通過使用特殊的權(quán)限進(jìn)行改變。

 

setuid 位

當(dāng)使用 setuid (設(shè)置用戶 ID)位時(shí),之前描述的行為會有所變化,所以當(dāng)一個可執(zhí)行文件啟動時(shí),它不會以啟動它的用戶的權(quán)限運(yùn)行,而是以該文件所有者的權(quán)限運(yùn)行。所以,如果在一個可執(zhí)行文件上設(shè)置了 setuid 位,并且該文件由 root 擁有,當(dāng)一個普通用戶啟動它時(shí),它將以 root 權(quán)限運(yùn)行。顯然,如果 setuid 位使用不當(dāng)?shù)脑挘瑫頋撛诘陌踩L(fēng)險(xiǎn)。

使用 setuid 權(quán)限的可執(zhí)行文件的例子是 passwd,我們可以使用該程序更改登錄密碼。我們可以通過使用 ls 命令來驗(yàn)證:

  1. ls -l /bin/passwd
  2. -rwsr-xr-x. 1 root root 27768 Feb 11 2017 /bin/passwd

如何識別 setuid 位呢?相信您在上面命令的輸出已經(jīng)注意到,setuid 位是用 s 來表示的,代替了可執(zhí)行位的 x。小寫的 s 意味著可執(zhí)行位已經(jīng)被設(shè)置,否則你會看到一個大寫的 S。大寫的 S 發(fā)生于當(dāng)設(shè)置了 setuidsetgid 位、但沒有設(shè)置可執(zhí)行位 x 時(shí)。它用于提醒用戶這個矛盾的設(shè)置:如果可執(zhí)行位未設(shè)置,則 setuidsetgid 位均不起作用。setuid 位對目錄沒有影響。

 

setgid 位

setuid 位不同,setgid (設(shè)置組 ID)位對文件和目錄都有影響。在第一個例子中,具有 setgid 位設(shè)置的文件在執(zhí)行時(shí),不是以啟動它的用戶所屬組的權(quán)限運(yùn)行,而是以擁有該文件的組運(yùn)行。換句話說,進(jìn)程的 gid 與文件的 gid 相同。

當(dāng)在一個目錄上使用時(shí),setgid 位與一般的行為不同,它使得在所述目錄內(nèi)創(chuàng)建的文件,不屬于創(chuàng)建者所屬的組,而是屬于父目錄所屬的組。這個功能通常用于文件共享(目錄所屬組中的所有用戶都可以修改文件)。就像 setuid 一樣,setgid 位很容易識別(我們用 test 目錄舉例):

  1. ls -ld test
  2. drwxrwsr-x. 2 egdoc egdoc 4096 Nov 1 17:25 test

這次 s 出現(xiàn)在組權(quán)限的可執(zhí)行位上。

 

sticky 位

sticky (粘連)位的工作方式有所不同:它對文件沒有影響,但當(dāng)它在目錄上使用時(shí),所述目錄中的所有文件只能由其所有者刪除或移動。一個典型的例子是 /tmp 目錄,通常系統(tǒng)中的所有用戶都對這個目錄有寫權(quán)限。所以,設(shè)置 sticky 位使用戶不能刪除其他用戶的文件:

  1. $ ls -ld /tmp
  2. drwxrwxrwt. 14 root root 300 Nov 1 16:48 /tmp

在上面的例子中,目錄所有者、組和其他用戶對該目錄具有完全的權(quán)限(讀、寫和執(zhí)行)。sticky 位在可執(zhí)行位上用 t 來標(biāo)識。同樣,小寫的 t 表示可執(zhí)行權(quán)限 x也被設(shè)置了,否則你會看到一個大寫字母 T。

 

如何設(shè)置特殊權(quán)限位

就像普通的權(quán)限一樣,特殊權(quán)限位可以用 chmod 命令設(shè)置,使用數(shù)字或者 ugo/rwx 格式。在前一種情況下,setuidsetgidsticky 位分別由數(shù)值 4、2 和 1 表示。例如,如果我們要在目錄上設(shè)置 setgid 位,我們可以運(yùn)行:

  1. $ chmod 2775 test

通過這個命令,我們在目錄上設(shè)置了 setgid 位(由四個數(shù)字中的第一個數(shù)字標(biāo)識),并給它的所有者和該目錄所屬組的所有用戶賦予全部權(quán)限,對其他用戶賦予讀和執(zhí)行的權(quán)限(目錄上的執(zhí)行位意味著用戶可以 cd 進(jìn)入該目錄或使用 ls 列出其內(nèi)容)。

另一種設(shè)置特殊權(quán)限位的方法是使用 ugo/rwx 語法:

  1. $ chmod g+s test

要將 setuid 位應(yīng)用于一個文件,我們可以運(yùn)行:

  1. $ chmod u+s file

要設(shè)置 sticky 位,可運(yùn)行:

  1. $ chmod o+t test

在某些情況下,使用特殊權(quán)限會非常有用。但如果使用不當(dāng),可能會引入嚴(yán)重的漏洞,因此使用之前請三思。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2013-04-25 10:30:03

Linux系統(tǒng)文件權(quán)限

2009-09-29 10:57:13

Linux特殊文件權(quán)限操作系統(tǒng)

2016-08-10 11:19:11

awkLinux開源

2011-02-25 14:35:00

2009-06-18 13:06:59

C#位運(yùn)算權(quán)限管理

2015-09-10 16:06:06

32位64位Windows 10

2010-03-09 13:10:08

Linux特殊用戶權(quán)限

2013-08-27 13:48:12

Nginx stickNginx負(fù)載均衡

2023-03-20 07:48:03

2011-03-02 17:31:39

Pureftpd

2012-02-08 11:01:53

HibernateJava

2023-04-02 21:45:46

Vim文本編輯器

2024-12-16 17:00:00

并行并發(fā)Java

2020-09-23 17:16:52

Python技術(shù)工具

2010-04-23 14:01:41

特殊訪問權(quán)限

2009-12-22 19:00:08

WCF回調(diào)

2013-03-13 10:24:48

2016-10-12 15:11:56

2021-11-03 17:10:37

CSS sticky前端代碼

2017-12-20 17:50:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號