專題:Windows 到 Linux 之旅:第 4 部分. 使用者管理

來源:互聯網
上載者:User
密碼、組和它們的映像

層級:初級

Chris Walden (cmwalden-at-us.ibm.com)
電子商務架構師,IBM Developer Relations
2004 年 1 月

IBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。在本部分,我們使用 Webmin 介面和命令列添加、刪除使用者和組,並介紹了密碼和組檔案的映像。

Linux 中的使用者管理與 Windows 中的使用者管理很相似,但又很不相同。兩個系統都是多使用者系統,基於使用者身份來控制他們對資源的訪問。兩個作業系統都允許將使用者分組管理以簡化存取控制,以避免為眾多使用者分別設定許可權。不過,相同之處也僅此而已。

超級使用者
在 Linux 中,超級使用者稱為 root。root 使用者可以控制所有的程式,訪問所有檔案,使用系統上的所有功能。對 root 使用者來說沒有不可以做的事情。就管理的角度而言,root 的許可權是至高無上的。所以,root 帳號一定要通過安全的密碼保護起來,這一點非常重要。您不應該使用 root 身份來處理日常的事務。

其他使用者也可以被賦予 root 特權,但一定要謹慎行事。通常您可以配置一些特定的程式由某些使用者以 root 身份去運行,而不必賦予他們 root 許可權。

建立新使用者
可以通過命令列或者 Webmin 等工具來建立新使用者。

添加使用者的命令是 useradd。例如,從控制台中建立一個新使用者:

useradd -c "normal user" -d /home/userid -g users/
-G webadm,helpdesk -s/ /bin/bash userid

這個命令建立了一個名為“userid”(命令的最後一個參數)的新使用者。“normal user”是對這個使用者的注釋。userid 的主目錄將是“/home/userid”。userid 的主組將是 users,但他也被加入到“webadm”和“helpdesk”這兩個組。userid 將使用“/bin/bash”shell 作為他的常規控制台環境。

使用 Webmin 建立新使用者簡單而且直觀。使用您喜歡的瀏覽器登入到 Webmin,切換到 System 表單。選擇“Users and Groups”工具,然後點擊 Create a new user

圖 1. Webmin 的 Create User 螢幕

填寫好使用者的詳細資料,然後點擊 Create。使用者建立完成。

用 GUI 工具添加使用者在“Basic tasks for new Linux developers”一文中也討論了。

修改密碼
可以從控制台使用 passwd 命令來修改使用者的密碼:

passwd userid

只有 root 使用者可以用 passwd 修改其他使用者的密碼。輸入完命令後,系統將提示您輸入並確認您要設定的密碼。如果兩次輸入一致,使用者的標識就會更新,密碼修改成功。從控制台輸入 passwd,使用者可以修改自己的密碼;在這種情況下,系統會向使用者詢問原來的密碼,驗證通過後才可以輸入新密碼。

大多數的 Linux 發行版本安裝時都會啟用 password cracker 模組,用於修改密碼。這個模組將檢查密碼是否遵循了良好的密碼設定習慣。如果使用者使用了不安全的密碼,它將自動警告使用者。您可以將系統配置為要求使用者必須使用安全的密碼。root 在設定不安全的密碼時也會被警告,但是仍然可以設定成功。

在 Webmin 中,可以使用 System 表單中的“Change Passwords”模組來修改密碼。在列表中選擇一個使用者,然後在空白處輸入新密碼。

刪除使用者
可以從控制台使用 userdel 命令來刪除使用者。

userdel -r userid

使用可選的 -r 開關可以將使用者的主目錄及所有相關資訊全部刪除。如果想要保留使用者主目錄,那麼不要使用 -r 開關。這個開關不會自動刪除系統中所有屬於這個使用者的檔案,只是刪除他的主目錄。

如何組織使用者
Linux 的配置是基於文本的。Linux 中的所有使用者都存放於 /etc/passwd 檔案中。您可以使用 more 命令來分頁查看這個檔案:

more /etc/passwd

/etc 目錄
不要忘記,Linux 的大多數設定檔都是在 /etc 目錄下。

這個檔案的結構非常直觀。每一行是一個新使用者,參數用冒號隔開。

userid:x:75000:75000::/home/userid:/bin/bash

第一列是使用者名稱。第二列是使用者的密碼。第三列是使用者的數字 ID。第四列是使用者的主組的 ID。第五列是使用者的全名,或者是注釋。第六列是使用者主目錄的位置,這個目錄通常位於 /home 目錄下,目錄名與使用者識別碼 相同。第七列是使用者的預設控制台 shell。

Password 檔案結構

