1. 程式人生 > >用戶和組 之 增刪改

用戶和組 之 增刪改

用戶 組 增刪改

要對計算機系統進行相關的操作,就需要有賬號,如果很多賬號需要對同一文件具有相同的操作權限,那麽這個時候就涉及到組的概念了,我們可以將不同的賬號加入同一組中,使得該組的所有賬號擁有相同的操作權限。日常的linux運維中,就需要對賬號和組進行管理,本文就用戶和組的增刪改操作進行探討。

用戶和組的關系

用戶和用戶組的對應關系有:一對一、一對多、多對一和多對多;下圖展示了這種關系:

技術分享

  • 一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。

  • 一對多:即一個用戶可以存在多個用戶組中。那麽此用戶具有多個組的共同權限。

  • 多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。

  • 多對多:多個用戶可以存在多個組中。其實就是上面三個對應關系的擴展。

id概念

linux中,一般情況下用戶和組都會分配到一個專有的id,這個id也可以在創建時手動自動,系統對賬號的管理是由id決定的,而非id對應的名稱或者是組名。比如同一id,名稱更改後,這個id的所擁有的權限還是一樣的,但是同一名稱,將id調整後,所擁有的權限可能是不一樣的,比如講普通用戶的uid調整為0,那麽用戶將獲得和root一樣的權限。簡單來說,進程所能夠訪問資源的權限取決於進程的運行者的身份,而id就是所謂的身份。

在CentOS 6x 以及老版本 和 CentOS 7x裏有在系統id的分配上有了變更

Linux用戶: Username/UID
管理員:root, 0

普通用戶:1-65535
系統用戶:1-499, 1-999(CentOS7) 對守護進程獲取資源進行權限分配
登錄用戶: 500+, 1000+(CentOS7)

Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)

在linux的組裏,還分為主要組和附加組。一個用戶必須屬於一個,且僅有一個的主要組,但是一個用戶可以同時加入多個附加組裏。

默認情況下,主要組是和用戶是同名的,而且主要組也是僅包含一個用戶,這樣的組也叫私有組

配置文件

Linux用戶和組的主要配置文件有如下四個:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)

格式:賬號:密碼:UID:GID:描述:家目錄:shell

描述:是關於賬號的描述,可以通過chfn這個命令來更改描述信息。

這裏的UID和GID默認情況下是一致的,但是通過手動指定可以不一致

例子,系centOS6統裏有賬號UID和GID此時最大值為524,執行以下的語句

groupadd -g 526 hong
useradd terry4
useradd terry5

此時/etc/passwd的結果如下

terry4:x:525:525::/home/terry4:/bin/bash
terry5:x:526:527::/home/terry5:/bin/bash

可以看到,雖然我們沒有指定新用戶 terry5的GID,但是UID 不等於 GID ,是由於,terry4的GID是525,526已經被hong通過手動方法新建指定了,所以系統默認新生成的GID為527.如果要使得UID 和 GID新建的賬號一致,可以通過手動指定。


/etc/group:組及其屬性信息

格式:組名:密碼:GID:用戶列表

用戶列表:把該組作為附加組的用戶

密碼:通過gpasswd設定,指用戶輸入該密碼就可以通過newgrp臨時切換到該組,即將該組作為臨時的附加組,獲取到附加組的相關組的權限,取消密組碼後,只有成員才可以通過newgrp命令切換入該組。
/etc/shadow:用戶密碼及其相關屬性

格式:用戶名:加密密碼:最後一次改密碼的時間:密碼最小使用時間:密碼最長使用時間:密碼警告期:密碼寬限期:賬號過期時間:保留區間

最後一次改密碼的時間 和 賬號過期時間 都是相對1970年1月1日的天數。

加密密碼:格式為$加密方式$鹽值$加密後的密碼,鹽值的作用是保證了加密的強度,這個值是隨機數,相同密碼在鹽值不一樣的情況下,加密後的密文是不一樣的。

警告期:用戶在密碼過期前幾天,提醒用戶更改密碼

密碼寬限期:用戶在密碼過期後的幾天,可以更改密碼,如果還不更改密碼,該賬戶將會被系統鎖

/etc/gshadow:組密碼及其相關屬性

格式:組名:密碼:管理者:成員

密碼:格式和/etc/shadow裏密碼格式一樣

管理者:指該用戶可以將其他用戶加入到該組裏,通過gpasswd -a添加成員

成員:把該組作為附加組的用戶,用逗號隔開不同的用戶

新建用戶的相關文件

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

  • etc/default/useradd 文件的內容,提示useradd default file ,創建用戶時使用的默認文件

    GROUP = 100 表示用戶組ID
    HOME = /HOME
    表示家目錄的位置
    INACTIVE = -1 表示是否啟用帳號過期停權,-1表示不啟用。
    EXPIRE= 表示賬號是否啟用過期設置 無表示不啟用
    SHELL = /bin/bash 表示賬號使用shell種類
    SKEL = /etc/skel
     表示賬號使用默認文件內容, 可以理解為添加用戶的目錄默認文件存放位置。也就是說,當用戶用useradd添加用戶時,用戶主目錄下的文件都是從這個目錄中復制的     
    CREATE_MAIL_SPOOL=yes
    表示是否創建郵箱緩存 yes表示創建

  • /etc/skel–當系統內增加新用戶時,該目錄下的所有文件都將被自動復制到該用戶的主目錄默認時,這些文件中的大部分都是以(.)文件

  • /etc/login.defs文件定義了與/etc/passwd/etc/shadow配套的用戶限制設定。這個文件是需要的,缺失並不會影響系統的使用,但是也許會產生意想不到的錯誤。

