[使用者管理]——使用者與組管理的檔案、命令

Jelly_lyj發表於2017-03-18

Linux登入主機取得shel的流程?

image

 

 

 


使用者和使用者組相關的4個重要檔案

(1) /etc/passwd 存放使用者資訊的檔案
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
--->以【:】為分隔符,共7個欄位
欄位1:使用者名稱
欄位2:密碼佔位符
欄位3:使用者帳號的UID號
欄位4:使用者所屬組的GID號
欄位5:使用者描述資訊
欄位6:使用者的宿主目錄
欄位7:使用者登入後用到的shell(/sbin/nologin表示使用者以任何方式都不可登入)

 
(2) /etc/shadow 存放使用者密碼資訊的檔案
root:$6$XHwHKv5C$1.Q2A9E71ps5SaBE1BSy85/XbMp7CJpb3R7kFMSSkCx6l7zbYKyPH4yZjEsS3yCcbcY4ih5Ykx3GStTtKQJV81:15112:0:99999:7:::
adm:*:15422:0:99999:7:::
--->以【:】為分隔符,共9個欄位
欄位1:使用者名稱
欄位2:已加密的密碼欄位【*:表示加密後的密碼;!!:表示使用者被鎖定】
欄位3:最近密碼改動的日期
欄位4:密碼不可被改動的天數(與第3個欄位相比)【預設0:表示隨時可以改】
欄位5:密碼需要更改的天數(與第3個欄位相比)【預設99999:表示永不過期】
欄位6:需要更改密碼期限前幾天提醒【預設為7】
欄位7:密碼過期後的寬限日期
欄位8:帳號失效日期【預設為空】
欄位9:保留欄位【未使用】

(3) /etc/group 存放使用者組資訊的檔案
root:x:0:
bin:x:1:bin,daemon
--->以【:】為分隔符,共4個欄位
欄位1:組名
欄位2:密碼佔位符
欄位3:GID
欄位4:組成員列表(用“,”隔開)

 

(4) /etc/gshadow 存放使用者組密碼資訊的檔案

root:::
bin:::bin,daemon
utmp:!::
——>以【:】為分隔符分為4個欄位
欄位1:使用者組名
欄位2:密碼列(開頭為!表示無合法密碼,所以無使用者組管理員)
欄位3:使用者組管理員帳號
欄位4:屬於該使用者組的使用者

 

 


有效使用者組與初始使用者組

建立一個使用者test(同時會新建一個同名的使用者組)
# useradd test
將test使用者加入到使用者組users中
# usermod -G users test
檢視test使用者在三個檔案中的體現
# grep test /etc/passwd /etc/group /etc/gshadow
/etc/passwd:test:x:502:502::/home/test:/bin/bash --->所屬GID502
/etc/group:users:x:100:test
/etc/group:test:x:502:  --->502是使用者組test,即為test使用者的初始使用者組,是使用者一登入就會取得的,所以第4欄位就不需要寫了
/etc/gshadow:users:::test
/etc/gshadow:test:!::

切換到test使用者
# su - test

使用groups命令檢視test使用者支援的使用者組 $
groups test users ------>第一個輸出的使用者組即為有效使用者組
所以此時新建的檔案其所屬使用者組為test(有效使用者組) $
touch file $ ll file -rw-rw-r--. 1 test test 0 8月 2 03:49 file 使用newgrp命令切換有效使用者組 $ newgrp users
$
groups users test
$
touch file2 $ ll file2 -rw-r--r--. 1 test users 0 8月 2 03:50 file2

 


使用者管理相關命令

useradd建立使用者
-c “描述資訊”
-u 指定UID
-d 指定宿主目錄【實際上如果這個目錄沒有修改過屬主屬組的話,並沒有什麼卵用】
-g 指定主要組(組名/GID)
-G 指定附屬組(組名/GID)
-s 指定使用者登入shell
-e 指定密碼失效時間(格式為MM/DD/YY)
-M 指定預設不建立宿主目錄
-r 新增系統賬戶。因為這樣這種方式不會自動建立家目錄,所以常配合 -m選項支援建立家目錄
useradd -r user10 -m

passwd 設定密碼
-d 清空使用者的密碼,使之無需密碼即可登入
-l 鎖定使用者帳號(鎖定後/etc/shadow密碼欄位前會多出!!字樣)
-S 檢視使用者帳號的狀態(是否被鎖定)
-u 解鎖使用者帳號

usermod 使用者相關修改
-l 更改使用者帳號的登入名稱
-L 鎖定使用者賬戶
-U 解鎖使用者賬戶
-u、-d、-e、-g、-G、-s 這些選項與useradd命令中的含義相同

userdel刪除使用者
userdel -r 表示連使用者的宿主目錄、賬戶資訊、密碼資訊、同名組帳號、郵件記錄等資訊一併刪除

goupadd建立使用者組
groupadd [-g GID] 組名
-r 建立系統使用者組

goupmod使用者組相關修改
-g 修改組id
-n 修改組名(不建議修改)

groupdel刪除使用者組
groupdel 組名

gpasswd 新增/刪除組成員
gpasswd  -a  使用者名稱 組名             //將使用者add新增到該組
Adding user root to group emei
gpasswd  -d  使用者名稱 組名            //將使用者delete移除該組
Removing user root from group emei
gpasswd  -M  root,zwj emei        //把多個使用者加入到組

 

