10.用戶和組的管理

用戶分類


管理員 0
普通用戶:1-65535
系統用戶 1-466,1-999(centos7),系統用戶是給應用程序使用的
登陸用戶:500+,1000+(centos7)

1.用戶管理命令


useradd(adduser軟連接) 添加用戶
usermod 修改用戶
userdel 刪除用戶
id 顯示用戶信息
su 用戶切換
passwd 修改密碼
newusers 批量創建用戶

1.1、useradd命令


常用選項:

-u:用戶id
-d:指定家目錄路徑
-s:指定shell類型
-g:指定主組,組必須已經創建有的
-G:表示附加組,加多個附加組的話用逗號隔開
-M:表示不創建家目錄,默認自動創建
-m:創建家目錄,一般用戶創建系統用戶的時候
-r:表示創建系統用戶,這時候不自動創建家目錄,加-m表示系統用戶也創建家目錄

1.顯示創建用戶的一些默認設置

[root@Centos7 home]#useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

2.修改一些默認設置

 #useradd -D -s /sbin/nologin
這樣創建新用戶的時候shell就默認爲/sbin/nologin
其他設置:
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP

3.創建一個用戶apache,組爲apache,附加組爲test和root,家目錄/var/www而暫不創建,/sbin/nologin,id是80

 #useradd -s /sbin/nologin -d /var/www -g apache -G test,root -M -r -u 80 apache

1.2、usermod命令


應用:修改已創建的用戶一些信息

格式:usermod [OPTION] login

-u UID: 新UID

 #usermod -u 1004 nginx

-g GID: 新主組

 #usermod -g 1004 nginx  把nginx用戶的主組改爲1004

-G GROUP1,GROUP2,..新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項

-s SHELL:新的默認SHELL,下面是2中方法修改shell

 #usermod -s /bin/bash test3
 #chsh -s /bin/bash test3 

-d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,同時使用-m選項,修改名字的時候,家目錄最好也重名

 #usermod -d /home/new test2

-l new old: 新的名字;應用:公司員工離職,我們只需修改用戶名和密碼就行了,不用刪掉再創建一個新用戶,避免原有的文件所屬問題,因爲文件的所屬根本是UID和GID,和用戶名無關。

-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !

-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉

-e YYYY-MM-DD: 指明用戶賬號過期日期

1.3、userdel命令


應用:刪除用戶
-r:把家目錄和郵箱也刪除,正在登陸的用戶刪除不了。

 #userdel -r chen   刪掉chen用戶

1.4、id命令


應用:顯示用戶一些信息,寫腳本的時候,配上#echo $? 來判斷用戶是否存在

格式:id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用

例子:

[root@Centos7 data]#id nginx
uid=1004(nginx) gid=1002(nginx) groups=1002(nginx),1001(webs)
解釋:用戶ID 主組ID groups=主組,附加組

1.5、su命令


切換賬號,有2種用法:

 #su user  不改變當前目錄
 #su - user 直接切換到用戶的家目錄

su命令切換之後,是無法使用whoami等命令查看當前用戶

1.6、passwd命令


應用:修改用戶密碼、鎖定賬號、解鎖賬號
passwd [OPTIONS] UserName: 修改指定用戶的密碼
常用選項:
-d:刪除指定用戶密碼

 #passwd -d nginx  密碼刪掉之後,用戶就可以不用密碼登錄系統
 #getent shadow nginx
 nginx::17740:0:99999:7:::

-l:鎖定指定用戶

[root@Centos7 data]#passwd -l nginx
[root@Centos7 data]#getent shadow nginx
nginx:!!:17740:0:99999:7:::  #出現!!代表賬號被鎖定

-u:解鎖指定用戶,配合-f(force)使用

[root@Centos7 data]#passwd -u -f nginx
Unlocking password for user nginx.
passwd: Success
[root@Centos7 data]#getent shadow nginx
nginx::17740:0:99999:7:::

–stdin:從標準輸入接收用戶密碼

 #echo "centos" | passwd --stdin chen >/dev/null 設置chen賬號密碼爲centos

1.7、newusers命令


應用:批量創建用戶,也可以複製一臺服務器上用戶/etc.passwd,在另一臺服務器上批量創建。
1.把要創建的用戶,以/etc/passwd格式保存在文件中,

[root@Centos7 data]#cat user.txt 
test1:x:1003:1003::/home/test1:/bin/bash
test2:x:1002:100::/home/test2:/bin/bash
test3:x:1004:1006::/home/test3:/bin/bash
test4:x:1005:1007::/home/test4:/bin/bash

2.使用newusers 命令創建

[root@Centos7 data]#newusers user.txt

3.查看是否參加成功

