• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Unix中賦予用戶特殊權限

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    在Unix系統中,管理員往往不只是一個人,若每位管理員都用root身份進行管理工作,根本無法弄清楚誰該做什么。所以最好的方式是:管理員當系統的root,然后創建一些普通用戶,分配一部分系統管理工作給他們。 在Unix系統中,管理員往往不只是一個人,若每位管
    在Unix系統中,管理員往往不只是一個人,若每位管理員都用root身份進行管理工作,根本無法弄清楚誰該做什么。所以最好的方式是:管理員當系統的root,然后創建一些普通用戶,分配一部分系統管理工作給他們。

    在Unix系統中,管理員往往不只是一個人,若每位管理員都用root身份進行管理工作,根本無法弄清楚誰該做什么。所以最好的方式是:管理員當系統的root,然后創建一些普通用戶,分配一部分系統管理工作給他們。
    我們不可以使用su讓他們直接變成root,因為這些用戶都必須知道root的密碼,這種方法很不安全,而且也不符合我們的分工需求。一般的做法是利用權限的設置,依工作性質分類,讓特殊身份的用戶成為同一工作組,并設置工作組權限。例如:要wwwadm這位用戶負責管理網站數據,一般Apache Web Server的進程httpd的所有者是www,您可以設置用戶wwwadm與www為同一工作組,并設置Apache默認存放網頁目錄/usr/local/httpd/htdocs的工作組權限為可讀、可寫、可執行,這樣屬于此工作組的每位用戶就都可以進行網頁的管理了。
    但這并不是最好的解決辦法,例如管理員想授予一個普通用戶關機的權限,這時使用上述的辦法就不是很理想。這時您也許會想,我只讓這個用戶以root身份執行shutdown命令就行了。完全正確!可惜在通常的Unix系統中無法實現這一功能,不過已經有了工具可以實現這樣的功能—sudo。
    sudo通過維護一個特權到用戶名映射的數據庫將特權分配給不同的用戶,這些特權可由數據庫中所列的一些不同的命令來識別。為了獲得某一特權項,有資格的用戶只需簡單地在命令行輸入sudo與命令名之后按照提示再次輸入口令(用戶自己的口令,不是root用戶口令)。例如,sudo允許普通用戶格式化磁盤,但是卻沒有賦予其他的root用戶特權。
    sudo是一個免費軟件,我們可以從網址:http://www.courtesan.com/sudo/下載它的最新版本,也可以獲得關于sudo的很多有用的文檔資料,在筆者撰寫本文時它的最新版本為sudo-1.6.6.tar.gz,執行如下步驟進行安裝:
    # gzip -d sudo-1.6.6.tar.gz(解壓縮)
    # tar xvf sudo-1.6.6.tar(解包)
    # cd sudo-1.6.6
    # ./configure
    (搜集系統的各項信息,配置Makefile文件,為實際編譯做準備)
    # make(編譯)
    # make install(安裝)
    這是sudo源代碼版本的安裝步驟,您也可以去下載sudo的二進制安裝包,如Solaris的package包或Linux的rpm包等,這里不再贅述。
    sudo工具由文件/etc/sudoers進行配置,該文件包含所有可以訪問sudo工具的用戶列表并定義了他們的特權。一個典型的/etc/sudoers條目如下:
    liming    ALL=(ALL)  ALL
    這個條目使得用戶liming作為超級用戶訪問所有應用程序,如用戶liming需要作為超級用戶運行命令,他只需簡單地在命令前加上前綴sudo。因此,要以root用戶的身份執行命令format,liming可以輸入如下命令:
    # sudo /usr/sbin/format
    注意:命令要寫絕對路徑,/usr/sbin默認不在普通用戶的搜索路徑中,可以加入此路徑:PATH=$PATH:/usr/sbin;export PATH。
    另外,不同系統命令的路徑不盡相同,可以使用命令“whereis 命令名”來查找其路徑。
    這時會顯示下面的輸出結果:
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these two things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    Password:
    如果liming正確地輸入了口令,命令format將會以root用戶身份執行。
    注意:配置文件/etc/sudoers必須使用命令/usr/local/sbin/visudo來編輯。只要把相應的用戶名、主機名和許可的命令列表以標準的格式加入到文件/etc/sudoers并保存就可以生效。
    再看一個例子:
    管理員需要允許“baoshi”用戶在主機“sun”上執行“reboot”和“shutdown”命令,在/etc/sudoers中加入:
    baoshi sun=/usr/sbin/reboot,/usr/sbin/shutdown 
    注意:命令一定要使用絕對路徑,避免其他目錄的同名命令被執行,造成安全隱患。
    然后保存退出,baoshi用戶想執行reboot命令時,只要在提示符下運行下列命令:
    $ sudo /usr/sbin/reboot
    輸入正確的密碼,就可以重啟服務器了。
    如果您想對一組用戶進行定義,可以在組名前加上%,對其進行設置,如:
    %cuug   ALL=(ALL)   ALL
    另外,還可以利用別名來簡化配置文件。別名類似組的概念,有用戶別名、主機別名和命令別名。多個用戶可以首先用一個別名來定義,然后在規定他們可以執行什么命令的時候使用別名就可以了,這個配置對所有用戶都生效。主機別名和命令別名也是如此。注意使用前先要在/etc/sudoers中定義:User_Alias、Host_Alias、Cmnd_Alias項,在其后面加入相應的名稱就可以了,也以逗號分隔開,舉例如下:
    Host_Alias   SERVER=no1
    User_Alias   ADMINS=liming,baoshi
    Cmnd_Alias   SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot
    ADMIN   SERVER=SHUTDOWN
    再看這個例子:
    ADMINS ALL=(ALL)   NOPASSWD:  ALL
    表示允許ADMINS不用口令執行一切操作,其中“NOPASSWD:”項定義了用戶執行操作時不需要輸入口令。
    sudo命令還可以加上一些參數執行,完成一些輔助的功能,如:
    $ sudo -l
    會顯示出類似這樣的信息:
    User liming may run the following commands on this host:
    (root) /usr/sbin/reboot
    說明用戶liming被root允許執行/usr/sbin/reboot命令。這個參數可以使用戶查看自己目前可以在sudo中執行哪些命令,方便使用。
    在命令提示符下鍵入sudo命令會列出所有參數,其他一些參數如下:
    -V  顯示版本編號;
    -h  顯示sudo命令的使用參數;
    -v  因為sudo在第一次執行時或是在N分鐘內沒有執行(N預設為5)會問密碼,這個參數是重新做一次確認,如果超過N分鐘,也會問密碼;
    -k  將會強迫使用者在下一次執行sudo時詢問密碼(不論有沒有超過N分鐘);
    -b  將要執行的指令放在背景中執行;
    -p prompt  可以更改問密碼的提示語,其中%u會代換為使用者的賬號名稱,%h會顯示主機名稱;
    -u username/#uid  不加此參數,代表要以root的身份執行指令,而加了此參數,可以以username的身份執行指令(#uid為該username的UID);
    -s 執行環境變數中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell ;
    -H  將環境變數中的HOME(宿主目錄)指定為要變更身份的使用者的宿主目錄(如不加-u參數就是系統管理者root);
    <command> 要以系統管理者身份(或以-u更改為其他人)執行的指令。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>