chage命令
選項引數:
-l :列出該賬號的詳細密碼引數;
-d :後面接日期,修改 shadow 第三欄位(最近一次更改密碼的日期),格式YYYY-MM-DD
-E :後面接日期,修改 shadow 第八欄位(賬號失效日),格式 YYYY-MM-DD
-I :後面接天數,修改 shadow 第七欄位(密碼失效日期)
-m :後面接天數,修改 shadow 第四欄位(密碼最短保留天數)
-M :後面接天數,修改 shadow 第五欄位(密碼多久需要進行變更)
-W :後面接天數,修改 shadow 第六欄位(密碼過期前警告日期)

建立一使用者test
# useradd test

為test使用者建立一密碼
# echo "123456" |passwd --stdin test
更改使用者 test 的密碼 。
passwd: 所有的身份驗證令牌已經成功更新。

修改該使用者的建立時間
# chage -d 0 test

這時候我們發現使用者test第一次登入會被強制要求該密碼(很有趣和實用的命令)
$ su - test
密碼:
您需要立即更改密碼(root 強制)
為 test 更改 STRESS 密碼。
(當前)UNIX 密碼:
新的 密碼:

 


使用者管理的3個相關檔案

(1) /etc/default/useradd   
GROUP=100
HOME=/home        //預設的家目錄位置
INACTIVE=-1         //密碼失效日
EXPIRE=                //帳號失效日
SHELL=/bin/bash  //預設的shell
SKEL=/etc/skel      //使用者家目錄的內容資料的參考目錄
CREATE_MAIL_SPOOL=yes   //是否主動幫使用者建立郵件信箱

 
(2) /etc/skel/*
宿主目錄的模板目錄(新建使用者時會預設自動拷貝到宿主目錄下的)
其中三個重要的必須檔案
.bash_profile:使用者每次登入時執行這個檔案的內容
.bashrc:使用者每次登入shell時執行這個檔案的內容
.bash_logout:使用者每次退出登入時執行這個檔案的內容
--->由於其特性,可以新增一些命令或設定(如alias)實現使用者登入時自動執行,/root/.bashrc就可以很好的運用
--->缺少這三個檔案使用者也可以驗證,但無法登入,su切換時出現-bash-4.1#

(3) /etc/login.defs
這個檔案記錄的是使用者建立時所遵循的一些設定與規則
MAIL_DIR /var/spool/mail      //建立使用者時在此目錄中新建使用者的mail檔案
PASS_MAX_DAYS 99999   //密碼需要被更改的天數(/etc/shadow檔案中的第5欄位)
PASS_MIN_DAYS 0             //密碼不可被改動的天數(/etc/shadow檔案中的第4欄位)
PASS_MIN_LEN 5               //密碼最小長度 ,已被pam模組替代,失去效用
[在root下給使用者設定密碼並不受這個約束]
[普通使用者若要給自己修改密碼,其密碼長度要符合/etc/login.defs內部的約束,而且要符合複雜性要求(小寫字母,大寫字母,數字,特殊字元必須要包含三類)]
PASS_WARN_AGE 7
UID_MIN 500                   //UID的最小值
UID_MAX 60000            //UID的最大值
GID_MIN 500                  //GID的最小值
GID_MAX 60000            //GID的最大值
CREATE_HOME yes    //useradd建立使用者時是否預設建立宿主目錄
UMASK 077                   //宿主目錄預設的許可權為700
USERGROUPS_ENAB yes          //新建使用者時如果沒有指定組,預設新建一個同名的組
ENCRYPT_METHOD SHA512    //密碼加密的方式

 


通過一個手工建立使用者的例子理解“使用者建立流程”               

手工新增使用者qtds,該使用者的uid=510,gid=510,GID=0,home=/qtds,shell=/bin/sh,到期時間為:2015-12-12,密碼:aixcom,並能實現登入。

1. 根據要求,先生成到期時間值和密碼加密值 

# echo $(($(date --date="2015/12/12" +%s)/86400+1))
16782

# grub-md5-crypt 
Password: 
Retype password: 
$1$fZseL$wzg7vzg7jO8XLRmo18rdB.

 

2. "寫"相關檔案

# echo 'qtds:x:510:510::/qtds:/bin/sh' >> /etc/passwd
# tail -n 1 /etc/passwd
qtds:x:510:510::/qtds:/bin/sh

# echo 'qtds:$1$fZseL$wzg7vzg7jO8XLRmo18rdB:16782:0:99999:7:::' >>/etc/shadow
# tail -n 1 /etc/shadow
qtds:$1$fZseL$wzg7vzg7jO8XLRmo18rdB:16782:0:99999:7:::

# echo 'qtds:x:510:' >> /etc/group
# tail -n 1 /etc/group
qtds:x:510:

 

3. 因為qtds這個使用者的附屬組為GID=0(即root組),所以在/etc/group這個檔案中root那行欄位4的組成員列表中新增qtds

# head -n 1 /etc/group
root:x:0:
# sed  '1,1c root:x:0:qtds'   -i   /etc/group   -i選項儲存
# head -n 1 /etc/group
root:x:0:qtds

 

4. 新建家目錄,修改屬主屬組和許可權,拷貝必須的三個檔案

# mkdir /qtds
# ll -d /qtds/
drwxr-xr-x. 2 root root 4096 7月  24 09:40 /qtds/
# chown qtds:qtds  /qtds/
# chmod 700   /qtds
# ll -d /qtds/
drwx------. 2 qtds qtds 4096 7月  24 09:40 /qtds/
# cp /etc/skel/.bash*  /qtds/
# ls -a /qtds/
.  ..  .bash_logout  .bash_profile  .bashrc

 

相關文章