Linux教程:http://www.fdlly.com/m/linux
@[toc]
Linux用戶管理
Linux操作系統(tǒng)是多用戶的多任務(wù)操作系統(tǒng)
- 多用戶:Linux操作系統(tǒng)可以允許建立多個用戶,允許多個用戶同時登陸到系統(tǒng)上,使用系統(tǒng)資源
- 多任務(wù):Linux操作系統(tǒng)允許多個用戶在在同一時間內(nèi)登錄到同一個系統(tǒng)執(zhí)行各自不同的任務(wù),并且相互之間互不影響
Linux下用戶的角色分類
用戶在系統(tǒng)中是分角色的,在Linux系統(tǒng)中,由于角色的不同,權(quán)限和所完成的任務(wù)也不同;值得注意的是用戶的角色是通過UID和GID識別的;特別是UID,在運維工作中,一個UID是唯一標(biāo)識一個系統(tǒng)用戶的賬號
在 Linux 下用戶是根據(jù)角色定義的, 具體分為三種角色。
- 超級用戶(root用戶): 擁有對系統(tǒng)的最高管理權(quán)限, 默認是 root 用戶。在Linux系統(tǒng)中,root用戶的UID和GID都為0,在每臺Linux操作系統(tǒng)中都是唯一且真實存在的,root用戶擁有最高的管理權(quán)限,通過它可以登錄系統(tǒng),可以操作系統(tǒng)中任何文件和命令。在生產(chǎn)環(huán)境中應(yīng)避免使用此類賬號,錯誤的操作可能造成不可估量的損失,建議只有必要時才使用root登錄系統(tǒng)
- 系統(tǒng)用戶(虛擬用戶): 也叫偽用戶或加用戶,這類用戶都是系統(tǒng)自身擁有的。 這類用戶最大的特點是不能登錄系統(tǒng),但卻是系統(tǒng)運行中不可缺少的用戶,系統(tǒng)用戶的UID為1~999, 它們的存在主要是為了方便系統(tǒng)管理, 滿足相應(yīng)的系統(tǒng)進程對文件屬主的要求。 例如, 系統(tǒng)默認的 bin、adm、daemon、ftp、nobody 用戶等。 一般運行的 Web 服務(wù), 默認使用的就是 nobody 用戶,但是 nobody 用戶是不能登錄系統(tǒng)的
- 普通用戶: 具有登錄系統(tǒng)的權(quán)限,UID為1000~60000在Linux系統(tǒng)中可以進行普通操作,但只能對自己目錄下的文件進行訪問和修改,其使用系統(tǒng)的權(quán)限受限
/etc/passwd文件詳解
該文件為純文本文件,記錄了每個用戶的必要信息。任何用戶都可以讀取/etc/passwd文件內(nèi)容。 在/etc/passwd文件中, 每一行代表一個用戶賬號的信息,每行的字符之間使用:分隔,共7個字段
用戶名稱:用戶密碼:用戶標(biāo)識號:組標(biāo)志號:相關(guān)注釋:主目錄:默認shell
下面是/etc/passwd文件的部分內(nèi)容
root:x:0:0:root:/root:/bin/bash
- 用戶名稱:代表用戶賬號的字符串。用于區(qū)分不同的用戶。在同一系統(tǒng)中注冊名是惟一的。在很多系統(tǒng)上,該字段被限制在8個字符(字母或數(shù)字)的長度之內(nèi);并且要注意,通常在Linux系統(tǒng)中對字母大小寫是敏感的
- 用戶密碼:存放著加密后的用戶密碼,用來校驗用戶的合法性。雖然這個字段存放的只是用戶密碼的加密串, 不是明文, 但是由于
/etc/passwd文件對所有用戶都可讀, 因此這仍是一個安全隱患。現(xiàn)在許多 Linux 版本都使用了 shadow 技術(shù),口令不再直接保存在passwd文件中,把真正加密后的用戶密碼存放到/etc/shadow 文件中, 而在/etc/passwd 文件的密碼字段中只存放一個特殊的字符,例如用x或者*來表示。當(dāng)然/etc/shadow文件是不能被普通用戶讀取的,只有超級用戶才有權(quán)讀取 - 用戶標(biāo)識號:User ID,簡稱UID,UID是一個數(shù)值,是Linux系統(tǒng)中惟一的用戶標(biāo)識,用于區(qū)別不同的用戶。在系統(tǒng)內(nèi)部管理進程和文件保護時使用 UID字段。在Linux系統(tǒng)中,注冊名和UID都可以用于標(biāo)識用戶,只不過對于系統(tǒng)來說UID更為重要;而對于用戶來說注冊名使用起來更方便。在某些特殊目的下,系統(tǒng)中可以存在多個擁有不同注冊名、但UID相同的用戶,事實上,這些使用不同用戶名稱的用戶實際上是同一個用戶,同時也具備相同的用戶權(quán)限.實際上,UID 就是一個 0~65535 之間的數(shù),不同范圍的數(shù)字表示不同的用戶身份
- 組標(biāo)志號:Group ID,簡稱GID。是一個整數(shù),系統(tǒng)內(nèi)部用它來標(biāo)識用戶所屬的組。添加用戶時,系統(tǒng)會建立一個和用戶名相同的用戶組。用戶組相同的賬戶其GID相同
- 相關(guān)注釋:字段記錄著用戶的一些個人情況,例如用戶的真實姓名、電話、地址等,這個字段并沒有什么實際的用途
- 主目錄:用戶的主目錄,即用戶登錄系統(tǒng)后進入的目錄,root目錄為/root。每個用戶都有自己的主目錄,默認一般在/home下建立與用戶名一致的目錄
- 默認shell:用戶登錄后,要啟動一個進程,負責(zé)將用戶的操作傳給內(nèi)核,這個進程是用戶登錄到系統(tǒng)后運行的命令解釋器或某個特定的程序,即Shell。Shell是用戶與Linux系統(tǒng)之間的接口。Linux的Shell有許多種,每種都有不同的特點。常用的有
sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系統(tǒng)管理員可以根據(jù)系統(tǒng)情況和用戶習(xí)慣為用戶指定某個Shell。如果不指定Shell,那么系統(tǒng)使用sh為默認的登錄Shell,即這個字段的值為/bin/sh。若此處shell為:/sbin/nologin,則代表這個用戶不能登錄。這樣做的好處是,ftp用戶只能通過ftp登錄ftp服務(wù)器,而不能登錄到shell中
/etc/shadow:用戶密碼文件
該文件為普通文本文件,該文件包含用戶及被加密的密碼以及其他/etc/passwd不包括的信息等
該文件只允許超級管理員root讀取,普通用戶沒有權(quán)限讀取。文件的權(quán)限不能隨便修改成其它用戶可讀,這是非常危險的。注意,如果這個文件的權(quán)限發(fā)生了改變,則需要注意是否是惡意攻擊,防止系統(tǒng)安全問題的發(fā)生
在/etc/shadow文件中, 每一行代表一個用戶賬號的信息,每行的字符之間使用:分隔,共9個字段
用戶名稱:用戶密碼:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:賬號被取消激活前的天數(shù):失效時間:保留字段
下面是/etc/shadow文件的部分內(nèi)容
root:$6$sEjoDM14JTLkNiWz$1s4kQfL4xNAIznxeqD9tqLLx.ZKF4s3MYtJhd2UY5SEiiBPrMqe/cFtJwp6wPSzN.0fDjAyDkD8/Yh4HiCR9p.::0:99999:7:::
- 用戶名稱:/etc/shadow文件中的用戶名稱和/etc/passwd文件中的用戶名稱相同,每一行是一一對應(yīng)的,這樣就把/etc/shadow文件和/etc/passwd文件聯(lián)系在一起了
- 用戶密碼:加密后的密碼,如果這里顯示
!!或x,則標(biāo)識這個而用戶還沒有設(shè)置密碼,不允許登錄系統(tǒng) - 最后一次修改時間:從1970年1月1日算起到最后一次修改密碼的時間間隔天數(shù)
- 最小時間間隔:兩次修改密碼的最小時間間隔,該字段如果為 0, 表示此功能被禁用, 如果是不為0的整數(shù). 表示用戶必須經(jīng)過多少天需要修改密碼
- 最大時間間隔:兩次修改密碼的最大時間間隔:主要作用是管理用戶密碼的有效期,增強系統(tǒng)的安全性,root用戶中為99999,表示密碼基本不需要修改
- 警告時間:提前多少天警告用戶密碼過期,在快到有效期時,當(dāng)用戶登錄系統(tǒng)后,系統(tǒng)程序會提醒用戶密碼將要作廢,以便及時更改
- 賬號被取消激活前的天數(shù):密碼過期后,系統(tǒng)會在多少天后禁用此用戶
- 失效時間:從1970年1月1日算起到用戶賬戶禁用的天數(shù),如果該字段為空,則表示用戶永久可用
- 保留字段:目前為空,以備將來Linux系統(tǒng)發(fā)展使用
增加用戶的命令useradd
/etc/login.defs文件
/etc/login.defs 是設(shè)置用戶帳號限制的文件。該文件里的配置對root用戶無效。/etc/login.defs 文件用于在Linux創(chuàng)建用戶時,對用戶的一些基本屬性做默認設(shè)置,例如指定用戶 UID 和 GID 的范圍,用戶的過期時間,密碼的最大長度,等等
useradd命令通過讀取/etc/login.def和/etc/default/useradd文件來確定新賬戶的默認值,我們可以通過使用標(biāo)準(zhǔn)的文本編輯器來編寫這些文件來達到修改默認值
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
#當(dāng)創(chuàng)建用戶時,同時在目錄 /var/spool/mail中創(chuàng)建一個用戶mail文件
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# PASS_MAX_DAYS:兩次修改密碼的最大時間間隔:主要作用是管理用戶密碼的有效期
PASS_MAX_DAYS 99999
# PASS_MIN_DAYS:兩次修改密碼的最小時間間隔
PASS_MIN_DAYS 0
# PASS_MIN_LEN:密碼最小長度
PASS_MIN_LEN 5
# PASS_MIN_LEN:提前多少天警告用戶密碼過期,在快到有效期時,當(dāng)用戶登錄系統(tǒng)后,系統(tǒng)程序會提醒用戶密碼將要作廢,以便及時更改
PASS_WARN_AGE 7
# ID_MIN:普通用戶最小UID
UID_MIN 1000
# UID_MAX:普通用戶最大UID
UID_MAX 60000
# SYS_UID_MIN:系統(tǒng)用戶最小UID
SYS_UID_MIN 201
# SYS_UID_MAX:普通用戶最大UID
SYS_UID_MAX 999
# GID_MIN:普通組最小GID
GID_MIN 1000
# GID_MAX:普通組最大GID
GID_MAX 60000
# SYS_GID_MIN:系統(tǒng)組最大GID
SYS_GID_MIN 201
# SYS_GID_MAX:系統(tǒng)組最大GID
SYS_GID_MAX 999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#此項指定是否創(chuàng)建用戶主目錄,yes表示創(chuàng)建,no表示不創(chuàng)建
CREATE_HOME yes
# 權(quán)限掩碼被初始化為此值。 如果未指定則初始化為022
UMASK 077
# 如果沒有成員,這使userdel可以刪除用戶組
USERGROUPS_ENAB yes
# 使用SHA512加密密碼
ENCRYPT_METHOD SHA512
/etc/default/useradd文件
useradd命令通過讀取/etc/login.def和/etc/default/useradd文件來確定新賬戶的默認值,我們可以通過使用標(biāo)準(zhǔn)的文本編輯器來編寫這些文件來達到修改默認值
/etc/default/useradd內(nèi)容
# useradd defaults file
# GROUP=100:默認用戶
GROUP=100
# HOME=/home:將新建用戶的主目錄放在/home目錄下
HOME=/home
# INACTIVE=-1:是否啟用賬號過期功能,-1:不啟用
INACTIVE=-1
# EXPIRE=:代表賬號過期日期,不設(shè)置i表示不啟用
EXPIRE=
# SHELL=/bin/bash:代表新建用戶的默認shell類型
SHELL=/bin/bash
# SKEL=/etc/skel:新用戶主目錄中默認文件來源,也就是說,新建用戶主目錄主目錄下的文件是從/etc/skel目錄復(fù)制而來
SKEL=/etc/skel
#CREATE_MAIL_SPOOL=yes:
CREATE_MAIL_SPOOL=yes
更改/etc/default/useradd文件的方式
- 通過標(biāo)準(zhǔn)文本編輯器修改
- 通過useradd命令修改:在useradd命令后面加-D選項后,就可以修改
/etc/default/useradd文件中的內(nèi)容了
useradd語法
useradd可以用來建立用戶賬號,賬號建立好后,因沒有設(shè)置密碼,所以不允許登錄,需要使用passwd設(shè)定賬號的密碼后才可以登錄使用
功能說明:建立用戶賬號
語法
useradd [選項][參數(shù)]
選項與參數(shù):
-c<參數(shù)>:加上備注文字。備注文件會保存在passwd的備注欄目中
-d<登入目錄>:指定用戶登入時的起始目錄
-D:變更預(yù)設(shè)值
-e<有效期限>:指定賬號的有效期限
-f<緩沖天數(shù)>:指定在密碼過期后的多少天即關(guān)閉該賬號
-g<群組>:指定用戶所屬的群組
-G<群組>:指定用戶所屬的附加群組
-m:自動建立用戶的登入目錄
-M:不要自動建立用戶的登入目錄
-n:取消建立以用戶名為名的群組
-r:建立系統(tǒng)賬號
-s<shell>:指定用戶登入后所使用的shell
-u<uid>:指定用戶ID
useradd實例
useradd創(chuàng)建普通用戶賬號
[root@localhost ~]# useradd newuser
useradd創(chuàng)建系統(tǒng)用戶賬號
[root@localhost ~]# useradd -r sysuser
useradd創(chuàng)建用戶賬號,并設(shè)置UID
創(chuàng)建newuser用戶并設(shè)置UID為1666
[root@localhost ~]# useradd -u 1666 newuser
useradd創(chuàng)建用戶賬號,并設(shè)置用戶組群
創(chuàng)建newuser用戶并設(shè)置用戶組群為root
[root@localhost ~]# useradd -g root newuser
useradd創(chuàng)建用戶賬號,并設(shè)置用戶主目錄
創(chuàng)建newuser用戶并設(shè)置用戶主目錄為/home/newuser2
[root@localhost ~]# useradd -d /home/newuser2 newuser
useradd創(chuàng)建用戶賬號,并設(shè)置用戶Shell類型
創(chuàng)建newuser用戶并設(shè)置shell類型為/bin/csh
[root@localhost ~]# useradd -s /bin/csh newuser
useradd顯示/etc/default/useradd文件的默認配置
查看顯示/etc/default/useradd文件的默認配置
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
useradd創(chuàng)建不能登錄的用戶賬號
要拒絕系統(tǒng)用戶登錄,可以將其 shell 設(shè)置為 /usr/sbin/nologin 或者 /bin/false。
-
/bin/false什么也不做只是返回一個錯誤狀態(tài),然后立即退出。將用戶的 shell 設(shè)置為/bin/false,用戶會無法登錄,并且不會有任何提示。 -
/usr/sbin/nologin會禮貌的向用戶顯示一條信息,并拒絕用戶登錄 - 有一些軟件,比如一些 ftp 服務(wù)器軟件,對于本地非虛擬賬戶,只有用戶有有效的 shell 才能使用 ftp 服務(wù)。這時候就可以使用 nologin 使用戶即不能登錄系統(tǒng),還能使用一些系統(tǒng)服務(wù),比如 ftp 服務(wù)。
/bin/false則不行,這是二者的重要區(qū)別之一。
[root@localhost ~]# useradd -s /usr/sbin/nologin newuser
如果存在 /etc/nologin 文件,則系統(tǒng)只允許 root 用戶登錄,其他用戶全部被拒絕登錄,并向他們顯示 /etc/nologin 文件的內(nèi)容。
修改用戶的命令usermod
usermod可用來修改用戶賬號的各項設(shè)定
功能說明:修改用戶賬號
語法
userdel [選項][參數(shù)]
選項與參數(shù):
-c<參數(shù)>:修改用戶賬號的備注文字
-d<登入目錄>:修改用戶登入時的起始目錄
-e<有效期限>:修改賬號的有效期限
-f<緩沖天數(shù)>:修改在密碼過期后的多少天即關(guān)閉該賬號
-g<群組>:修改用戶所屬的群組
-G<群組>:修改用戶所屬的附加群組
-l<賬號名稱>:修改用戶賬號名稱
-L:鎖定用戶密碼,使密碼無效
-s<shell>:修改用戶登入后所使用的shell
-u<uid>:修改用戶ID
-U:解除密碼鎖定
-m, --move-home 將家目錄內(nèi)容移至新位置 (僅于 -d 一起使用)
usermod實例
usermod修改用戶用戶名
將username用戶登錄名修改為newusername
[root@localhost ~]# usermod -l newusername username
usermod修改用戶備注
修改username用戶的備注為remark
[root@localhost ~]# usermod -c remark username
usermod修改用戶群組
修改username用戶群組為root,該群組在修改時必須存在
[root@localhost ~]# usermod -g root username
usermod鎖定用戶密碼
鎖定username用戶密碼,使密碼無效
鎖定的用戶無法直接登錄,但是可以從其它用戶切換到該賬戶
[root@localhost ~]# usermod -L username
usermod解鎖用戶密碼
解鎖username用戶密碼
[root@localhost ~]# usermod -U username
usermod修改用戶主目錄
修改username用戶的主目錄,該操作并不會自動創(chuàng)建文件夾,也不會自動將舊主目錄中的文件和目錄自動移動到新主目錄中
[root@localhost ~]# usermod -d /home/username2 username
usermod修改用戶主目錄,并自動創(chuàng)建目錄
修改username用戶的主目錄,該操作會自動創(chuàng)建文件夾,并自動將舊主目錄中的文件和目錄自動移動到新主目錄中
[root@localhost ~]# usermod -d /home/username2 -m username
usermod修改用戶賬號被取消激活前的天數(shù)
密碼過期后,系統(tǒng)會在11天后禁用此用戶
[root@localhost ~]# usermod -f 11 username
usermod修改用戶過期日期
修改username的過期日期是2111年11月11日
[root@localhost ~]# usermod -e 11/11/2111 username
usermod修改用戶默認Shell類型
將username的默認shell類型更改為/bin/ksh
[root@localhost ~]# usermod -s /bin/ksh username
刪除用戶的命令userdel
userdel可刪除用戶賬號與相關(guān)的文件。若不加參數(shù),則僅刪除用戶賬號,而不刪除相關(guān)文件
功能說明:刪除用戶賬號
語法
userdel [選項][參數(shù)]
選項與參數(shù):
-r:刪除用戶登入目錄以及目錄中所有文件
-f:強制刪除用戶
userdel實例
userdel刪除用戶
[root@localhost ~]# userdel newuser
userdel刪除用戶,并刪除用戶主目錄
[root@localhost ~]# userdel -r newuser
userdel強制刪除用戶
[root@localhost ~]# userdel -f newuser
userdel強制刪除用戶,并刪除用戶主目錄
[root@localhost ~]# userdel -rf newuser