[root@Centos7 data]#getent passwd |tail -4
test1:x:1003:1003::/home/test1:/bin/bash
test2:x:1002:100::/home/test2:/bin/bash
test3:x:1004:1006::/home/test3:/bin/bash
test4:x:1005:1007::/home/test4:/bin/bash

批量創建密碼
1.準備密碼文件,格式是 “用戶:密碼”

[root@Centos7 data]#cat passwd.txt 
test1:123456
test2:123456
test3:123456
test4:123456

2.使用批量命令:chpasswd

[root@Centos7 data]#cat passwd.txt |chpasswd

3.查看是否改了
#getent shadow |tail -4
這裏寫圖片描述

批量刪除用戶

[root@Centos7 data]#for i in `cut -d: -f1 user.txt`;do userdel -r $i;done
userdel: test1 mail spool (/var/spool/mail/test1) not found
userdel: /var/spool/mail/test2 not owned by test2, not removing
userdel: /var/spool/mail/test3 not owned by test3, not removing
userdel: test4 mail spool (/var/spool/mail/test4) not found

2.組的管理命令


1.groupadd命令
-g:指定組的id
-r:系統組
創建nginx組,給系統用戶用的,id號爲808
#groupadd -r -g 808 nginx

2.groupmod命令
應用:組屬性修改
格式:groupmod [OPTION]… group

-n:newname oldname
#groupmod -n nginx1 nginx

-g GID: 新的GID

3.groupdel命令
應用:刪除組
groupdel GROUP
注意:刪組的時候,不能刪除某個用戶的主組

4.group對用戶增刪查
1.test組添加用戶
方法1:#usermod -G test chen 把test組設置爲用戶chen的附加組,原來的附加組會被覆蓋
若要保存之前的組,用-aG選項

方法2:#gpasswd -a chen(用戶) test(組)

方法3:普通用戶登錄之後,$newgrp test,不過需要組的口令
組的口令:表示普通用戶添加這個組需要一個密碼

2.test組刪除用戶
#groupmems -g test -d chen 把用戶從test組刪掉

3.查看test組裏有哪些用戶
#groupmems -g test -l

4.設置test組的口令
#gpasswd test

5.切換chen用戶登陸,執行下面命令,加入test組,然後輸入密碼
#newgrp test 這樣入組,臨時會把test修改爲主組

3.Linux用戶和組的主要配置文件


/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
/etc/default/useradd:創建用戶的默認值設置文件
/etc/login.defs:設置用戶的ID範圍,加密算法等

4.getent命令


 #getent passwd (指定用戶)--查看用戶信息
 #getent shadow (指定用戶)--查看用戶密碼信息
 #getent group  (指定用戶)  --查看組信息
 #getent gshadow (指定用戶)--查看組密碼信息

1.查看/etc/passwd下chen賬號,顯示賬號和組的ID、賬號、組名、家目錄、shell類型

[root@Centos7 data]#getent passwd chen
chen:x:1000:1000:chen:/home/chen:/bin/bash

2.若是不指定用戶名,列出/etc/passwd的所有內容

 #getent passwd 

3.查看用戶的密碼文件,/etc/shadow。centos7使用:sha512加密算法

[root@Centos7 data]#getent shadow test3

這裏寫圖片描述

17739:表示密碼修改時間,單位是1970年1月1日,到修改密碼那天,17739×86400=1532649600
#date -d @1532649600 +”%F% %T” 
2018-07-27 08:00:00
99999:表示密碼最大有效期

4.修改賬號密碼一些時間
#chage test3
這裏寫圖片描述

5.創建用戶的時候一些默認值設置/etc/default/useradd

[root@Centos7 data]#cat /etc/default/useradd
 # useradd defaults file
GROUP=100
HOME=/home  #默認家目錄的路徑
INACTIVE=-1   #-1表示賬號口令過期了指定時間,不鎖定
EXPIRE=
SHELL=/bin/bash  #默認shell類型
SKEL=/etc/skel   
 #新帳號的家目錄模塊,一些配置文件,比如一些隱藏文件.bashrc  、.bash_history
 #若是想在新創建一個用戶的家目錄裏都默認有一個文件夾newfile,可在/etc/skel下,創建newfile。
如果我們不小心刪除了/home/test3,可以根據下面步驟還原配置
 #mkdir /home/test3
 #chown test3:test3 /home/test3
 #cp -r /etc/skel/. /home/test3

CREATE_MAIL_SPOOL=yes #默認把用戶的郵件也創建,郵件地址:/var/spool/mail/

6.創建一個隨機密碼
設置12位的隨機口令
#openssl rand -base64 12

7.查看賬號密碼的加密算法

 #cat /etc/login.defs
.....省略
 # Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512   #表示使用SHA512加密算法
可以用命令改變加密算法,下例子是改成sha256加密算法
 #authconfig --passalgo=sha256 --update  

8.我們在創建新的賬號的時候,默認創建一個和用戶名字一樣的組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章