歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Unix中將root帳戶的權限下放給其他用戶

Unix中將root帳戶的權限下放給其他用戶

日期:2017/2/28 16:47:55   编辑:Linux教程

  在實際工作中,Unix系統工程師可能需要將一些本來應該是root用戶才能夠運行的一些命令程序下放給普通的用戶進行執行。如passwd命令,默認情況下只有root管理員才能夠修改用戶帳戶的密碼。不過系統工程師更喜歡用戶自己來修改密碼。如此的話,用戶自己的密碼只有自己知道,可能更加的安全。當用戶忘記了自己的密碼之後,系統工程再利用root帳戶的權限去初始化用戶的密碼。在Windows系統中,這個功能可以輕而易舉的實現。不過在Unix系統中,實現起來就沒有這麼容易了。在這篇文章中,筆者就跟大家討論一下這個話題。

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

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

  二、PASSWD文件的特殊性。

  在講解如何實現將root帳戶的權限下放給其他用戶之前,筆者要先給大家介紹一下passwd這個命令文件跟其他文件的不同。如下圖所示,系統管理員可以運行圖中所示的命令,來查看passwd程序文件與其它程序文件(如vi)的不同。

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

Copyright © Linux教程網 All Rights Reserved