Login ID Password User ID Group ID Comment Home directory Default shell
userid x 75000 75000 /home/userid /bin/bash

注意上面的例子中 Password 列是一個“x”。這並不是說使用者的密碼是“x”。以前密碼曾經是以平文本的形式儲存在這個檔案中。現在也還有這樣的配置,但由於密碼容易泄露,已經很少有人再這樣做了。解決的方法是建立 shadow password。在 /etc/passwd 檔案中存放密碼的位置只是存放一個“x”,而經過加密的密碼存放於 /etc/shadow 檔案中。這項技術通過將使用者資訊與密碼資料分離而提高了安全性。MD5 密碼密碼編譯演算法支援更為可靠的密碼,從而進一步提高了安全性。一個映像密碼條目的範例如下所示:

映像密碼和使用者權限
Linux 使用者管理的特點之一在於它沿襲了 UNIX 風格,使用 passwd 檔案。登入的使用者必須可以讀取 /etc/passwd 檔案,以判斷他的使用者名稱是否存在。如果將使用者名稱和密碼存放在同一個檔案中,潛在的攻擊者就可能獲得密碼;他們可以下載 /etc/passwd 檔案,然後以暴力破解的方法獲得密碼。映像檔案不必所有人都可讀,這樣攻擊者將不能獲得任何形式的密碼。

這種方法還是不最好的,因為攻擊還是可以得到 一些 使用者資訊。更好的方法是將使用者儲存於一個單獨的地方,比如使用 LDAP。

userid:$1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::

所有的映像密碼過程都是在後台進行,您只需要啟用這項功能,別的什麼都不用去做。


Linux 中的組與 Windows 中的組很類似。您可以建立一個組,然後將成員添加到這個組的列表中。可以以組為單位來分配資源。隸屬於同一個組的成員可以訪問同一資源。

使用控制台命令 groupadd 建立組很簡單:

groupadd mygroup

這將建立一個名為“newgroup”的沒有任何成員的組。組存放於 /etc/group 檔案中。每一個組由單獨的一行列出,如下所示:

mygroup:x:527:

第一列是組的名字。第二列是一個密碼。同樣,“x”說明真正的密碼存放在 /etc/gshadow 映像檔案中。第三列是組的一個數字索引。在第三列之後將是以逗號隔開的組的成員的使用者識別碼。

可以使用 gpasswd 命令向組中新增成員,要使用 -a 開關,後面跟要添加的使用者名稱:

gpasswd -a userid mygroup

刪除群組的成員還是使用這個命令,不過使用的開關是 -d 而不是 -a

gpasswd -d userid mygroup

也可以通過直接編輯 /etc/group 檔案來對組進行修改。

編輯 passwd 檔案時要當心
直接編輯 /etc/passwd 檔案和 /etc/group 檔案的真正危險在於有可能偶然失誤而造成 ID 編號的重複。所有的資源都通過 ID 編號而不是使用者或組的名字來確定使用者的身份。如果您不小心造成了 ID 編號的重複,那麼可能會有一些意想不到的事情發生。例如,如果您將一個使用者的 ID 編號設定為 0 (root 使用者的 ID),那個使用者的身份將是 root!。另外,如果您在檔案中刪除了使用者行或者組行,那麼對應的使用者或組也就被刪掉了。

這些都是人為的錯誤。使用工具可以避免這些錯誤。不過,有時直接去編輯 /etc/group 檔案是解決問題最快捷的途徑。您一定要記住,當您在編輯那些檔案時,您管理的是實際的權力。一定要小心。

在 Webmin 中,可以使用前面用到的系統管理使用者的工具來建立、編輯、除去組。

使用者和組的關聯
雖然在這裡我們不能詳盡地論述存取控制,不過您應該對使用者和組對檔案的存取權限有初步的瞭解。如果您以長格式列出一個目錄下的檔案,您看到的將如下顯示。

-rw-r--r-- 1 userid mygroup 703 Jun 23 22:12 myfile

現在暫時忽略其他的列,只去看第三、四和最後一列。第三列是檔案主人的名字,userid。第四列是關聯到這個檔案的組,mygroup。最後一列是檔案名稱。每個檔案只能屬於一個主人和一個組。可以為不能歸於這兩類的其他使用者 (Other)設定許可權。可以認為 Other 相當於 Windows 中的 Everyone 組。

一個檔案只能屬於一個主人,這在作業系統中很常見,但是,檔案只能屬於一個組,初次使用這一規則的管理員可能會覺得受到了限制。事實並不如此。由於使用者可以同時是多個組的成員,所以只需要建立新的組就可以安全使用資源。在 Linux 中,往往是基於所需要的資源存取權限而不是根據業務單位來定義組。如果系統的資源邏輯上是有組織的,那麼可以建立更多的組來更好地控制對資源的訪問。

