579
中電雲集
FreeBSD用戶管理-增加用戶
為了使用多用戶的FreeBSD操作係統,必須是係統的登記用戶。用戶信息保存在/etc目錄下passwd 文件中,在這個文件中定義的一個FreeBSD用戶應具有以下屬性:
用戶名(Username):在係統中使用這個用戶名來標識用戶,每個用戶名不超過8個字符, 且是大小寫敏感的。習慣上用戶名隻使用小寫字母,通常根據用戶真實名字的縮寫來選擇合適的用戶名。
用戶標識號(User ID):由於計算機中處理數字比處理字符串更容易,因而使用數字方式的 用戶標識號來區分不同用戶更為適合。事實上Unix係統就是使用唯一的用戶標識號來區分用戶的,在某些特定目的下,可 以存在多個有不同用戶名、但用戶標識號相同的用戶,這表示這些不同用戶名的用戶實際上是同一個用戶。
口令(password):係統用它來驗證用戶是否合法。超級用戶root可以使用係統程序 passwd來更改每個用戶的口令,用戶也可以使用passwd來更改自己的口令。較老的Unix係統中直接在 passwd文件中保存口令的密文,由於passwd文件是係統中的每個用戶都可以讀取的,隻通過加密來保證口令的安全性。然 而現代計算機的發展使得情形發生了變化,高速計算能力使得通過猜測的方式來破譯口令成為可能。因此現在Unix中口令 均不再直接保存在passwd文件中了,而passwd文件中的口令域使用一個 “*” 來代替。FreeBSD使用 /etc/master.passwd作為真正的口令文件,保存包括個人口令在內的數據,但這個文件不能被普通用戶讀 取。
命令解釋程序(shell):用戶登錄後啟動這個程序來接收用戶的輸入並執行輸入相應命令,標 準的shell有sh和csh,更複雜易用的shell有bash和tcsh等,但它們不是基本係統的一部分,必須額 外安裝。shell程序是一個標準的Unix程序,但係統在/etc/shells文件中定義了一些標準shell的 名字,很多應用程序檢查這個文件中內容和用戶的shell來判斷這個用戶是普通用戶,還是用於特定目的而創建的用戶。
個人目錄(home directory):由於FreeBSD是多用戶係統,每個用戶都要有 自己的獨立使用環境,不同用戶的文件不能相互交叉存放,因此Unix中為每個用戶配置了自己的個人目錄,用戶的文件都 放置在各自的目錄下,從而互不幹擾。習慣上FreeBSD下用戶的個人目錄位於/home目錄下,使用用戶名作為子目 錄名,多數shell中使用波浪符號~,來代表該用戶的個人目錄。
組標識號(Group ID):具有相似屬性的多個用戶可以被分配到一個組內,每個組都有自己 的組名,且以自己的組標識號相區分(組標識號和組的對應關係在/etc/group文件中給出),用戶的組標識號保存 在passwd文件中。早期的Unix中,每個用戶隻能屬於一個組,而現代Unix中每個用戶可以同時屬於多個組,除 了在passwd文件中指定了其歸屬的基本組之外,還可以在文件/etc/group中,明確指定一個組包括某個用戶 ,使得該用戶能屬於多個組。
除此之外,用戶還有其他屬性,例如登錄類別,這些信息記錄在另一個口令文件:/etc/master.passwd中。
-
增加用戶
雖然可以使用係統安裝程序/stand/sysinstall中的Add User選項來增加用戶和組,但熟 練的管理員並不喜歡這種全屏幕操作方式。Unix下的習慣做法是使用命令行方式,如使用adduser命令來或pw命 令添加用戶。
adduser命令使用配置文件/etc/adduser.conf來保存添加用戶使用的缺省數據,如果沒有 這個配置文件,第一次執行adduser時會詢問缺省設置,以自動生成這個設置文件。這樣對於很多基本一致的用戶數據 就設置了正確的缺省值,以減少輸入的工作量。
# adduser
Use option “-silent” if you don’t want see all warnings & questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: bash csh date no sh [sh]:
Your default shell is: sh -> /bin/sh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]:
Use passwords (y/n) [y]:
Ok, let’s go.
在前麵的過程中生成了配置文件之後,還可以使用編輯器來修改它的內容以更改adduser的配置。雖然生成了 配置文件,但每次啟動adduser還會詢問這些缺省參數是否需要更改,使得操作不太簡便。為了讓adduser直接 進入用戶數據輸入狀態,可以使用 “adduser -quiet” 減少提示信息,-quiet的縮寫方式為-q, -silent和-s參數也有同樣的效果。更一勞永逸的方式是直接修改adduser.conf文件,將其中的 verbose參數改為0,表示盡量減少提示。這個參數的缺省值為1,將進行設置缺省值的提示,而設置為2能提供更多的配置 參數。
# adduser -s
Use option “-verbose” if you want see more warnings & questions
or try to repair bugs.
Enter username [a-z0-9_-]: user22
Enter full name []:
Enter shell bash csh date no sh [sh]:
Enter home directory (full path) [/home/user22]:
Uid [1007]:
Enter login class: default []:
Login group user22 [user22]:
Login group is “user22”. Invite user22 into othergroups: guest no
[no]:
Enter password []:
Use an empty password? (y/n) [y]:
Name: user22
Password: ****
Fullname: user22
Uid: 1007
Gid: 1007 (user22)
Class:
Groups: user22
HOME: /home/user22
Shell: /bin/sh
OK? (y/n) [y]:
Added user “user22”
Send message to “user22” and: no root second_mail_address
[no]:
your account “user22” was created.
Have fun!
See also chpass(1), finger(1), passwd(1)
Add anything to default message (y/n) [n]:
Send message (y/n) [y]:
Add another user? (y/n) [y]:n
因此可以使用-s參數使adduser直接進入增加用戶的操作步驟,這將詢問增加用戶的必要數據,包括用戶名 、口令等數據。adduser將使用adduser.conf中的一些內容作為缺省提示,通常有提示的步驟可以直接利 用缺省提示進行操作。
比adduser命令功能更複雜的命令為pw,管理員能使用它來完成各種複雜的用戶管理任務,包括增加、刪除 用戶,以及修改用戶的各項參數設置。
另一種更直接的管理用戶的方式是直接編輯口令文件的內容。這是Unix早期常見的做法,但隨著Unix的發展 ,當前的Unix使用shadow的方法保存加密口令數據,用戶數據不僅保存在passwd文件中,而真實的口令等內 容被係統保存在另一個口令文件中,必須同時修改這兩個口令文件,使其保持一致才可以。因此不能直接使用vi等編輯器來 編輯一個/etc/passwd文件,而應該使用係統提供的vipw命令修改這口令文件,並同時寫入兩個文件。出於安 全的考慮,vipw將使用一個內部編輯器(與vi相同)編輯master.passwd文件,保存時同步這兩個口令文 件。事實上master.passwd文件才是真正的口令文件,單獨改變/etc/passwd文件,對用戶數據沒有 影響。
由於係統中會反複讀取用戶口令,而在普通文本形式的passwd文件中查找用戶的速度與用戶數量是一種線性關 係,當用戶數量一多,查找效率就急劇下降。而數據庫的形式更適合這些經常發生的查找任務,因為數據庫將自動維護數據的 索引,這些索引可以用來提高查找效率。FreeBSD中提供了一種簡單的的標準數據庫文件格式,口令文件可以使用這種 db數據格式來提高性能。因此口令文件有對應的數據庫形式:/etc/pwd.db和/etc/spwd.db,用來 獲得用戶信息的係統調用事實上首先查詢這兩個數據庫文件,而由係統來自動維護這兩個數據庫文件與前兩個passwd文 件同步。係統管理者可以使用pwd_mkdb來從文本形式的口令文件來生成數據庫文件。通常,普通文本形式的passwd 文件隻適合於有幾百帳號的係統,而db數據庫形式適合一萬以上帳號的係統。
在其他Unix係統中,第二個口令文件的名字與bsd係統使用的文件名不同,大部分Unix System V 係統使用/etc/shadow文件。使用不同的名字隻是習慣的問題,文件格式都是passwd文件格式。因此如果 要求兼容,可以為/etc/master.passwd建立一個叫shadow的符號連接。
組能幫助權限的分配,與管理用戶類似,管理組也可以通過sysinstall來完成,或直接改動/etc/group 文件。用戶除了屬於passwd文件中定義的組之外,還可以被邀請進入其他組中。adduser添加用戶時會 詢問是否將用戶加入其他組,如果在用戶生成之後在將用戶加入其他組,就需要直接改動/etc/group文件。例如 group文件中有這樣一行:
wheel:*:0:root,admin
admin:*:100:admin
這表示用戶admin不但屬於自己在passwd中規定的組,還屬於wheel和admin組。可以使用groups 命令來獲得用戶的屬組列表。
最後更新:2017-01-04 22:34:39