密碼、組和它們的映像
Chris Walden
電子商務(wù)架構(gòu)師, IBM Developer Relations
2004 年 1 月
IBM 電子商務(wù)架構(gòu)師 Chris Walden 將通過他在 developerWorks 上發(fā)表的九篇系列文章來指導(dǎo)您如何在 Linux 環(huán)境中運(yùn)用您的 Windows 操作技巧。在本部分,我們使用 Webmin 界面和命令行添加、刪除用戶和組,并介紹了密碼和組文件的映像。
Linux 中的用戶管理與 Windows 中的用戶管理很相似,但又很不相同。兩個(gè)系統(tǒng)都是多用戶系統(tǒng),基于用戶身份來控制他們對資源的訪問。兩個(gè)操作系統(tǒng)都允許將用戶分組管理以簡化訪問控制,以避免為眾多用戶分別設(shè)置權(quán)限。不過,相同之處也僅此而已。
超級用戶
在 Linux 中,超級用戶稱為 root。root 用戶可以控制所有的程序,訪問所有文件,使用系統(tǒng)上的所有功能。對 root 用戶來說沒有不可以做的事情。就管理的角度而言,root 的權(quán)限是至高無上的。所以,root 帳號一定要通過安全的密碼保護(hù)起來,這一點(diǎn)非常重要。您不應(yīng)該使用 root 身份來處理日常的事務(wù)。
其他用戶也可以被賦予 root 特權(quán),但一定要謹(jǐn)慎行事。通常您可以配置一些特定的程序由某些用戶以 root 身份去運(yùn)行,而不必賦予他們 root 權(quán)限。
創(chuàng)建新用戶
可以通過命令行或者 Webmin 等工具來創(chuàng)建新用戶。
添加用戶的命令是 useradd
。例如,從控制臺(tái)中創(chuàng)建一個(gè)新用戶:
useradd -c "normal user" -d /home/userid -g users\
-G webadm,helpdesk -s\ /bin/bash userid
|
這個(gè)命令創(chuàng)建了一個(gè)名為“userid”(命令的最后一個(gè)參數(shù))的新用戶。“normal user”是對這個(gè)用戶的注釋。userid 的主目錄將是“/home/userid”。userid 的主組將是 users,但他也被加入到“webadm”和“helpdesk”這兩個(gè)組。userid 將使用“/bin/bash”shell 作為他的常規(guī)控制臺(tái)環(huán)境。
使用 Webmin 創(chuàng)建新用戶簡單而且直觀。使用您喜歡的瀏覽器登錄到 Webmin,切換到 System 窗體。選擇“Users and Groups”工具,然后點(diǎn)擊 Create a new user。
圖 1. Webmin 的 Create User 屏幕
填寫好用戶的詳細(xì)信息,然后點(diǎn)擊 Create。用戶創(chuàng)建完成。
用 GUI 工具添加用戶在“ Basic tasks for new Linux developers”一文中也討論了。
修改密碼
可以從控制臺(tái)使用 passwd 命令來修改用戶的密碼:
只有 root 用戶可以用 passwd
修改其他用戶的密碼。輸入完命令后,系統(tǒng)將提示您輸入并確認(rèn)您要設(shè)置的密碼。如果兩次輸入一致,用戶的標(biāo)識(shí)就會(huì)更新,密碼修改成功。從控制臺(tái)輸入 passwd
,用戶可以修改自己的密碼;在這種情況下,系統(tǒng)會(huì)向用戶詢問原來的密碼,驗(yàn)證通過后才可以輸入新密碼。
大多數(shù)的 Linux 發(fā)行版本安裝時(shí)都會(huì)啟用 password cracker 模塊,用于修改密碼。這個(gè)模塊將檢查密碼是否遵循了良好的密碼設(shè)置習(xí)慣。如果用戶使用了不安全的密碼,它將自動(dòng)警告用戶。您可以將系統(tǒng)配置為要求用戶必須使用安全的密碼。root 在設(shè)置不安全的密碼時(shí)也會(huì)被警告,但是仍然可以設(shè)置成功。
在 Webmin 中,可以使用 System窗體中的“Change Passwords”模塊來修改密碼。在列表中選擇一個(gè)用戶,然后在空白處輸入新密碼。
刪除用戶
可以從控制臺(tái)使用 userdel
命令來刪除用戶。
使用可選的 -r開關(guān)可以將用戶的主目錄及所有相關(guān)信息全部刪除。如果想要保留用戶主目錄,那么不要使用 -r開關(guān)。這個(gè)開關(guān)不會(huì)自動(dòng)刪除系統(tǒng)中所有屬于這個(gè)用戶的文件,只是刪除他的主目錄。
如何組織用戶
Linux 的配置是基于文本的。Linux 中的所有用戶都存放于 /etc/passwd 文件中。您可以使用 more
命令來分頁查看這個(gè)文件:
more /etc/passwd
/etc 目錄 不要忘記,Linux 的大多數(shù)配置文件都是在 /etc 目錄下。 |
這個(gè)文件的結(jié)構(gòu)非常直觀。每一行是一個(gè)新用戶,參數(shù)用冒號隔開。
userid:x:75000:75000::/home/userid:/bin/bash
|
第一列是用戶名。第二列是用戶的密碼。第三列是用戶的數(shù)字 ID。第四列是用戶的主組的 ID。第五列是用戶的全名,或者是注釋。第六列是用戶主目錄的位置,這個(gè)目錄通常位于 /home 目錄下,目錄名與用戶 ID 相同。第七列是用戶的默認(rèn)控制臺(tái) shell。
Password 文件結(jié)構(gòu)
Login ID |
Password |
User ID |
Group ID |
Comment |
Home directory |
Default shell |
userid |
x |
75000 |
75000 |
|
/home/userid |
/bin/bash |
注意上面的例子中 Password 列是一個(gè)“x”。這并不是說用戶的密碼是“x”。以前密碼曾經(jīng)是以平文本的形式存儲(chǔ)在這個(gè)文件中?,F(xiàn)在也還有這樣的配置,但由于密碼容易泄露,已經(jīng)很少有人再這樣做了。解決的方法是創(chuàng)建 shadow password。在 /etc/passwd 文件中存放密碼的位置只是存放一個(gè)“x”,而經(jīng)過加密的密碼存放于 /etc/shadow 文件中。這項(xiàng)技術(shù)通過將用戶信息與密碼數(shù)據(jù)分離而提高了安全性。MD5 密碼加密算法支持更為可靠的密碼,從而進(jìn)一步提高了安全性。一個(gè)映像密碼條目的樣例如下所示:
映像密碼和用戶權(quán)限 Linux 用戶管理的特點(diǎn)之一在于它沿襲了 UNIX 風(fēng)格,使用 passwd 文件。登錄的用戶必須可以讀取 /etc/passwd 文件,以判斷他的用戶名是否存在。如果將用戶名和密碼存放在同一個(gè)文件中,潛在的攻擊者就可能獲得密碼;他們可以下載 /etc/passwd 文件,然后以暴力破解的方法獲得密碼。映像文件不必所有人都可讀,這樣攻擊者將不能獲得任何形式的密碼。
這種方法還是不最好的,因?yàn)楣暨€是可以得到 一些 用戶信息。更好的方法是將用戶保存于一個(gè)單獨(dú)的地方,比如使用 LDAP。 |
userid:$1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::
所有的映像密碼過程都是在后臺(tái)進(jìn)行,您只需要啟用這項(xiàng)功能,別的什么都不用去做。
組
Linux 中的組與 Windows 中的組很類似。您可以創(chuàng)建一個(gè)組,然后將成員添加到這個(gè)組的列表中。可以以組為單位來分配資源。隸屬于同一個(gè)組的成員可以訪問同一資源。
使用控制臺(tái)命令 groupadd
創(chuàng)建組很簡單:
這將創(chuàng)建一個(gè)名為“newgroup”的沒有任何成員的組。組存放于 /etc/group 文件中。每一個(gè)組由單獨(dú)的一行列出,如下所示:
mygroup:x:527:
第一列是組的名字。第二列是一個(gè)密碼。同樣,“x”說明真正的密碼存放在 /etc/gshadow 映像文件中。第三列是組的一個(gè)數(shù)字索引。在第三列之后將是以逗號隔開的組的成員的用戶 ID。
可以使用 gpasswd
命令向組中添加成員,要使用 -a
開關(guān),后面跟要添加的用戶名:
gpasswd -a userid mygroup
|
刪除組的成員還是使用這個(gè)命令,不過使用的開關(guān)是 -d
而不是 -a
:
gpasswd -d userid mygroup
|
也可以通過直接編輯 /etc/group 文件來對組進(jìn)行修改。
編輯 passwd 文件時(shí)要當(dāng)心 直接編輯 /etc/passwd 文件和 /etc/group 文件的真正危險(xiǎn)在于有可能偶然失誤而造成 ID 編號的重復(fù)。所有的資源都通過 ID 編號而不是用戶或組的名字來確定用戶的身份。如果您不小心造成了 ID 編號的重復(fù),那么可能會(huì)有一些意想不到的事情發(fā)生。例如,如果您將一個(gè)用戶的 ID 編號設(shè)置為 0 (root 用戶的 ID),那個(gè)用戶的身份將是 root!。另外,如果您在文件中刪除了用戶行或者組行,那么對應(yīng)的用戶或組也就被刪掉了。
這些都是人為的錯(cuò)誤。使用工具可以避免這些錯(cuò)誤。不過,有時(shí)直接去編輯 /etc/group 文件是解決問題最快捷的途徑。您一定要記住,當(dāng)您在編輯那些文件時(shí),您管理的是實(shí)際的權(quán)力。一定要小心。 |
在 Webmin 中,可以使用前面用到的管理用戶的工具來創(chuàng)建、編輯、除去組。
用戶和組的關(guān)聯(lián)
雖然在這里我們不能詳盡地論述訪問控制,不過您應(yīng)該對用戶和組對文件的訪問權(quán)限有初步的了解。如果您以長格式列出一個(gè)目錄下的文件,您看到的將如下顯示。
-rw-r--r-- 1 userid mygroup 703 Jun 23 22:12 myfile
現(xiàn)在暫時(shí)忽略其他的列,只去看第三、四和最后一列。第三列是文件主人的名字,userid。第四列是關(guān)聯(lián)到這個(gè)文件的組,mygroup。最后一列是文件名。每個(gè)文件只能屬于一個(gè)主人和一個(gè)組。可以為不能歸于這兩類的其他用戶(Other)設(shè)置權(quán)限。可以認(rèn)為 Other 相當(dāng)于 Windows 中的 Everyone 組。
一個(gè)文件只能屬于一個(gè)主人,這在操作系統(tǒng)中很常見,但是,文件只能屬于一個(gè)組,初次使用這一規(guī)則的管理員可能會(huì)覺得受到了限制。事實(shí)并不如此。由于用戶可以同時(shí)是多個(gè)組的成員,所以只需要?jiǎng)?chuàng)建新的組就可以安全使用資源。在 Linux 中,往往是基于所需要的資源訪問權(quán)限而不是根據(jù)業(yè)務(wù)單位來定義組。如果系統(tǒng)的資源邏輯上是有組織的,那么可以創(chuàng)建更多的組來更好地控制對資源的訪問。
在本文最后的 參考資料 部分,您可以找到關(guān)于關(guān)聯(lián)用戶和組的更多詳細(xì)資料。查看 man chmod
可以獲得如何改變文件權(quán)限的詳細(xì)信息。
結(jié)束語
在 Linux 中管理用戶和組的方式與 Windows 中本質(zhì)上是相同的,但是 Linux 中只能有惟一的組可以關(guān)聯(lián)到一個(gè)系統(tǒng)資源。應(yīng)該這樣認(rèn)識(shí) Linux 中的組管理:不要吝惜對組的使用,在復(fù)雜的環(huán)境中,不要害怕創(chuàng)建很多組。應(yīng)該根據(jù)資源訪問權(quán)限而不是基于業(yè)務(wù)單位去創(chuàng)建組。
用戶和組信息分別存儲(chǔ)在 /etc/passwd 文件和 /etc/group 文件中。您的系統(tǒng)可能還會(huì)有 /etc/shadow 和 /etc/gshadow 文件,它們存儲(chǔ)的是為了安全而經(jīng)過加密的密碼。直接編輯這些文件來管理用戶和組不是不可以,但您一定要謹(jǐn)慎行事。
所有的用戶和組的管理都可以在控制臺(tái)中完成,可以寫成腳本。也可以使用 Webmin 等工具以圖形化的方式管理用戶和組。
參考資料
關(guān)于作者 Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務(wù)架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實(shí)現(xiàn)和咨詢。他致力于 Linux 相關(guān)工作,一有機(jī)會(huì)就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責(zé)之外,他還精通 Linux 基礎(chǔ)設(shè)施服務(wù)器的各個(gè)領(lǐng)域,包括混合平臺(tái)用戶環(huán)境下的文件、打印以及其他應(yīng)用服務(wù)等。Chris 有 10 年的計(jì)算機(jī)行業(yè)經(jīng)驗(yàn),從現(xiàn)場支持到 Web 應(yīng)用開發(fā)和顧問,各個(gè)領(lǐng)域他都曾涉足。您可以通過 cmwalden@us.ibm.com 與 Chris 聯(lián)系。 |
posted on 2005-10-27 09:25
小強(qiáng) 閱讀(237)
評論(0) 編輯 收藏 所屬分類:
Linux