在本文最後的 參考資料 部分,您可以找到關於關聯使用者和組的更多詳細資料。查看 man chmod 可以獲得如何改變檔案許可權的詳細資料。

結束語
在 Linux 中系統管理使用者和組的方式與 Windows 中本質上是相同的,但是 Linux 中只能有惟一的組可以關聯到一個系統資源。應該這樣認識 Linux 中的組管理:不要吝惜對組的使用,在複雜的環境中,不要害怕建立很多組。應該根據資源存取權限而不是基於業務單位去建立組。

使用者和組資訊分別儲存在 /etc/passwd 檔案和 /etc/group 檔案中。您的系統可能還會有 /etc/shadow 和 /etc/gshadow 檔案,它們儲存的是為了安全而經過加密的密碼。直接編輯這些檔案來系統管理使用者和組不是不可以,但您一定要謹慎行事。

所有的使用者和組的管理都可以在控制台中完成,可以寫成指令碼。也可以使用 Webmin 等工具以圖形化的方式系統管理使用者和組。

參考資料

  • 閱讀 Windows 到 Linux 之旅系列文章 的其他部分(developerWorks, 2003 年 11 月)。

  • The Linux System Administrator's Guid, Chapter 11. Managing user accounts 雖然是一份比較老的文檔,但是仍值得一讀,因為系統管理使用者和組的技術是通用的。這份指南將協助您深入學習 Linux 中基於控制台的管理。
  • Linux Headquarters 網站給出了關於很多主題的基本教程和提示。那些標籤往往是“我已經安裝了 Linux ... 現在該怎麼辦???”您可能會對 這些教程 高度興趣。
  • Linux Documentation Project 也提供了一個 分類的 HOWTO 列表,來協助您快速方便地找到適當的文檔。
  • 在“針對 Linux 開發新手的基本任務”中也對使用 GUI 系統工具添加使用者進行了介紹。
  • developerWorks 教程“LPI certification 101 exam prep, Part 3: Intermediate administration”中也涉及了使用者管理方面的內容。
  • IBM Directory Server 實現了輕量目錄訪問協議(Lightweight Directory Access Protocol , LDAP),用於訪問目錄服務,尤其是那些基於 X.500 的目錄服務。 更多細節請閱讀“使用 IBM Directory Server 進行 Linux 使用者驗證”。
  • Linux Documentation Project 的 Introduction to Linux 指南的 第 3 章中講述了檔案許可權和安全。
  • 閱讀更多 Users and Logins 資料,請參考 Linux Unleashed (Macmillan Computer Publishing,1998 年)的相關章節,以及 The Official Red Hat Linux System Administration Primer(Red Hat, 2002 年)的 Managing Accounts and Groups。
  • Maryland 大學共用了他們的關於 安全密碼的選擇 的思路與技巧。
  • Red Hat Linux Manual 文檔中有關於使用 Shadow passwd file 的詳細資料。
  • Linux Shadow Password HOWTO 介紹了映像系統的背景曆史和相關資料,以及面向實現的循序漸進的指南。
  • 系統安全是一個廣泛而複雜的主題,但是在互連網的世界中,它會影響到每一個人。幸運的是,只要開始意識到這個問題,就不算晚。以下兩篇文章將對您有所協助,一篇是 Adding Security to Common Linux Distributions,另一篇是 Strategies for Keeping a Secure Server (來自於以前引用過的 Linux Administration Made Easy 指南的第 12 章)。
  • IBM developerWorks 文章“Addressing security issues in Linux”將帶您開始實現初步的安全。
  • “Linux 使用者技術 FAQ” (developerWorks, 2001 年 7 月)也可以協助您順利地從 Windows 過渡到 Linux。
  • 要開始在 Linux 上使用 IBM 的軟體產品,為您的 Linux 應用開發加油提速 將為您提供最好的參考資料。您可以找到關於 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多種應用軟體的安裝提示和參考資料。您還可以登入獲得免費的 Linux Software Evaluation Kit,裡面有試用軟體和培訓資料。
  • developerWorks Linux 專區可以找到更多 為 Linux 開發人員準備的參考資料。
關於作者
Chris Walden 是位於德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers)的一名電子商務架構師,該公司為 IBM 商業夥伴提供教育、實現和諮詢。他致力於 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施伺服器的各個領域,包括混合平台使用者環境下的檔案、列印以及其他應用服務等。Chris 有 10 年的電腦行業經驗,從現場支援到 Web 應用程式開發和顧問,各個領域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯絡。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.