FreeBSD連載(13):超級用戶root、登錄類別

1999年11月15日 19:16 王波

  • 超級用戶root

  超級用戶是Unix的所有者,擁有所有的權利,因此也具有很大的危險性,不當使用超級用戶權力能對系統造成不 可挽回的破壞。即使對於個人使用的FreeBSD系統,盡管不需要將系統與其他人共享,但是仍然不要使用root用戶 作日常處理工作。通常管理員在正常情況下僅僅使用普通帳戶進行操作,只有在執行系統管理的必要時候才使用超級用戶權限 。

  從普通用戶成為超級用戶的標準方法是使用su命令:

  $ su

  Password:

  #

  正確輸入root的密碼之後,就成為了超級用戶,系統提示符也從標準的 “$” 變為root專用的 “#” 提示。

  在FreeBSD上要使用su命令成為root用戶,不但要知道root的密碼,還需要經過特別設置,否則就 不能成功使用這個命令。這是因為FreeBSD對執行su命令的用戶進行了更嚴格的限制,能使用su命令的用戶必須屬 於wheel組(root的基本屬組,組ID為0),否則就不能通過這個命令成為root用戶。因此需要編輯組設置文 件/etc/group,將需要超級用戶權力的管理成員加入到wheel組中。

  如果僅僅要用戶執行部分需要超級用戶權力的操作,而不想將root的密碼泄露出去,更簡單的做法是使用sudo ,然而這屬於基本系統之外,需要另外安裝的管理工具。

  • 登錄類別

  從 4.3 BSD Net/2開始,BSD Unix引入了登錄類別這種分類機制來管理用戶使用的資源、記 賬和環境設置。FreeBSD系統使用/etc/login.conf中描述的數據來將用戶按照登錄環境、強制性的資 源限制以及記賬管理等分為不同的登錄類別,每個用戶的登錄類別記錄在/etc/master.passwd中的該用戶 的設置中。

  default:\

  :cputime=infinity:\

  :datasize-cur=64M:\

  :stacksize-cur=64M:\

  :memorylocked-cur=10M:\

  :memoryuse-cur=100M:\

  :filesize=infinity:\

  :coredumpsize=infinity:\

  :maxproc-cur=64:\

  :openfiles-cur=64:\

  :priority=0:\

  :requirehome@:\

  :umask=022:\

  :tc=auth-defaults:

  上面設置了default登錄類別中的幾個參數,如果沒有在master.passwd檔案中明確指定用戶的 登錄類別,就使用這個預設類別來作為用戶的登錄類別。

  cputime設置了用戶的每個進程可以使用的CPU時間,預設是無限制(infinity)。如果加以限制 ,有些需要大量CPU時間進行運算的進程就不能正常執行到結束。

  datasize-cur設置了用戶使用的數據段最大為64M,但-cur設置不是強制的,用戶實際使用的數 據有可能超過這個值,但最大不能超過datasize-max設置的值(預設沒有設置)。如果沒有-cur和-max 後綴,僅僅定義datasize,則表示datasize-cur和datasize-max同樣都為datasize 設置的值。同樣stacksize定義了對棧的限制。

  memorylocked-cur設置了用戶每進程可以鎖定的最大內存。

  memoryuse-cur設置了每進程使用的最大內存。

  filesize-cur設置了用戶產生的檔案大小。

  coredumpsize設置了在應用程序發生問題時產生的core dump檔案的大小。

  maxproc-cur設置了用戶可以同時執行的最大進程數。

  openfiles-cur設置了每進程最多打開的檔案數。

  priority設置用戶進程的優先級。

  requirehome設置用戶登錄時是否需要主目錄,@符號表示不需要主目錄。

  umask項設置預設的umask,用於用戶創建檔案的屬性。

  tc設置系統認証策略為使用預設的認証策略。

  如果要創建新類別,並不需要對每個值都重新設置,系統預設先應用default類別的設置,然後再應用具體類 別的設置,因此只需要設置與default類別不同的項就可以了。

  users:\

  :manpath=/usr/share/man /usr/X11R6/man /usr/local/man:\

  :cputime=4h:\

  :openfiles=32:\

  :maxproc=48:\

  :tc=default:

  上面是設置了一個新類users,可以看出它為用戶設置了環境變量MANPATH,並重置了cputtime 、openfile、maxproc和tc的值。每次更改login.conf之後,都要進行更新登錄類別數據庫的操 作。

  # cap_mkdb /etc/login.conf

  由於登錄類別保存在master.passwd檔案中,通常在使用adduser添加用戶的時候設置用戶的登 錄類別。如果要進行更改,必須使用vipw來修改/etc/master.passwd檔案的第5個域。下面為master.passwd 中的一行,該行指定這個用戶的登錄類別為user:

  wb:FPRKMMNuZ3Pfk:1001:1001:users:0:0:Wang Bo:/home/wb:/bin/sh