用戶和組管理命令

用戶管理命令
useradd:添加用戶

userdel:刪除賬號

usermod:修改使用者賬號

組帳號維護命令
groupadd:添加組

groupdel:刪除群組

groupmod:修改群組

下面我們通過增,刪,改的順序依次介紹

增加 用戶

  • useradd[options] LOGIN
    -u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs
    -o 配合-u 選項,不檢查UID的唯一性
    -g GID:指明用戶所屬基本組,可為組名,也可以GID
    -c "COMMENT":用戶的註釋信息
    -d HOME_DIR:以指定的路徑(不存在)為家目錄
    -s SHELL: 指明用戶的默認shell程序
    可用列表在/etc/shells文件中
    -G GROUP1[,GROUP2,...]:為用戶指明附加組,組須事先存在
    -N 不創建私用組做主組,使用users組做主組
    -r: 創建系統用戶CentOS 6: ID<500,CentOS 7: ID<1000

例子:

useradd -c "test terry6" -d /home/terry6 -G terry3 terry6

表示增加用戶terry6,描述為 test terry6,指定用戶的家目錄為/home/terry6,並增加附加組為terry3

增加 組

  • groupadd[OPTION]... group_name
    -g GID: 指明GID號;[GID_MIN, GID_MAX]
    -r: 創建系統組:CentOS 6: ID<500,CentOS 7: ID<1000

例子

groupadd -g 528 terry7

表示增加組terry7,並指定GID 為528

刪除 用戶

  • userdel[OPTION]... login
    -r: 刪除使用者賬號及相關文檔,如用戶的家目錄及郵箱的目錄,反正,如果沒有-r,則只刪除賬號,相關文檔沒刪掉

例子

userdel -r terry6

表示刪掉terry6,並且把terry6家目錄及郵箱的目錄都刪掉

刪除 組

  • groupdel

  • groupdel GROUP

例子

groupdel terry3

表示刪掉了terry3這個群主,但是terry3這個賬號還是存在,如果有任何一個群組的使用者在線上的話就不能移除該群組。如terry3還是用戶terry3的主組,最好先用命令usermod -g移除用戶terry3使用者後再移除群組。註意,userdel刪除用戶的同時把用戶的主組也刪掉了。

修改 用戶

  • usermod[OPTION] login
    -u UID: 新UID
    -g GID: 新主組
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
    -s SHELL:新的默認SHELL
    -c ‘COMMENT‘:新的註釋信息
    -d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,同時使用-m選項
    -l login_name: 新的名字;
    -L: lock指定用戶,在/etc/shadow 密碼欄的增加!
    -U: unlock指定用戶,將/etc/shadow 密碼欄的! 拿掉
    -e YYYY-MM-DD: 指明用戶賬號過期日期
    -f INACTIVE: 設定非活動期限

例子

usermod -s /bin/bash -d /home/terry7 -e 2017-09-30 terry8

表示把terry8 的賬號的shell設置為/bin/bash,家目錄修改為/home/terry7,過期日期設置為2017-09-30

修改 組

  • groupmod[OPTION]... group
    -n group_name: 新名字
    -g GID: 新的GID

例子

groupmod -n terry3n -g 523 terry3

表示把terry3的組名改成terry3n,GID改為523


除了以上的兩個命令對用戶和組進行修改外,以下的命令也可以修改相關的屬性

  • pwck:檢查賬號的信息,比如賬號沒有家目錄,或者沒有密碼,就會報異常


  • grpck:檢查組信息,比如同一組在/etc/group和/etc/gshadow的成員中不一致,就會報異常


  • 修改密碼

    passwd[OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限,普通用戶也可以通過passwd: 修改自己的密碼
    常用選項:
    -l:鎖定指定用戶
    -u:解鎖指定用戶
    -e:強制用戶下次登錄修改密碼
    -n mindays: 指定最短使用期限
    -x maxdays:最大使用期限
    -w warndays:提前多少天開始警告
    -iinactivedays:非活動期限
    --stdin:從標準輸入接收用戶密碼
    echo "PASSWORD" | passwd--stdinUSERNAME


  • 修改用戶密碼策略

    chage[OPTION]... LOGIN
    -d LAST_DAY
    -E --expiredateEXPIRE_DATE
    -I --inactive INACTIVE
    -m --mindaysMIN_DAYS
    -M --maxdaysMAX_DAYS
    -W --warndaysWARN_DAYS
    –l 顯示密碼策略

    例子

    chage-d 0 tom 下一次tom登錄強制重設密碼


  • gpasswd[OPTION] GROUP
    -a user: 將user添加至指定組中
    -d user: 從指定組中移除用戶user
    -A user1,user2,...: 設置有管理權限的用戶列表


  • newgrp命令:臨時切換主組,如果用戶本不屬於此組,則需要組密碼


  • groupmems[options] [action]
    options:
    -g, --group groupname更改為指定組(只有root)
    Actions:
    -a, --add username 指定用戶加入組
    -d, --delete username 從組中刪除用戶
    -p, --purge 從組中清除所有成員
    -l, --list 顯示組成員列表
    例子
    groupmems -g tom -p
    表示清除組tom的成員列表


  • groups [OPTION].[USERNAME]... 查看用戶所屬組列表


以上就是關於linux系統中用戶和組 增 刪 改 的相關概念和命令。


本文出自 “自學linux” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1950273

用戶和組 之 增刪改