FreeBSD handbook中文版 8 用戶和基本的帳戶管理
2024-07-26 00:29:05
供稿:網(wǎng)友
目錄
8 用戶和基本的帳戶管理
8.1 概要
8.2 介紹
8.3 超級(jí)用戶帳戶
8.4 系統(tǒng)用戶
8.5 普通用戶帳戶
8.6 修改帳戶
8.7 受限制的用戶
8.8 私有化用戶
8.9 組
=============================================================
第8 章用戶和基本的帳戶管理
=============================================================
(翻譯中出現(xiàn)的任何問題或錯(cuò)誤,請(qǐng)廣大讀者及時(shí)反饋給我:freebsdhandbook@163.com)
8.1 概要
FreeBSD 允許多個(gè)用戶同時(shí)使用電腦。當(dāng)然,這些用戶中不是很多人同時(shí)坐在同一臺(tái)電
腦前,而是其他用戶可以通過網(wǎng)絡(luò)來使用同一臺(tái)電腦以完成他們的工作。要使用系統(tǒng),每一
個(gè)人都要有一個(gè)帳戶。
讀完這章,你將了解到:
在一個(gè)FreeBSD 系統(tǒng)上不同用戶帳戶之間的區(qū)別。.
如何添加用戶帳戶。.
如何刪除用戶帳戶。.
如何改變帳戶細(xì)節(jié),如用戶的全名,或首選的shell。.
如何在每個(gè)帳戶基礎(chǔ)上設(shè)置限制,來控制象內(nèi)存,CPU 時(shí)鐘這樣的資源。.
如何使用組來使帳戶管理更容易。.
在閱讀這章之前,你應(yīng)當(dāng)了解:
了解UNIX 和FreeBSD 的基礎(chǔ)知識(shí)。.
8.2 介紹
所有訪問系統(tǒng)的用戶必須通過帳戶才能完成,所以在FreeBSD 系統(tǒng)中用戶和用戶帳戶的
管理是非常重要的。有三種類型的帳戶:超級(jí)用戶、系統(tǒng)用戶和普通用戶。超級(jí)用戶帳戶通
常叫做root,可以毫無限制地管理系統(tǒng)。系統(tǒng)用戶運(yùn)行服務(wù)。最后,普通用戶帳戶給那些
登陸系統(tǒng),閱讀郵件等的人們使用。
用戶名
第1 頁FreeBSD 使用手冊(cè)
在登陸時(shí)需要鍵入用戶名。用戶名對(duì)于一臺(tái)電腦來講是唯一的;你不可以使用兩個(gè)相同
的用戶名來登陸。有很多規(guī)則可以來創(chuàng)建用戶名,可以看看passwd 的文檔;你使用的用戶
名通常需要8 個(gè)或更少的小寫字母。
口令
每個(gè)帳戶都有一個(gè)口令與它對(duì)應(yīng)??诹羁梢允强盏?,這樣不需要密碼就可以訪問系統(tǒng)。
這通常不是一個(gè)好主意;每個(gè)帳戶都應(yīng)當(dāng)要有一個(gè)密碼。
用戶ID (UID)
UID 是系統(tǒng)用來識(shí)別用戶的0 到65536 之間的數(shù)字。在用它工作以前,允許你指定一個(gè)
用戶名的任何命令都會(huì)把它轉(zhuǎn)換成UID。這意味著你可以為不同的用戶名使用多個(gè)帳戶,但
它們的UID 是一樣的。FreeBSD 會(huì)把這些帳戶認(rèn)定是一個(gè)人的。
組ID (GID)
GID 是用來識(shí)別用戶所在的組的0 到65536 之間的數(shù)字。組是一種用來控制用戶訪問資
源的機(jī)制。它可以減少一些配置文件的大小。一個(gè)用戶也可以屬于多個(gè)組。
登陸類
登陸類是一個(gè)組機(jī)制的擴(kuò)展,當(dāng)把系統(tǒng)分配給用戶時(shí),它提供了額外的靈活性。
口令的定期轉(zhuǎn)換
默認(rèn)情況下,F(xiàn)reeBSD 不會(huì)強(qiáng)迫用戶去改變他們的密碼。你可以在每個(gè)用戶的基礎(chǔ)上強(qiáng)
迫執(zhí)行,當(dāng)一個(gè)帳戶過期了,可以強(qiáng)迫一些或所有的用戶改變他們的密碼。
帳戶到期了
默認(rèn)情況下,F(xiàn)reeBSD 不會(huì)終止帳戶。如果你正在創(chuàng)建帳戶,你要知道有一個(gè)有限的使
用期限。例如,在學(xué)校里,你會(huì)為每個(gè)學(xué)生設(shè)立一個(gè)帳號(hào),當(dāng)帳號(hào)到期了,你可以重新指定
它。帳戶到期后,雖然帳戶的目錄和文件仍然存在,帳戶就不能再使用了。
用戶的全名
用戶名可以唯一地識(shí)別FreeBSD 的帳戶,但不會(huì)反映用戶的全名。這些信息可能與帳戶
是相關(guān)的。
第2 頁FreeBSD 使用手冊(cè)
主目錄
主目錄是用戶用來啟動(dòng)的目錄的完全路徑。一個(gè)通常的規(guī)則是把所有用戶的主目錄都放
在/home/username下。用戶將會(huì)把他們的個(gè)人文件放在他們的主目錄下,他們可以在那兒
創(chuàng)建任何目錄。
用戶shell
Shell 提供了用戶用來操作系統(tǒng)的默認(rèn)環(huán)境。有很多不同的shell,有經(jīng)驗(yàn)的用戶會(huì)根
據(jù)他們的經(jīng)驗(yàn)來選擇。
8.3 超級(jí)用戶帳戶
超級(jí)用戶帳戶通常叫做root,可以重新配置和管理系統(tǒng),在收發(fā)郵件、系統(tǒng)檢查或編程
時(shí)盡量不要使用root 權(quán)限。
這是因?yàn)椴幌笃胀ㄓ脩魩簦?jí)用戶能夠毫無限制地操作系統(tǒng),超級(jí)用戶帳戶的濫用
可能會(huì)引起無法想象的災(zāi)難。普通的用戶帳戶不會(huì)由于出錯(cuò)而破壞系統(tǒng)。所以通常要盡可能
地使用普通帳戶,除非你需要額外的特權(quán)。
另外,在使用超級(jí)帳戶時(shí)要再三檢查命令,因?yàn)橐粋€(gè)額外的空格或缺少某個(gè)字符的命令
都可能會(huì)引起數(shù)據(jù)丟失。當(dāng)你要改為超級(jí)用戶的時(shí)候,你的普通用戶的安全措施將不起作用。
所以,你在閱讀了這章后要做的第一件事是在平時(shí)使用的時(shí)候,創(chuàng)建一個(gè)沒有特權(quán)的用戶帳
戶。無論你使用的是多用戶還是單用戶的機(jī)器,這樣的申請(qǐng)都是相同的。在這一章的后面,
我們將討論如何創(chuàng)建一個(gè)額外的帳戶和如何在普通用戶和超級(jí)用戶之間進(jìn)行切換。
8.4 系統(tǒng)用戶
系統(tǒng)用戶可能要使用諸如DNS,mail,web 等的服務(wù)。使用帳戶的原因就是為了安全。
如果所有的服務(wù)都由超級(jí)用戶來運(yùn)行,那他們就可以不受約束地做任何事情。系統(tǒng)用戶可以
是后臺(tái)程序、操作員、bind 或新聞。系統(tǒng)管理員經(jīng)常創(chuàng)建httpd 來運(yùn)行web 服務(wù)器。
8.5 用戶帳戶
用戶帳戶是讓真實(shí)用戶訪問系統(tǒng)的主要方式。這些帳戶把用戶和環(huán)境分隔開,能阻止用
戶破壞系統(tǒng)或其它用戶,在不影響其它用戶的情況下定置它們的環(huán)境。
每個(gè)人訪問你的系統(tǒng)必須要有它們自己的唯一帳戶。這允許你可以找到誰做了些什么,
阻止人們破壞其它用戶的設(shè)置和閱讀其它人的郵件等等。
第3 頁FreeBSD 使用手冊(cè)
每個(gè)用戶能夠設(shè)置它們自己的環(huán)境,以利于它們通過改變shell、編輯器、鍵盤綁定和
語言等適應(yīng)使用這個(gè)系統(tǒng)。
8.6 修改帳戶
pw 是一個(gè)功能強(qiáng)大,靈活修改帳戶的方式,但還是建議用adduser 來創(chuàng)建新的帳戶,
使用rmuser 來刪除帳戶。chpass 允許系統(tǒng)管理員和普通用戶來調(diào)整口令,shell 和個(gè)人信息。
Passwd 是個(gè)更普通的改變口令的方式。
8.6.1 增加用戶
adduser 是個(gè)簡單的增加新用戶的命令。它為用戶創(chuàng)建passwd 和group,也創(chuàng)建它們
的主目錄,從/usr/share/skel 拷貝文件形成一個(gè)默認(rèn)的.files 的文件,另外給用戶發(fā)送一個(gè)帶
歡迎信息的郵件。
創(chuàng)建一個(gè)初始的配置文件,使用adduser –s –config_create。下面,我們配置adduser
的默認(rèn)設(shè)置,創(chuàng)建我們第一個(gè)用戶帳戶。
例8-1,改變adduser 的配置
# adduser -v
Use option “-silent” if you don’t want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh [sh]: tcsh
Your default shell is: tcsh -> /usr/local/bin/tcsh
Enter your default HOME 分區(qū): [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passWords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let’s go.
第4 頁Enter username [a-z0-9_-]: jru
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
FreeBSD 使用手冊(cè)
Don’t worry about mistakes. I will give you the chance later to correct any input.
Enter full name []: J. Random User
Enter shell csh date no sh tcsh [tcsh]:
Enter home directory (full path) [/home/jru]:
Login group is “jru”. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1007
Gid: 1007 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/tcsh
OK? (y/n) [y]: y
Added user “jru”
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
#
總的來講,我們把默認(rèn)的shell 設(shè)置成tcsh,關(guān)閉歡迎郵件。然后,保存配置,接著創(chuàng)
建一個(gè)jru 的帳戶,并且確信jru 在wheel 組里面。
注意:你輸入的口令是不會(huì)顯示出來的,而只會(huì)顯示星號(hào)。確保輸入兩次密碼時(shí),不
第5 頁FreeBSD 使用手冊(cè)
要輸錯(cuò)。從現(xiàn)在起,只要使用adduser,你不必改變默認(rèn)設(shè)置。如果程序要求你改變默認(rèn)設(shè)
置,先退出程序,然后執(zhí)行程序時(shí)加上-s 選項(xiàng)。
8.6.2 rmuser
rmuser 能從系統(tǒng)中刪除用戶,包括超越用戶數(shù)據(jù)庫的任何線索。rmuser 執(zhí)行下面的步
驟:
1, 刪除用戶的crontab 記錄
2, 刪除屬于用戶的at 工作
3, 殺掉所有屬于用戶的所有線程
4, 刪除本地密碼文件中的用戶
5, 刪除用戶的主目錄
6, 刪除來自/var/mail 的屬于用戶的郵件
7, 刪除所有諸如/tmp 的臨時(shí)文件存儲(chǔ)區(qū)中的文件
8, 最后,刪除在/etc/group 中所有屬于組的用戶名
注意:如果一個(gè)組變成空,而組名和用戶名一樣,組將被刪除;rmuser 不能用
來刪除超級(jí)用戶的帳戶。
例8-2. rmuser interactive account removal
# rmuser jru
Matching password entry:
jru:*:1000:1000::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove user’s home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru—personal group is empty) done.
Removing user’s incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#
第6 頁FreeBSD 使用手冊(cè)
8.6.3 pw
Pw 是一個(gè)用來創(chuàng)建,刪除,修改,顯示用戶和組的命令行工具,它還有系統(tǒng)用戶和組
文件編輯器的功能。Pw 有一個(gè)非常強(qiáng)大的命令行設(shè)置選項(xiàng),但新用戶可能會(huì)覺得它比這兒
講的其它命令要復(fù)雜得多。
8.6.4 chpass
Chpass 可以改變用戶的密碼,shells,和個(gè)人信息的數(shù)據(jù)庫信息。只有超級(jí)用戶才能改
變其它用戶的信息。除了可選擇的用戶名,不需要任何選項(xiàng),chpass 顯示一個(gè)包含用戶信息
的編輯器,而且可以試圖改變?cè)谟脩魯?shù)據(jù)庫中的信息。
例如8-3. Interactive chpass by Superuser
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
The normal user can change only a small subsection of this information, and only for
themselves.
例如8-4. Interactive chpass by Normal User
#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
第7 頁FreeBSD 使用手冊(cè)
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
8.6.5 passwd
passwd 是改變你自己的密碼的常用方法。
注意:在改變密碼前用戶必須鍵入原來的密碼。當(dāng)使用者離開他們的控制臺(tái)時(shí),可以阻
止一個(gè)沒有經(jīng)過認(rèn)證的人改變他們的密碼。
例如8-5. passwd
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done
8.7 受限制的用戶
如果你運(yùn)行一個(gè)多用戶系統(tǒng),你不信任的用戶對(duì)系統(tǒng)所作的修改可能會(huì)損壞你的系統(tǒng)。
FreeBSD 提供了系統(tǒng)管理員限制用戶訪問系統(tǒng)資源的方法。這些限制通常被分成兩種:磁盤
配額和其他資源限制。磁盤配額為系統(tǒng)管理員提供了一個(gè)告訴文件系統(tǒng)給用戶使用多少磁盤
空間的方法。而且,它還提供了一種快速檢查用戶所使用的磁盤數(shù)量而不需要時(shí)刻計(jì)算的方
第8 頁FreeBSD 使用手冊(cè)
法。配額將在第11 章討論。其他資源限制包括限制CPU、memory 的數(shù)量和用戶可能會(huì)使
用的其他資源。這些是通過對(duì)登陸進(jìn)行分類來完成的,下面將作討論。
登陸的類由/etc/login.conf 文件來定義。比較精確的表述超出了本章的范圍,但login.conf
的參考文檔會(huì)有比較細(xì)致的描述。
資源限制與普通的登陸限制是有區(qū)別的。首先,對(duì)于每一種限制,有軟限制和硬限制之
分。一個(gè)軟限制可能被用戶或應(yīng)用程序調(diào)整過了,但不會(huì)超越硬限制。越往后可能會(huì)越降低,
但不會(huì)升高。第二,絕大多數(shù)資源限制會(huì)分配每個(gè)處理給一個(gè)特殊的用戶。
下面就是絕大多數(shù)資源限制的例子:
coredumpsize
很明顯,由程序產(chǎn)生的核心文件大小的限制在磁盤使用上是從屬于其他限制的(如,
文件大小,或磁盤配額)。然而,既然用戶自己無法產(chǎn)生核心文件,而且經(jīng)常不刪除
它們,設(shè)置這個(gè)可以減少由于一個(gè)大型應(yīng)用程序的崩潰所造成的大量磁盤空間的浪
費(fèi)。
cputime
這是一個(gè)用戶程序所能消耗掉的最大的CPU 時(shí)鐘數(shù)量。一些不理想的進(jìn)程會(huì)被內(nèi)核
殺掉。
注意:這是一個(gè)有關(guān)CPU 消耗的時(shí)鐘的限制問題,不是在使用top 和ps 命令時(shí)屏
幕上顯示的CPU 消耗的百分比。
filesize
這是用戶可以處理的一個(gè)文件的最大值。不象磁盤配額,這個(gè)限制是對(duì)單個(gè)文件強(qiáng)
制執(zhí)行的。
maxPRoc
這是一個(gè)用戶可以運(yùn)行的最大的進(jìn)程數(shù)。這包括前臺(tái)和后臺(tái)處理。很明顯,這不可
能比系統(tǒng)指定的限制要大。當(dāng)然,如果設(shè)置得太小可能會(huì)削弱用戶的處理能力:可
能需要多次登陸或執(zhí)行多個(gè)管道。一些任務(wù),象編譯一些大的程序,也可能會(huì)產(chǎn)生
多進(jìn)程。(象make,cc,和其他一些預(yù)處理程序)。
memorylocked
這是一個(gè)進(jìn)程可能會(huì)被鎖定到主內(nèi)存中的最大內(nèi)存數(shù)量。一些比較大型的程序,象
第9 頁FreeBSD 使用手冊(cè)
amd ,這樣做,在遇到問題時(shí),他們得到的巨大交換量無法傳遞給系統(tǒng)進(jìn)行處理。
memoryuse
這是在給定時(shí)間內(nèi)一個(gè)進(jìn)程可能消耗的最大的內(nèi)存數(shù)量。它包括核心內(nèi)存和交換內(nèi)
存。在限制內(nèi)存消耗方面,這個(gè)不是一個(gè)完全的限制,但它是一個(gè)好的開始。
openfiles
這是一個(gè)進(jìn)程可以打開的最大的文件數(shù)。在FreeBSD 中,文件可能用來表現(xiàn)套接字
和ipC 通道;然而,注意不要把這個(gè)設(shè)置得太小。對(duì)這個(gè)更深入的限制是由
kern.maxfiles sysctl 來定義的。
sbsize
這是網(wǎng)絡(luò)內(nèi)存數(shù)量的限制。這可以通過創(chuàng)建許多套接字來生成一些針對(duì)老式的DoS
的攻擊的回應(yīng),但它通常被用來限制網(wǎng)絡(luò)通訊。
stacksize
這是一個(gè)進(jìn)程堆??赡苓_(dá)到的最大值。這個(gè)不能單獨(dú)地限制一個(gè)程序可能使用的內(nèi)
存數(shù)量,而是要和其他的限制一起配合。
在設(shè)置資源限制時(shí),有一些其他的事情需要記住。下面是一些通常的技巧,建議,和各
種注意事項(xiàng)。
1. 系統(tǒng)啟動(dòng)的進(jìn)程會(huì)被指派給后臺(tái)的登陸類。
2. 雖然來自系統(tǒng)的/etc/login.conf 文件是一個(gè)對(duì)于絕大多數(shù)的限制做合理配置的資源
文件,但只有你,系統(tǒng)管理員,才能知道什么對(duì)你的系統(tǒng)才是最適當(dāng)?shù)?。限制設(shè)得
太高可能會(huì)把你的系統(tǒng)開放得太大而被人濫用,而設(shè)置得太低可能會(huì)處理時(shí)效率很
低。
3. X 視窗系統(tǒng)的用戶可能要比其他用戶使用更多的資源。X11 本身就要使用很多資
源,但它也可以讓用戶同時(shí)運(yùn)行更多的程序。
4. 記住許多限制會(huì)被應(yīng)用于單獨(dú)的處理進(jìn)程,不是所有的用戶。例如,設(shè)置openfiles
為50 意味著用戶運(yùn)行的每個(gè)進(jìn)程可能最高只能打開50 個(gè)文件。然而,用戶可以打
開的文件的總的大小是根據(jù)maxproc 的值逐步增加的openfiles 的值。這也適用于
內(nèi)存的消耗。有關(guān)資源限制,登陸類的更深入信息可以看看相關(guān)的聯(lián)機(jī)手冊(cè):
cap_mkdb, getrlimit, login.conf。
第10 頁FreeBSD 使用手冊(cè)
8.8 私有化用戶
本地化是由系統(tǒng)管理員或用戶設(shè)置的一個(gè)環(huán)境,它可以用來調(diào)整不同的語言,字符設(shè)置,
時(shí)鐘標(biāo)準(zhǔn)等。這將在第14 章本地化-I18N/L10N 使用與設(shè)置作詳細(xì)討論。
8.9 組
組簡單來講就是許多用戶的列表。組可以通過他們的組名和他們的編號(hào)來識(shí)別。在
FreeBSD(和其他絕大多數(shù)的Unix 系統(tǒng))中,這兩個(gè)要素通常被內(nèi)核用來決定一個(gè)允許被執(zhí)
行的進(jìn)程是否是它的用戶ID,還是它所屬的組的列表。不象用戶ID,一個(gè)進(jìn)程有一個(gè)與它
相關(guān)聯(lián)的組的列表。你可能聽說過一些有關(guān)一個(gè)用戶或進(jìn)程的組ID 的事情;在大多數(shù)情況
下,這只意味著在列表中的第一個(gè)組。
與組ID 地圖對(duì)應(yīng)的組名在/etc/group中。這是一個(gè)用四個(gè)冒號(hào)來界定的文本文件。第
一部分是組名,第二部分是加密的密碼,第三部分是組ID,第四部分是以逗號(hào)分割的成員
列表。它可以用手工的方式進(jìn)行編輯。對(duì)于更完整的描述,可以參看group 的參考頁。如果
你不想手工編輯/etc/group,你可以使用pw 命令來增加和編輯組。例如,要增加一個(gè)叫
teamtwo 的組,確信它存在:
例如8-6. 使用pw 增加一個(gè)組:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
上面的1100 數(shù)字是組teamtwo 的組ID。在這兒,teamtwo 沒有成員,那它也就沒有多
大用處。
例如8-7.使用pw 在組中添加一些成員:
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
使用-M 參數(shù)為了用逗號(hào)劃分開一個(gè)組成員中的用戶的列表。你可能知道密碼文件也會(huì)
為每個(gè)用戶包含一個(gè)組;當(dāng)使用pw 來詢問組成員的時(shí)候,在密碼文件中的組會(huì)自動(dòng)被添加
到組列表中,而不會(huì)出現(xiàn)在成員列表中。如果你想知道一個(gè)用戶屬于哪個(gè)組,你可以使用
id 命令:
第11 頁FreeBSD 使用手冊(cè)
例如8-8.使用id 來決定組成員
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
正如你所看到的,jru 是組jru 和teamtwo 的成員。
有關(guān)pw 的更多信息,可以參看它的聯(lián)機(jī)手冊(cè),更多有關(guān)/etc/group格式的信息,可參
考group 的聯(lián)機(jī)手冊(cè)。
第12 頁