在Linux中,有三種用戶:linux
Root 用戶:也稱爲超級用戶,對系統擁有徹底的控制權限。超級用戶能夠不受限制的運行任何命令。Root 用戶能夠看作是系統管理員。shell
系統用戶:系統用戶是Linux運行某些程序所必須的用戶,例如 mail 用戶、sshd 用戶等。系統用戶一般爲系統功能所必須的,不建議修改這些用戶。ssh
普通用戶:通常用戶都是普通用戶,這些用戶對系統文件的訪問受限,不能執行所有Linux命令。ide
Linux支持用戶組,用戶組就是具備相同特徵的用戶的集合。一個組能夠包含多個用戶,每一個用戶也能夠屬於不一樣的組。用戶組在Linux中扮演着重要的角色,方便管理員對用戶進行集中管理。加密
與用戶和組有關的系統文件:
spa
系統文件 | 說明 |
---|---|
/etc/passwd | 保存用戶名和密碼等信息,Linux系統中的每一個用戶都在/etc/passwd文件中有一個對應的記錄行。這個文件對全部用戶都是可讀的。 |
/etc/shadow | /etc/shadow中的記錄行和/etc/passwd中的相對應,他由pwconv命令根據/etc/passwd中的數據自動產生,它的格式和/etc/passwd相似,只是對密碼進行了加密。並非全部的系統都支持這個文件。 |
/etc/group | 以記錄行的形式保存了用戶組的全部信息。 |
來看一下/etc/passwd文件的結構:orm
$cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/usr/sam:/bin/sh
能夠看到,/etc/passwd文件中一行記錄對應着一個用戶,每行記錄又被冒號分隔爲7個字段,其格式和具體含義以下圖所示:
對每一個字段的說明:
blog
字段 | 說明 |
---|---|
用戶名 | 用戶名是唯一的,長度根據不一樣的linux系統而定,通常是8位。 |
密碼 | 因爲系統中還有一個/etc/shadow文件用於存放加密後的口令,因此在這裏這一項是「x」來表示,若是用戶沒有設置口令,則該項爲空。若是passwd字段中的第一個字符是「*」的話,那麼,就表示該帳號被查封了,系統不容許持有該帳號的用戶登陸。 |
用戶ID | 系統內部根據用戶ID而不是用戶名來識別不一樣的用戶,用戶ID有如下幾種:
|
組ID | 其實這個和用戶ID差很少,用來管理羣組,與/etc/group文件相關。 |
描述信息 | 這個字段幾乎沒有什麼用,只是用來解釋這個帳號的意義。在不一樣的Linux系統中,這個字段的 格式並無統一。在許多Linux系統中,這個字段存放的是一段任意的註釋性描述文字,用作finger命令的輸出。 |
用戶主目錄 | 用戶登陸系統的起始目錄。用戶登陸系統後將首先進入該目錄。root用戶默認是/,普通用戶是/home/username。 |
用戶Shell | 用戶登陸系統時使用的Shell。 |
下面是一些經常使用的管理用戶和組的命令:
命令 | 說明 |
---|---|
useradd | 添加用戶。 |
usermod | 修改用戶信息。 |
userdel | 刪除用戶。 |
groupadd | 添加用戶組。 |
groupmod | 修改用戶組信息。 |
groupdel | 刪除用戶組。 |
添加用戶時,能夠將用戶添加到現有的用戶組,或者建立一個新的用戶組。能夠在 /etc/groups 文件中看到全部的用戶組信息。
默認的用戶組一般用來管理系統用戶,不建議將普通用戶添加到這些用戶組。使用groupadd命令建立用戶組的語法爲:
groupadd [-g gid [-o]] [-r] [-f] groupname
每一個選項的含義以下:
選項 | 說明 |
---|---|
-g GID | 以數字表示的用戶組ID。 |
-o | 可使用重複的組ID。 |
-r | 創建系統組,用來管理系統用戶。 |
-f | 強制建立。 |
groupname | 用戶組的名稱。 |
若是不指定選項,系統將使用默認值。例如建立一個 developers 用戶組:
$ groupadd developers
groupmod命令能夠用來修改用戶組,語法爲:
$ groupmod -n new_modified_group_name old_group_name
例如,將用戶組 developers_2 重命名爲 developer:
$ groupmod -n developer developer_2
將developer用戶組的ID改成545:
$ groupmod -g 545 developer
經過groupdel命令能夠刪除用戶組。例如,刪除developer組:
$ groupdel developer
groupdel 僅僅刪除用戶組,並不刪除與之相關的文件,這些文件仍然能夠被全部者訪問。
添加用戶可使用useradd命令,語法爲:
useradd -d homedir -g groupname -m -s shell -u userid accountname
每一個選項的含義以下:
選項 | 描述 |
---|---|
-d homedir | 指定用戶主目錄。 |
-g groupname | 指定用戶組。 |
-m | 若是主目錄不存在,就建立。 |
-s shell | 爲用戶指定默認Shell。 |
-u userid | 指定用戶ID。 |
accountname | 用戶名。 |
若是不指定任何選項,系統將使用默認值。useradd 命令將會修改 /etc/passwd、/etc/shadow、and /etc/group 三個文件,並建立用戶主目錄。
下面的例子將會添加用戶 mcmohd,並設置主目錄爲 /home/mcmohd,用戶組爲 developers,默認 Shell 爲 Korn Shell:
$ useradd -d /home/mcmohd -g developers -s /bin/ksh mcmohd
注意:添加用戶前請確認 developers 用戶組存在。
用戶被建立後,可使用 passwd 命令來設置密碼,例如:
$ passwd mcmohd20 Changing password for user mcmohd20. New Linux password:****** Retype new UNIX password:****** passwd: all authentication tokens updated successfully.
注意:若是你是管理員,輸入 $ passwd username 能夠修改你所管理的用戶的密碼;不然只能修改你本身的密碼(不須要提供username)。
usermod 命令能夠修改現有用戶的信息。usermod 命令的選項和 useradd 相同,不過能夠增長 -l 選項來更改用戶名。
下面的例子將用戶 mcmohd 的用戶名修改成 mcmohd20,主目錄修改成 /home/mcmohd20:
$ usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20
userdel 命令能夠用來刪除現有用戶。userdel 是一個危險的命令,請謹慎使用。
userdel 命令僅有一個選項 -r,用來刪除用戶主目錄和本地郵件。例如,刪除用戶 mcmohd20:
$ userdel -r mcmohd20
爲了便於恢復被誤刪的用戶,能夠忽略 -r 選項,保留用戶主目錄,以後確認無誤能夠隨時刪除主目錄。