溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux/Unix用戶權(quán)限下放

發(fā)布時間:2020-06-09 17:52:41 來源:網(wǎng)絡(luò) 閱讀:1330 作者:willis_sun 欄目:系統(tǒng)運維

        

        一般來說,root權(quán)限是在系統(tǒng)管理員手中,不能輕易就給了普通用戶,但是有時普通用戶想做一些高級一點的操作,又得麻煩系統(tǒng)管理員,比如啊,改個程序文件重啟個Apache等等。

        于是就有了root權(quán)限的下放,使得普通用戶能夠執(zhí)行root用戶才能執(zhí)行的命令。


一、有效的UID與真實的UID。

        當(dāng)系統(tǒng)管理員在shell環(huán)境中運行passwd命令時,shell首先會創(chuàng)建另一個shell進(jìn)程。新創(chuàng)建的shell進(jìn)程映像將載入 passwd可執(zhí)行映像并覆蓋自己的映像,passwd進(jìn)程就開始運行。當(dāng)一個進(jìn)程被創(chuàng)建之后,passwd進(jìn)程會從shell父進(jìn)程中繼承大部分的屬 性。跟今天這個話題有關(guān)的屬性主要有兩個。一是進(jìn)程真實的UID。這個屬性與程序文件有關(guān)。這個參數(shù)代表了運行這個進(jìn)程的用戶(而非程序文件)的UID, 通常情況下這個參數(shù)保存在/etc/passwd中與用戶有關(guān)的記錄中。二是進(jìn)程有效的UID。這個參數(shù)其實就表示程序文件的所有者,即誰能夠執(zhí)行這個命 令。通常情況下,進(jìn)程的有效UID與真實UID是相同的。但是當(dāng)非root用戶運行passwd命令時,他們就會不同。


二、PASSWD文件的特殊性。

        在了解如何實現(xiàn)將root帳戶的權(quán)限下放給其他用戶之前,先來看一下passwd這個命令文件跟其他文件的不同。如下圖所示,系統(tǒng)管理員可以運行圖中所示的命令,來查看passwd程序文件與其它程序文件(如vi)的不同。


[root@localhost ~]# ls -l /bin/vi /usr/bin/passwd 
-rwxr-xr-x. 1 root root 910200 Jan 30  2014 /bin/vi
-rwsr-xr-x. 1 root root  27832 Jan 30  2014 /usr/bin/passwd


        對比以上兩個文件的屬性,大家會發(fā)現(xiàn)在passwd文件里的一個權(quán)限位上標(biāo)有s這個特殊的字符。這個參數(shù)就被稱為屬主身份設(shè)置位,英文簡稱為 SUID,它可以用來改變一般用戶的權(quán)限模式。當(dāng)非root用戶執(zhí)行passwd更改自己帳戶的名字時,真實的UID就是這個用戶自己的UID,即運行這 個程序的用戶。但是有效的UID則不是。有效的UID是root用戶,即這個程序文件的所有者。通常情況下,進(jìn)程或者命令的存取、運行權(quán)限不是由真是 UID而是有有效UID決定的,故如果沒有這個s這個特殊屬主身份設(shè)置時,其他用戶將無法使用這個命令。而現(xiàn)在其他用戶也可以利用passwd命令來更改 自己的命令,可見這個屬主身份設(shè)置位可以改變一般用戶的權(quán)限模式,可以將本來只有root帳戶才能夠運行的進(jìn)程下放給其他用戶運行。


三、臨時權(quán)限SUID。

        將本來只有root帳戶才能夠運行的進(jìn)程下放給其他用戶運行,有專家就把這種權(quán)限的轉(zhuǎn)移叫做臨時權(quán)限SUID。大部分的Unix系統(tǒng)都有這么一個特 殊的權(quán)限設(shè)置模式,允許用戶更新一些敏感的系統(tǒng)文件。往往在這些文件的用戶權(quán)限組里面有一個特殊的字母s,就代表一種特殊的模式,即屬主身份設(shè)置位。利用 這種模式系統(tǒng)工程師可以讓進(jìn)程暫時擁有文件所有者的特權(quán)。因此當(dāng)一個非特權(quán)用戶執(zhí)行passwd命令時,進(jìn)城有效的UID并不是用戶真實的UID。 Passwd命令真是利用這個特性讓其他非特權(quán)用戶可以執(zhí)行這個passwd命令。Passwd命令默認(rèn)情況下系統(tǒng)就允許其他非特權(quán)用戶運行。但是其他一 些系統(tǒng)維護(hù)命令,如網(wǎng)絡(luò)配置文件則不是。如果系統(tǒng)工程師要把網(wǎng)絡(luò)維護(hù)的工作分配給他人,就需要借鑒passwd的配置,將網(wǎng)絡(luò)配置文件的修改權(quán)限下放給其 他用戶。


四.用戶權(quán)限下放(sudo 命令權(quán)限下放)

        在CentOS/Redhat中,root權(quán)限的下放可以通過/etc/sudoers 文件來實現(xiàn)。

        我們打開這個文件。

        這個文件的開頭就寫明了這個文件的用途:

 

Sudoers allows particular users to run various commands as the root user, without needing the root password.

在文件的最底部給出了使用的格式。

 

## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL


        這里有四個部分,第一個%wheel表示的是用戶組,第二個部分ALL是作用對象,也就是在哪個主機(jī)上有效, 第三部分是以誰的身份來運行,第四個部分就是要執(zhí)行的命令了。

        舉個例子:我們要允許www組的用戶擁有重啟apache的權(quán)利,我們就可以在這個文件底部添加:

%www ALL=(root) /usr/sbin/apachectl -k start

www ALL=(root) /usr/sbin/apachectl -k restart

        注意:加上%指定的是用戶組,不加%指定的是用戶。執(zhí)行命令這里一定要寫完整路徑,畢竟每個用戶的環(huán)境變量都不一樣。

        然后保存,注意一定要強(qiáng)制保存,加上嘆號。




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI