Linux系統的用戶和用戶組管理


 

 

一、用戶賬戶管理  

Linux/Unix是一個用戶、多任務的操作系統;在講Linux賬號及賬戶組管理之前,先簡單了解一下多用戶、多任務操作系統的基本概念。

 

Linux的單用戶多任務

  Linux下,當你登錄后,你也可以同時開啟很多的服務任務和進程,而各自服務都會跑的很好卻對其他任務沒有任何影響,這種登錄一個用戶登錄系統執行多個服務任務和進程的情況,就稱為單用戶多任務。

 

Linux的多用戶多任務


  有時可能是很多用戶同時用同一個系統,如公司幾十個運維人員,每台機器都可以和被若干個運維人員登錄部署或解決相關故障問題,但並不是所有的運維人員都要做同一件事,所以就有了多任務、多用戶的情況。

值得注意的是:多用戶、多任務並不是大家同時擠到一起,在一台機器的鍵盤和顯示器前來操作機器,多用戶可能是通過SSH客戶端工具等遠程工具等遠程登錄服務器來進行,比如對服務器的運程控制,只要具有相關用戶的權限,任何人都是可以上去操作訪問服務器。

 

 

linux系統用戶角色划分


  用戶在系統中是分角色的,在Linux系統中,由於角色的不同,權限和所完成的任務也不同;值得注意的是用戶的角色是通過UID和GID識別的;特別是UID,在運維工作中,一個UID是唯一標識一個系統用戶的賬號。


用戶賬戶:

 

    超級用戶root(0)
    程序用戶(1~499)
    普通用戶(500~65535

 

 

 

超級用戶:

  默認是root用戶,其UID和GID均為0。在每台unix/linux操作系統中都是唯一且真實存在的,通過它可以登錄系統,可以操作系統中任何文件和命令,
擁有最高的管理權限。在生產環境,一般禁止root賬號遠程登錄SSH連接服務器,以加強系統安全。

 


普通用戶:

 

  這類用戶一般是由具備系統管理員root的權限的運維人員添加的。

 


程序用戶:

與真實用戶區分開來,這類用戶的最大特點是安裝系統后默認就會存在的,且默認情況不能登錄系統,它們是系統正常運行必不可少的,
他們的存在主要是方便系統管理,滿足相應的系統進程都文件屬主的要求。例如系統默認的bin、adm、nodoby、mail用戶等。由於服務器角色的不同,
有部分用不到的系統服務被禁止開機執行,因此,在做系統安全優化時,被禁止開機啟動了的服務對應的虛擬用戶也是可以處理掉的(刪除或注釋)。

 

多用戶操作系統的安全


 多用戶系統從實際來說使得系統管理更為方便了。從安全角度來說,多用戶也更為安全,比如普通用戶zgy下的某個文件不想讓其他用戶看到,只是設置一下該文件的權限為普通用戶zgy一個用戶可讀可寫可執行的權限就行了,這樣以來只有普通用戶zgy一個用戶可以對其私有文件進行操作,從而達到了保護每個用戶的私有數據安全。

 

二、賬戶(user)和賬戶組(group)

 

用戶(user)介紹


 如果要使用系統資源,就必須向系統管理員申請一個賬號,然后通過這個賬號進入系統。這個賬號和用戶是同一個賬號,通過建立不同屬性的用戶,一方面,可以合理的利用和控制系統資源,另一方面也可以幫助用戶組織文件,提供對用戶文件的安全性保護。

每一個用戶都有一個唯一的用戶名和用戶口令,在登錄系統后,只有正確輸入了用戶名和密碼,才能登錄系統和相應的目錄。
  在生產環境中,一般會為每一個有權限管理服務器的運維人員分配一個獨立的普通用戶賬號及8位以上(包含數字、字母)以上的密碼。

如zgy普通用戶,該人員只能通過建立的這個賬號登錄到系統中進行維護,當需要超級用戶權限時,可以通過"sudo 命令名"方式來執行僅有root權限才允許執行的權限。當然,sudo權限要盡量的小。還有,當運維人數不多時(如2-3個),也可以直接su - 切換到超級用戶root下,再執行相應的維護工作。特別提醒,維護時,如果不需要root權限,就不要進入root用戶下操作,以減少誤操作對系統帶來的損失。

 

用戶組(group)介紹

簡單的說,linux系統中的用戶組(group)就是具有相同特性的用戶(user)集合;
  有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件或目錄,如果不用用戶組,這種需求在授權時就很難實現。如果使用用戶組就方便多了,只需要把授權的用戶都加入到同一個用戶組里,然后通過修改該文件或目錄的對應的用戶組的權限,讓用戶組具有符合需求的操作權限,這樣用戶組下的所有用戶對該文件或目錄就會具有相同的權限,這就是用戶組的用途。
  將用戶分組是linux系統中對用戶進行管理及控制訪問權限的一種手段,通過定義用戶組,在很大程度上簡化了運維管理工作。
  實際上,在日常生活中,對人類的分組也是無處不在的,達到國家,小到公司,家庭,學校,班級等等都類似linux中用戶組的概念,而其中的成員就類似linux用戶組中用戶的概念。

 

 

用戶和用戶組的對應關系

 

用戶和用戶組的對應關系有:一對一、一對多、多對一和多對多.

 

一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。比如,root。
一對多:即一個用戶可以存在多個組中,這個用戶就具有這些組。
多對一:即多個用戶可以存在一個組中,這些用戶這些組的共同權限。

多對多:即多用戶可以存在於多個組中。並且幾個用戶可以歸屬相同的組;其實多對多的關系是前面三條的擴展。

 


  組賬戶:


基本組(私有組) 附加組(公共組)

 

用戶及用戶組配置文件介紹

 

 Linux系統中下的賬戶文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四個文件。


   

與用戶相關的配置文件

 

/etc/passwd:  #用戶的配置文件, 保存用戶賬戶的基本信息
/etc/shadow  #用戶影子口令文件

 

用戶的配置文件/etc/passwd

 /etc/passwd文件中每行定義一個用戶賬號,有多少行就表示多少個賬號,在一行中可以清晰的看出,各內容之間又通過”:”號划分了7個字段,這7個字段分別定義了賬號的不同屬性,passwd文件實際內容如下:

 

 

[root@Web ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 

 

 

在passwd文件中,第一行內容就是超級用戶root行,可以看到它的uid和gid都為0.為了方便理解,下面是各字段的描述:

  字段1:帳號名,這是用戶登陸時使用的賬戶名稱,在系統中是唯一的,不能重名
    字段2:密碼占位符x;早期的unix系統中,該字段是存放賬戶和密碼的,由於安全原因,后來把這個密碼字段內容移到/etc/shadow中了。
      這里可以看到一個字母x,表示該用戶的密碼是/etc/shadow文件中保護的。 字段3:UID;范圍是0-65535 字段4:GID;范圍是0-65535;當添加用戶時,默認情況下會同時建立一個與用戶同名且UID和GID相同的組。 字段5:用戶說明;這個字段是對這個賬戶的說明 字段6:宿主目錄;用戶登陸后首先進入的目錄,一般與"/home/用戶名"這樣的目錄 字段7:登錄Shell 當前用戶登陸后所使用的shell,在centos/rhel系統中,默認的shell是bash;如果不希望用戶登陸系統,可以通過usermod
      或者手動修改passwd設置,將該字段設置為
/sbin/nologin 即可。大多數內置系統賬戶都是/sbin/nologin,這表示禁止登陸系統。
      這是出於安全考慮的。

 

passwd中有關UID的限制說明

 

0:當用戶的UID為0時,表示這個賬戶為超級用戶;如果要增加一個系統管理員賬戶的話,只需將該賬戶的UID改為0即可。不建議
1~499:這個范圍是保留給系統用戶使用的UID
500~65535:普通賬戶UID

 最后,來看一下/etc/passwd的權限:

 

[root@Web ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1665 4月  11 14:13 /etc/passwd

 

因為每個用戶登錄時都需要取得UIDGID來判斷權限問題,所以/etc/passwd的權限為644,這樣一來就會帶來安全問題,即所有的用戶都可以都/etc/passwd文件,即使文件內的密碼是加密的,但還是存在一定的被攻擊破解的安全隱患。因此,就有了/etc/shadow文件。

 

 

用戶的影子口令文件/etc/shadow

 

 

 

由於passwd文件必須要被所有的用戶讀,所以會帶來安全隱患。而shadow文件就是為了解決這個安全隱患而增加的。

來看一下/etc/shadow的權限:

 

[root@Web ~]# ls -l /etc/shadow
----------. 1 root root 1059 4月  11 14:13 /etc/shadow

 

其文件內容為:

 

[root@Web ~]# head -5 /etc/shadow
root:$6$jmM2rFzPCFbmqBkf$oz3AUooR3qaV5uXU67HcXlYiE3hNf0sSsunk1eBTDPrGUOM1xYCyesGoj.ZLTIzdiXEdrnnqNyC5g8SsRnxQm.:16338:0:99999:7:::
bin:*:15615:0:99999:7:::
daemon:*:15615:0:99999:7:::
adm:*:15615:0:99999:7:::
lp:*:15615:0:99999:7:::

/etc/passwd一樣,shadow文件的每一行內容,也是以冒號(:)作為分隔符,共9個字段,其各個字段的意義如下表:

 

   字段1:帳號名稱
    字段2:加密的密碼
    字段3:最近更改密碼的時間;從1970/1/1到上次修改密碼的天數
    字段4:禁止修改密碼的天數;從1970/1/1開始,多少天之內不能修改密碼,默認值為0
    字段5:用戶必須更改口令的天數;密碼的最長有效天數,默認值為99999
    字段6:警告更改密碼的期限;密碼過期之前警告天數,默認值為7;在用戶密碼過期前多少天提醒用戶更改密碼
    字段7:不活動時間;密碼過期之后賬戶寬限時間 3+5;在用戶密碼過期之后到禁用賬戶的天數
    字段8:帳號失效時間,默認值為空;從1970/1/1日起,到用戶被禁用的天數
    字段9:保留字段(未使用),標志

 

密碼過期:一旦超過密碼過期日期,用戶成功登陸,Linux會強迫用戶設置一個新密碼,設置完成后才開啟Shell程序
賬戶過期:若超過賬戶過期日期,Linux會禁止用戶登陸系統,即使輸入正確密碼,也無法登陸

 

 

與用戶組相關的配置文件

 

/etc/group  #用戶組配置文件
/etc/gshadow  #用戶組的影子文件

 

 用戶組配置文件/etc/group

 /etc/group 文件是用戶組的配置文件,內容包括用戶與用戶組,並且能顯示用戶歸屬哪個用戶組,因為一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特性。如果某個用戶下有對系統管理有最重要的內容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置為完全私有;另外root用戶組一般不要輕易把普通用戶加入進入。

 

 /etc/group文件就是記錄GID與用戶組的文件。/etc/group文件同/etc/passwd類似,其文件權限也是644

 

 

[root@Web ~]# ls -l /etc/group
-rw-r--r--. 1 root root 832 4月  11 14:13 /etc/group

 

 

 

 

 

/etc/group的文件內容為:

 

[root@Web ~]# head -5 /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon

 

group文件各個字段的詳細說明:

  字段1:組賬戶名稱
    字段2:密碼占位符x;通常不需要設置該密碼,由於安全原因,該密碼被記錄在/etc/gshadow中,因此顯示為'x'。這類似/etc/shadow
    字段3:組賬戶GID號,用戶組ID
    字段4:本組的成員用戶列表;加入這個組的所有用戶賬號

 

用戶組的影子文件/etc/gshadow

/etc/gshaow是/etc/group的加密文件,比如用戶組的管理密碼就是存放在這個文件。/etc/group和/etc/gshadow是互補的兩個文件;比如大型服務器,針對很多用戶和用戶組,定制一些關系結構比較復雜的額權限模型,設置用戶組密碼是極有必要的。比如不想讓一些非用戶組成員永久擁有用戶組的權限和特性,這時就可以通過密碼驗證的方式來讓某些用戶臨時擁有一些用戶組特性,這時就要用到用戶組密碼;/etc/gshadow格式如下,每個用戶組獨占一行;

[root@Web ~]# ls -l /etc/gshadow
----------. 1 root root 682 4月  11 14:13 /etc/gshadow
[root@Web ~]# head -5 /etc/gshadow
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon

 

gshadow文件中各個字段詳細說明:

 

字段1:組賬號的名稱
字段2:加密后的密碼字符串,這個字段可以空的或者!;如果是空的或有!,表示沒有密碼
字段3:本組的管理員列表;這個字段也可為空;如果有多個用戶組管理員,用,號分隔
字段4:本組的成員列表;加入這個組的所有用戶賬戶;列表中多個用戶通過","分隔

 

 

賬號管理


 與賬戶相關的文件和目錄

 

  /etc/default/useradd    
    /etc/login.defs
    /etc/skel/

 

 /etc/skel目錄

 

 /etc/skel目錄是用來存放新用戶配置文件的目錄,當我們添加新用戶時,這個目錄下的所有文件都會自動被復制到新添加的用戶的家目錄下;默認情況下,/etc/skel目錄下的所有文件都是隱藏文件(.點開頭);通過修改、添加、刪除/etc/skel目錄下的文件,我們可為新創建的用戶提供統一、標准的、初始化用戶環境。

 

 

 

下面我們就看下/etc/skel目錄的內容:

 

[root@localhost ~]# ls -al /etc/skel/
total 64
drwxr-xr-x  3 root root  4096 Apr 30 17:20 .
drwxr-xr-x 91 root root 12288 May  2 10:01 ..
-rw-r--r--  1 root root    33 May 13  2011 .bash_logout
-rw-r--r--  1 root root   176 May 13  2011 .bash_profile
-rw-r--r--  1 root root   124 May 13  2011 .bashrc
-rw-r--r--  1 root root   515 Apr  7  2011 .emacs
drwxr-xr-x  4 root root  4096 Apr 30 17:20 .mozilla

 

 

 

 

當我們用useradd adduser命令添加新用戶時,linux系統會自動復制/etc/skel下的所有文件(包括隱藏文件)到新添加用戶的家目錄

 

 

 /etc/login.defs配置文件

 

 

/etc/login.defs文件是用來定義創建用戶時需要的一些用戶的配置文件。如創建用戶時,是否需要家目錄,UIDGID的范圍,用戶及密碼的有效期限等等。

 

 

下面是RHEL 5/etc/login.defs文件內容

 

 

[root@localhost ~]# cat /etc/login.defs 
# *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
MAIL_DIR        /var/spool/mail  #創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件;
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999   #一個密碼最長可以使用的天數
PASS_MIN_DAYS   0    #更改密碼的最小天數
PASS_MIN_LEN    5    #密碼的最小長度;
PASS_WARN_AGE   7    #密碼失效提前多少天開始警告

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500   #最小UID為500,也就是說添加用戶時,UID是從500開始的;
UID_MAX                 60000   #最大UID為60000;

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500   #GID依然是從500開始;同上面用戶的情況;
GID_MAX                 60000

#
# 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

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   #是否創建用戶家目錄,默認要求創建;可用-m參數來控制;

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes     #刪除用戶同時刪除用戶組

# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.
MD5_CRYPT_ENAB yes     #MD5密碼加密

 

 

 

 

/etc/default/useradd文件


 

 /etc/default/useradd文件是在使用useradd添加用戶時需要調用的一個默認的配置文件,可以使用useradd -D參數,這樣的命令格式來修改文件里面的內容,當然也可以直接編輯修改。我們先來看看它的內容

 

[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home   #把用戶的家目錄建在/home中
INACTIVE=-1  #是否啟動賬號過期停權,-1表示不啟用
EXPIRE=   #賬號終止日期,不設置表示不啟用
SHELL=/bin/bash   #新用戶默認所用的shell類型
SKEL=/etc/skel  #配置新用戶家目錄的默認文件存放路徑。前文提到的/etc/skell,就是配在這里生效的,即當我們用useradd添加時,用戶家目錄的文件,都是從這里配置的目錄中復制過去的。
CREATE_MAIL_SPOOL=yes  #創建mail文件

 

實例2

 

[root@localhost ~]# mkdir /ett
[root@localhost ~]# cp -a /etc/skel/* /ett/   #把skel目錄下的文件復制到/ett下
[root@localhost ~]# ls -al /ett/
total 24
drwxr-xr-x  2 root root 4096 May  2 22:52 .
drwxr-xr-x 26 root root 4096 May  2 22:52 ..
-rw-r--r--  1 root root    7 May  2 22:24 oldboy
[root@localhost ~]# mkdir /ett/test   #創建一個測試目錄test
[root@localhost ~]# ls -al /ett/
total 32
drwxr-xr-x  3 root root 4096 May  2 22:52 .
drwxr-xr-x 26 root root 4096 May  2 22:52 ..
-rw-r--r--  1 root root    7 May  2 22:24 oldboy
drwxr-xr-x  2 root root 4096 May  2 22:52 test
[root@localhost ~]#sed -i 's#SKEL=/etc/skel#SKEL=/ett#g' /etc/default/useradd    #修改SKEL的默認路徑
[root@localhost ~]# grep ett /etc/default/useradd 
SKEL=/ett
[root@localhost ~]# useradd old  #添加用戶old測試
[root@localhost ~]# ll /home/old -al
total 32
drwx------ 3 old  old  4096 May  2 22:56 .
drwxr-xr-x 6 root root 4096 May  2 22:56 ..
-rw-r--r-- 1 old  old     7 May  2 22:56 oldboy   #發現/ett下的目錄和文件都拷貝過來了
drwxr-xr-x 2 old  old  4096 May  2 22:56 test
[root@localhost ~]# sed -i 's#SKEL=/ett#SKEL=/etc/skel#g' /etc/default/useradd   #測試完后還原配置
[root@localhost ~]# grep etc /etc/default/useradd 
SKEL=/etc/skel
特別提醒:上面的例子是更改/etc/default/useradd中SKEL路徑后測試的例子。其他參數的修改方法

 

 

Linux用戶管理命令

Linux是一個多用戶多任務的操作系統,有着很豐富的用戶管理工具,這些工具包括用戶的查詢。添加、修改、以及不同用戶之間相互切換等;通過這些工具,我們可以簡單、方便、安全的進行用戶管理工作。

 

 

 

添加用戶的命令useraddadduser,這兩個命令所能達到的效果是一樣的。當然除了useraddadduser命令意外,我們還能通過修改用戶配置文件/etc/passwd/etc/group及手動創建的辦法來直接添加用戶,不過不推薦這個方法。這里推薦大家統一使用useradd命令。

 

useradd  添加賬戶

  當使用useradd命令不加參數選項,后面直接跟所添加的用戶名時,系統首先會讀取配置文件/etc/login.defs/etc/default/useradd文件中所配置的信息建立用戶的家目錄,並復制/etc/skel中的所有文件(包括隱藏的環境配置文件)到新用戶的家目錄中。

 

 

useradd語法:

 

[root@localhost ~]# man useradd
NAME
       useradd - create a new user or update default new user information
SYNOPSIS
       useradd [options] LOGIN
       useradd -D
       useradd -D [options]

 

 

 

 

描述:

 

 新賬號建立

 

    當不加-D參數時,useradd指令使用命令列來指定新賬號的設定值和使用系統上的預設值(指前文提到的/etc/login.defs/etc/default/useradd等配置文件)。新用戶賬號將產生一些系統檔案,如用戶目錄的建立,拷貝起始檔案等,這些均可以利用命令列選項指定。

 

下面是具體的選項:

 

 

  -c comment :新賬戶的password的說明欄   
   -u:  指定 UID 標記號。這個值是唯一的,除非用-o選項。數字不可為負值 -d:  指定宿主目錄,缺省為 /home/用戶名 -e:  指定帳號失效時間
  -f:   賬戶過期幾天后永久停權。 -g:  指定所屬的基本組(組名或GID) -G:  指定所屬的附加組(組名或GID)
  -m:   用戶目錄如不存在則自動建立。 -M:  不為用戶建立並初始化宿主目錄。優先於/etc/login.defs文件的設定。
  -n:   默認情況下,用戶的用戶組和用戶的名稱會相同,如果命令加了-n參數,就不會生成和用戶同名的用戶組
  -r:   用來建立系統賬戶。系統賬戶的UID會比定義在/etc/login.defs的UID_MIN來的小。 -s:  指定用戶的登錄Shell
  

 

當使用useradd命令不加參數選項,后面直接跟所添加的用戶名時,系統首先會讀取配置文件/etc/login.defs和/etc/default/useradd中所定義的參數或規則,根據設置的規則添加用戶,同時會向/etc/passwd和/etc/group文件內添加新建用戶和用戶組記錄。

 

當然/etc/passwd和/etc/group的加密資訊文件/etc/shadows和/etc/gshadow也會同步生成記錄,同時系統還會根據/etc/default/useradd文件中所配置的信息建立用戶的家目錄,並復制/etc/skel中的所有文件(包括隱藏的環境配置文件)到新用戶的家目錄中。

 

 

改變新建用戶的預設值 :

當執行useradd命令或加-D選項時,可以更改新建用戶的默認配置值,或是由命令列編輯的方式更新預設值

為了方便讀者閱讀查看,依然用表格的方式把useradd-D選項后,命令后面依然可使用的參數選項展現給大家如下所示

 

 

檔案

/etc/passwd -使用者賬號資訊
/etc/shadow -使用者賬號資訊加密
/etc/group -群組資訊
/etc/default/useradd -定義資訊
/etc/login.defs -系統廣義設定
/etc/skel -內含定義檔的目錄
SEE ALSO
       chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8),
       groupmod(8), login.defs(5), userdel(8), usermod(8).

 

useradd實例:

 

實例3:不加任何參數,直接執行useradd usesname添加用戶

 

[root@localhost ~]# useradd zhonggy
[root@localhost ~]# ls -ld /home/zhonggy/
drwx------ 3 zhonggy zhonggy 4096 May  7 09:17 /home/zhonggy/

 

 

 

 

在這個例子中,我們添加了一個名為zhonggy系統用戶,當查看/home/目錄時,會發現系統自動建立了一個zhonggy的目錄。

我們再來看/etc/passwd文件中有關新用戶zhonggy的記錄:

 

在這個例子中,我們添加了一個名為zhonggy系統用戶,當查看/home/目錄時,會發現系統自動建立了一個zhonggy的目錄。
我們再來看/etc/passwd文件中有關新用戶zhonggy的記錄:

 

#行中的505:505就是/etc/login.defs文件內容預設的。

提示:有很多的朋友習慣先通過cat來讀取/etc/passwd文件,然后再通過grep來抽取zhonggy字段,也可以達到同樣的目的,但在寫法上就遜色很多了。如下:

 

[root@localhost ~]# cat /etc/passwd | grep zhonggy
zhonggy:x:505:505::/home/zhonggy:/bin/bash
[root@localhost
~]# finger zhonggy #使用finger命令來查看用戶信息 Login: zhonggy Name: (null) Directory: /home/zhonggy Shell: /bin/bash Never logged in. No mail. No Plan.

 

 從上文過濾出的zhonggy用戶記錄來看,用戶的UIDGID分別為505,並且zhonggy的家目錄為/home/zhonggy,所對應的shellbash

 

 

接下來,我們再看看/etc/shadow/etc/group/etc/gshadow文件,是不是也有與zhonggy用戶有關的記錄:

 

[root@localhost ~]# grep zhonggy /etc/shadow
zhonggy:!!:16562:0:99999:7:::
You have new mail in /var/spool/mail/root
[root@localhost ~]# grep zhonggy /etc/group
zhonggy:x:505:
[root@localhost ~]# grep zhonggy /etc/gshadow
zhonggy:!::

 

 

 

提示:根據上文結果,我們發現/etc/shadow/etc/group/etc/gshadow幾個文件都存在和zhonggy用戶相關的記錄。

    我們還可以查看/etc/default/useradd /etc/login.defs兩個文件的規則,看一下zhonggy用戶的增加是不是符合這兩個配置文件預設的值。最后可以查看/home/zhonggy目錄下的文件,是不是和/etc/skel目錄下的一樣。

 

 

 

實例 4useradd-g-u參數,執行useradd [參數] username 添加用戶

 

[root@localhost ~]# groupadd -g 801 sa
#創建用戶組sa制動gid 801,這個是groupadd命令的用法
[root@localhost ~]# useradd -g sa -u 901 oldboy1
#創建用戶oldboy1屬於指定組sa,指定uid901,用戶名oldboy1
[root@localhost ~]# id oldboy1    #通過id命令查看結果
uid=901(oldboy1) gid=801(sa) groups=801(sa) context=root:system_r:unconfined_t:SystemLow-SystemHigh
生產場景中的創建賬戶的完整命令例子:
groupadd -g 801 sa
seradd -g sa -u 901 ett
echo  “6fuwrfwq3e” |passwd ett --stdin
echo “ett ALL=(ALL)    NOPASSWD:ALL” >>/etc/sudoers
visudo -v
history -c

 

 

實例5:useradd的——M-s參數的例子

 

[root@localhost ~]# useradd oldboy2 -M -s /sbin/nologin  
#-M表示不創建家目錄,-s指定用戶登錄后的shell,這里是/sbin/nologin表示禁止登陸。此例在生產環境中部署apache,mysql,nagios服務時經常用到。
[root@localhost ~]# ls -ld /home/ | grep oldboy2
[root@localhost ~]# grep oldboy2 /etc/passwd
oldboy2:x:902:902::/home/oldboy2:/sbin/nologin

 

 

實例6useradd -e參數的例子

在本例中,我們主要來看看-e參數,這個參數還是比較重要的,是設定用戶的賬號什么時候過期,在生產場景中,員工離職或者一些臨時有需求的用戶或者需要有時間限制的一些用戶,可能需要這個選項。

 

groupadd    添加組賬戶

 

 

 

 

 

 

-g    指定gid。除非指定-o選項,否則ID值必須是唯一的數字,不能為負值。如果布指定-g參數,則預設值會從500開始。
-r  建立系統用戶組。GID值會比/etc/login.defs中定義的UID_MIN小。
-f  新增一個賬戶,強制覆蓋已經存在的用戶組賬戶。

 

 


  passwd      設置密碼

 普通用戶和超級用戶都可以運行passwd命令,但普通用戶只能更改自身的用戶密碼。超級用戶則可以設置或修改所有用戶的密碼

當直接passwd命令后面不接任何參數或用戶名時,則表示修改當前登陸用戶的密碼。

 

   -d    清空密碼,僅root能操作
  -f  強制操作,僅root能操作
  -k  保留即將過期的用戶在期滿后仍能使用
-l 鎖定用戶賬戶;鎖定用戶無權更改其密碼,僅root能操作 -S 查看用戶賬戶的狀態 -u 解鎖用戶賬戶;僅root能操作 --stdin 從標准輸入取密碼

 

 

修改用戶密碼有效期:chage

語法:

格式:chage [選項] 用戶名

常用命令選項:

 -d:將最近一次密碼設置時間設置為"最近時間"
-E:指定賬號過期時間,YYYY-MM-DD -I:指定當密碼失效后多少天鎖定賬號; -l:列出密碼有效期信息 -m:指定密碼的最小天數 -M:指定密碼的最大天數
-W:將過期警告天數設置為"警告天數"

 

id:查看用戶的帳號屬性信息

 

    -u:只看UID
    -g:只看gid
    -G:只看GID
    -n:看名字,與其他選項連用

 

userdel     刪除賬戶

 

 -r    連同主目錄一起刪除

 

添加組賬號groupadd命令

 

格式:groupadd [-g GID] 組名

 

選項:

 

-g gid:指定組ID號。
-o:允許組ID號,不必惟一。
-r:添加系統組,低於499系統賬號。

 

刪除用戶組groupdel命令

 

 

格式:groupdel 組名
刪除的目標組不能是用戶的基本組

 

gpasswd命令    管理組

 

語法:

格式:gpasswd [選項] 組名

 

選項:

    -A    定義組管理員列表
    -a    添加組成員,每次只能加一個
    -d    刪除組成員,每次只能刪一個
    -M    定義組成員列表,可設置多個,用“,”分開——定義的組成員必須是已存在用戶的
    -r    移除密碼

 

 

切換所屬基本組newgrp命令

 

newgrp GRPNAME <--> exit  //臨時切換屬組

 

查看用戶的組信息


groups 命令

 

格式:groups [用戶名]

 



groupmod:更改群組和名稱

   

  -g GID
    -n GRPNAME

 


修改用戶賬號的屬性

 

語法:

格式:usermod [選項] 用戶名

 

常用命令選項:

 

-c:指定注釋信息
-d -m:-d一般跟-m使用,既指定新的家目錄位置,又移動其此前的文件至新的家目錄當中
 -e:指定賬號失效時間
-g:指定所屬的基本組(組名或GID)
-a -G GID:不使用-a選項,會覆蓋此前的附加組;
-l:更改用戶賬號的登陸名稱
 -L:鎖定用戶賬號
-s:指定用戶登錄Shell
-u:指定UID標志號
-U:解鎖用戶賬號

 

chsh: 修改用戶的默認shell
chfn:修改注釋信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM