系統基礎之用戶,組及權限管理

用戶及組詳解


概論:


  現今,大多數操作系統都是多用戶(Multi-tasks)多任務(Mulit-Users)的系統.在多年前,計算機資源遠沒有現在這么豐富,都是多人使用同一臺計算機,為了保障使用計算機的用戶權益不受到損害,完成資源使用隔離,人們采取了用戶機制標識使用者的方法.

 每個使用者都是用戶,用戶是由UID進行標識,通過密碼進行身份驗證機制.而為了方便管理用戶,人們又發明了組,組是用戶的集合,由GID進行標識.在用戶創建時,系統要求用戶必須指定一個主組,且主組是唯一的,也可以不加或添加多個附加組.

 在對用戶和組的管理上,為了安全性,有3A機制進行保護用戶和組.3A分別為:

   認證機制:Authentication      登錄 (用戶名+密碼)

   授權機制:Authorization       設置權限    

   審計機制:Audition          使用過程記錄日志

 安全上下文(senurity context):

   進程以其發起者的身份運行,擁有發起者的權限

   進程對文件(系統資源)的訪問權限,取決于發起此進程的用戶及用戶所屬組的權限 而不是進程本身的權限 最好是所需要擁有的最小權限,不能擁有管理員權限

   為了能夠讓那些后臺進程或服務進程以非管理員的身份運行,通常需要為此創建多個普通用戶,這類用戶從來不用登錄系統 成為系統用戶。


用戶及組的介紹:


用戶及組的類別:

用戶分類

  管理:

  普通:    

   系統用戶

   登錄用戶

  用戶標識:UserID,UID  (16bits 二進制數字:1-65535)

   管理員:0

   普通用戶:1-65535

    系統用戶:1-499(centos6),1-999(centos7)

    登錄用戶:500-60000(centos6),1000-60000(centos7)

  名稱解析:名稱轉換

     Username <–> UID

    根據名稱解析庫進行:根據用戶輸入的名稱與庫(/etc/passwd)的數據做對比,轉化名稱,判斷用戶名是否存在,存在進入下一步登錄,不存在則報錯.   


組分類:

組類別1:

  管理員組:

  普通用戶組:

    系統組:

    登錄組:

  組標識:GroupID,GID              

   管理員組:0

   普通用戶組:1-65535

    系統用戶組:1-499(centos6),1-999(centos7)

    登錄用戶組:500-60000(centos6),1000-60000(centos7)

  名稱解析:groupname <—->gid解析 庫文件:/etc/group

組類別2

   用戶的基本組: 用戶的主組,每個用戶只有一個

   用戶的附加組:用戶的附加組,可以沒有且有多個

組類別3:

私有組:組名同用戶名,且只包含一個用戶

公共組:組內包含了很多個用戶


用戶及組的認證信息:

通過比對事先存儲的密碼信息,判斷與登錄時提供的信息是否一致

password:

  /etc/shadow 用戶密碼庫文件

  /etc/gshadow 組密碼庫文件

密碼的使用策略

1.使用隨機密碼

2.最短長度不低于8位

3.大小字母,數字,標點符號組合使用

4.定期更換   (隨機生成字符串命令:  openssl rand -base64 10(20))

密碼加密算法:

對稱加密 :加密和解密使用同一個密碼   

 加密機:輸入明文,輸出密文 解密機:輸入密文,輸出明文 

非對稱加密:加密和解密使用的一對密鑰。 使用公鑰加密的,使用同對的密鑰解密

  公鑰:public key 

  私鑰:private key

單向加密;只能加密,不能解密。提取數據特征碼,例如:指紋,瞳  借助salt完成

  特征:

    定長輸出,   2的512次方

[root@wen-7 shell]# echo “wen1”|sha512sum 
f7a02b034fffa7ee6faecdfd9114cee0a79467f76a379e7a4e7141c0fe9ed506df54c5c13ebbb3f85bed174f691670f761135720252674c673c2a3ab1388a864  -
[root@wen-7 shell]# echo “wen1rsdasdsadsa”|sha512sum 
18c75133db89c3f4054c4933db1041a8ab962f9d6b5bef4130a873f9bbfd37d6bf5e19c9fb13b0ff98f4e7aa618d891eadfb3497d85d10a0a61098096fb2259c  -

     雪崩效應,初始條件的微小改變,引起整體巨大變化,一個字符的變化,結果完全不同    

[root@wen-7 shell]# echo “wen”| md5sum
28dea8a57263903409d64b9e9731b5c0  -
[root@wen-7 shell]# echo “wen1”| md5sum
1d1f3e6cdcbb3b13b5b13d7a56119cbd  -

算法的種類:

MD5     128bit  (centos5系以下默認使用)

sha1    160bit

sha224   224bit

sha256   256bit

sha385   385bit

sha512   512bit  (centos6系以上默認使用

 密碼創建時,用戶輸入的密碼加隨機數(salt),生成密文,保存在庫文件中。用戶再次登錄時,輸入密碼,系統會自動把在密碼庫保存的上次使用的隨機數補在用戶輸入字符串中,生成密文,與庫文件中的實現存放的密文比較,如果密文一樣,則表示密碼正確,允許用戶登錄,不一樣則報密碼錯誤.

   在計算之時加salt,添加的隨機數,相同的密碼明文,密文不同

root@w6 home]# echo "centos" | passwd --stdin gentoo
[root@w6 home]# getent shadow gentoo
gentoo:$6$j9cSCq/L$7EwxsVScKKD176GnRiEzDAIBB2ewADEDSFcyBN12mza1JRhoMzvwueA1Tt1A1C4c4Q3.qHLyZMMv3KdCiXfEB/:17012:0:99999:7:::
[root@w6 home]# echo "centos" | passwd --stdin gentoo
[root@w6 home]# getent shadow gentoo  
gentoo:$6$JH5FOiaJ$3d0jDjigI5J7ZQoetn0J.lVdE9SjUAiIFOv08YEOlJ.COe8eR.0/YPZBNHlRHHzSuG74pyDoHl41/yd.NwuQU0:17012:0:99999:7:::

  可以更改系統默認密碼算法,

    authconfig --passalgo=sha512 --update

命令如下:      

[root@w6 home]# authconfig --passalgo=sha512 --update 
[root@w6 home]# tail -5 /etc/login.defs   #此目錄記載著創建用戶的默認配置

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512

MD5_CRYPT_ENAB no
[root@w6 home]# authconfig --passalgo=sha256 --update 
[root@w6 home]# tail -5 /etc/login.defs 

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA256

MD5_CRYPT_ENAB no


用戶及組的密碼庫格式:

1./etc/passwd/格式:  

   account:password:UID:GID:GECOS:directory:shell

   (帳號:密碼:用戶ID:組ID:一般的信息:目錄:shell)

   name;用戶名

   password:可以是加密的密碼,也可以是占位符X  /etc/shadow保存加密密碼(man pwconv :影子密碼)

   UID:用戶ID

   GID:用戶所屬的主組的ID號

   GECOS:可選的 提供用戶的注釋信息

   directory:用戶的家目錄 

   shell:用戶的默認shell類型,登錄時默認shell程序


        

2./etc/shadow      

   wen:$6$FGHaaLgp2OWH/K03sMzZDNmN.0AD0:17001:0:99999:7:::

   登錄名:

   加密的字碼串:                       不設密碼的用戶,此位默認為!!;

   最后一次更改密碼的日期(從1970年1月1開始計算的天數):

   密碼最短使用期限:這些天之后,用戶必須更改密碼。

   密碼最長使用期限:這些天之后,用戶必須更改密碼。

   密碼警告時間段:密碼過期之前,提前警告用戶的的天數

   密碼禁用期:密碼過期后,仍然接受此密碼的天數,在此期間,用戶應該在下次登錄時修改碼)。

   密碼到期并且過了這個寬限期之后,使用用戶的當前的密碼將會不能登錄。用戶需要聯系統管理員

   賬戶過期日期:賬戶過期不同于密碼過期。賬戶過期時,用戶將不被允許登錄;密碼過期時,用戶將不被允許使用其密碼登錄。

   保留字段

1470195876551559.png

  pwunconv pwnconv   開啟|關閉密碼轉化命令,實現密碼加密分位存放 關閉后,/etc/shadow文件會消失

[root@w6 home]# pwunconv            #關閉密碼轉換
[root@w6 home]# ll /etc/shadow        #保存密文密碼文件 不存在
ls: cannot access /etc/shadow: No such file or directory
[root@w6 home]# useradd yum1 ;echo "yum123"|passwd --stdin yum1 
Changing password for user yum1.
passwd: Authentication token manipulation error
[root@w6 home]# getent passwd yum1
yum1:!!:506:507::/home/yum1:/bin/bash          #新創建用戶 密碼格式異常

[root@w6 ~]# pwconv                #開啟密碼轉換
 [root@w6 ~]# exit                    #命令生效,需重新登錄用戶
[root@w6 ~]# ll /etc/shadow           #保存密文密碼文件恢復
-r--------. 1 root root 1946 Jul 30 15:27 /etc/shadow
[root@w6 ~]# useradd yum3 ;echo "yum123"|passwd --stdin yum3
Changing password for user yum3.
passwd: all authentication tokens updated successfully.
[root@w6 ~]# getent shadow  yum3              #用戶密碼繼續用密文存儲
yum3:$6$oW7NIo9Z$b53zN7S.m/nt/WDgUl5wMun9YA1jVkjieNQeEYPUJNcIU9iRteR1FhruUeGz66aGF6569eHDQYaQK9SHHStOb.:17012:0:99999:7:::

3./etc/group 組的信息庫                      

  admins:x:502:natasha,harry

  group_name:passwd:GID:user_list

   group_name:組名

   password:(加密的)組密碼.如果該字段為空,則不需要密碼.

   GID  :  組的數字標識.

   user_list:組內所有成員的用戶名,以逗號分隔.

4./etc/gshadow

  admins:!::natasha,harry

   組名:

   組密碼:

   組管理員用戶:

   組成員列表:


用戶及組的管理使用:


用戶及組的查看命令:

(1)groups Username: 查看用戶所在的組

[root@w6 ~]# groups wen
wen : wen
[root@w6 ~]# groups gentoo
gentoo : gentoo root bin

(2)getent:

getent shadow  username= cat /etc/shadow | grep "wen"   查看密碼存放文件

默認使用,顯示文件全部內容.后接用戶名,只顯示指定用戶名的所在行

[root@w6 ~]# getent shadow yum3
yum3:$6$oW7NIo9Z$b53zN7S.m/nt/WDgUl5wMun9YA1jVkjieNQeEYPUJNcIU9iRteR1FhruUeGz66aGF6569eHDQYaQK9SHHStOb.:17012:0:99999:7:::

getent passwd= cat /etc/passwd  查看用戶密碼文件

默認使用,顯示文件全部內容.后接用戶名,只顯示指定用戶名的所在行

[root@w6 ~]# getent passwd yum1
yum1:x:506:507::/home/yum1:/bin/bash

(3)vipw= vim /etc/passwd 比用文本編輯器 打開密文文件更安全,默認進入編輯界面 檢查文件格式

[root@wen-7 ~]# vipwroot:x:0:0:root,123,123,12345:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologin

(4)  vigr =vim /etc/group 比用文本編輯器 打開密文文件更安全,默認進入編輯界面

[root@wen-7 ~]# vigrroot:x:0:bin:x:1:daemon:x:2:sys:x:3:adm:x:4:tty:x:5:disk:x:6:

groupmems -1 -g groupname:查看組內其他成員   修改配置文件,永久生效

[root@wen-7 ~]# groupmems -l -g gentoowen  zhifei [root@wen-7 ~]# groupmems -l -g wenzhifei

strace useradd usesrname:查看創建用戶時,系統底層修改過程,調用過程

[root@wen-7 ~]# strace useradd zhifieexecve("/usr/sbin/useradd", ["useradd", "zhifie"], [/* 27 vars */]) = 0brk(0)                                  = 0x7f09e982a000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09e8692000access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=104555, ...}) = 0mmap(NULL, 104555, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f09e8678000close(3)                                = 0

chfn Username:添加用戶注釋信息

[root@wen-7 ~]# chfn wenChanging finger information for wen.名稱 [wen]: wen辦公 []: 12456辦公電話 []: 5453214住宅電話 []: 133433123435          Finger information changed.[root@wen-7 ~]# getent passwd wen
wen:x:1000:1000:wen,12456,5453214,133433123435:/home/wen:/bin/bash


finger:顯示用戶的備注信息

[root@wen-7 ~]# finger wenLogin: wen            			Name: wenDirectory: /home/wen                	Shell: /bin/bashLast login 二 8月  2 08:32 (CST) on pts/0Mail last read 四 7月 28 21:39 2016 (CST)No Plan.

chsh :

  -s /bin/ch 修改當前系統shell類型

  -l 顯示shell類型列表

[root@wen-7 ~]# chsh -l/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh/bin/zsh[root@wen-7 ~]# chsh -s /bin/cshChanging shell for root.Shell changed.

pwck:pwck: 檢查passwd 文件語法

  

[root@wen-7 ~]# pwck用戶“avahi-autoipd”:目錄 /var/lib/avahi-autoipd 不存在用戶“saslauth”:目錄 /run/saslauthd 不存在用戶“pulse”:目錄 /var/run/pulse 不存在用戶“gnome-initial-setup”:目錄 /run/gnome-initial-setup/ 不存在用戶“oprofile”:目錄 /var/lib/oprofile 不存在用戶“mariadb”:目錄 /home/mariadb 不存在pwck:無改變

grpck:檢查group文件的語法

[root@wen-7 ~]# grpck無效的組文件條目刪除“dsfdsf”一行?y     grpck:文件已更新

用戶及組的管理命令:

組管理命令:

1.groupadd: 添加組

   groupadd [選項] groupName

    -g GID:指定GID,默認是上一個組的GID加1

    -r:創建系統組:存放系統用戶 GID位于1-999之間  也可以組合-g指定系統組ID

[root@wen-7 ~]# groupadd -g 5431 qwert
[root@wen-7 ~]# getent group qwert
qwert:x:5431:
[root@wen-7 ~]# groupadd -g 5432 -r  qweasd
[root@wen-7 ~]# getent group qweasd
qweasd:x:5432:                         #可用strace useradd usesrname:查看修改過程,調用過程

2.groupmod:修改組信息

   groupmod [OPTIONS] groupname

   選項:

    -g GID:修改GID

    -n name:修改組名:可能導致所屬用戶修改信息

[root@wen-7 ~]# groupmod -g 5433 -n asdfg qwert
[root@wen-7 ~]# getent group asdfg
asdfg:x:5433:

3.groupdel:刪除組

  groupdel groupname

  刪除組,會使所屬用戶失去組織

[root@wen-7 ~]# groupdel qweasd
[root@wen-7 ~]# getent group qweasd
[root@wen-7 ~]#                                  #

 

4.groupmems:用戶主組的管理員成員

用法:groupmems [選項] [動作]

  選項:

    -g, –group groupname     更改組 groupname,而不是用戶的組(只 root)

    -R, –root CHROOT_DIR       chroot 到的目錄

  動作:

  -a, –add username       將用戶 username 添加到組成員中

  -d, –delete username     從組的成員中刪除用戶 username

  -h, –help            顯示此幫助信息并推出

  -p, –purge           從組中移除所有成員

  -l, –list            列出組中的所有成員


(5).gpasswd命令:

   gpasswd [選項] group

     -a username :想組中添加用戶

      -dusername:從組中移 處用戶

        -A username: 設置某用戶為組的管理員

                gpasswd groupname : 更改組密碼

[root@w6 ~]# groupmems -l -g  adminsnatasha  harry  user10 [root@w6 ~]# gpasswd -a user10 adminsAdding user user10 to group admins[root@w6 ~]# groupmems -l -g  adminsnatasha  harry  user10 [root@w6 ~]# gpasswd -d user10 adminsRemoving user user10 from group admins[root@w6 ~]# groupmems -l -g  adminsnatasha  harry

其他用戶不得隨意切換組,必須要輸入組密碼,配合newgrp命令,臨時切換基本組,

(6)  newgrp 命令

    臨時切換指定組為基本組. exit退出  組不能是私有組

        newgrp [-] [group]

            -:會模擬用戶重新登錄以實現初始化其工作環境

[user10@w6 ~]$ newgrp - user2Password: [user10@w6 ~]$ touch qwewqe[user10@w6 ~]$ lltotal 0-rw-r--r-- 1 user10 user2  0 Aug  1 18:16 qwewqe-rw-rw-r-- 1 user10 user10 0 Aug  1 18:13 user2


練習:

  創建sysadmins組 

[root@wen-7 ~]# groupadd sysadmins[root@wen-7 ~]# getent group sysadminssysadmins:x:6015:

  將用戶User1,2,3加入到sysadmins組中

[root@wen-7 ~]# useradd -G sysadmins user1[root@wen-7 ~]# useradd -G sysadmins user2[root@wen-7 ~]# useradd -G sysadmins user3

  將user3設置為sysadmins的管理員用戶

[root@wen-7 ~]# gpasswd -A user3 sysadmins

  用user3登錄,將user2從組移除

[root@wen-7 ~]# su - user3 -c "gpasswd -d user2 sysadmins"正在將用戶“user2”從“sysadmins”組中刪除

  設置sysadmins密碼為centos

[root@wen-7 ~]# gpasswd sysadmins正在修改 sysadmins 組的密碼新密碼:請重新輸入新密碼

  設置user1在創建新文件使,文件的所組為syaadmins

[root@wen-7 ~]# su - user1[user1@wen-7 ~]$ newgrp sysadmins[user1@wen-7 ~]$ touch fdsf | ll總用量 0-rw-rw-r-- 1 user1 user1     0 8月   3 10:35 a.sh-rw-r--r-- 1 user1 sysadmins 0 8月   3 10:36 dfa[user1@wen-7 ~]$

  刪除用戶user1,2,3

[root@wen-7 ~]# userdel -r user1[root@wen-7 ~]# userdel -r user2[root@wen-7 ~]# userdel -r user3userdel:組“user3”沒有移除,因為它不是用戶 user3 的主組

  刪除組sysadmin

[root@wen-7 ~]# groupdel sysadmins






用戶管理命令:

1.useradd:創建用戶,更新默認新用戶信息

  useradd 【OPTIONS】 Username

   選項:

    -u: 指定uid號

    -g:指定基本組ID,此組得事先存在

    -o:   配合-u 不檢查UID的唯一性

    -G:指明用戶所屬的附加組名,多個組之間作用逗號分隔,此組得事先存在

    -c:指明注釋信息

    -d:指明用戶家目錄位置,默認指向/home/    通過復制/etc/skel/此目錄并重命名實現,指定的家目錄如果實現存在,則不會為用戶復制環境配置文件。 配合-m使用

    -s:指明用戶的默認shell類型,可用的所有shell列表存儲在/etc/shells/文件 

    -r:創建系統用戶      ,家目錄,郵箱不會自動生成

    -N:不創建私有組作為主組:

    -M:不創建用戶家目錄

    -f:密碼過期后,賬號被徹底禁用之前的天數  

[root@wen-7 ~]# useradd -o -u 1208  -G gentoo,wen -c "zhifei is Linux system" -d /users/zhifei zhifei
[root@wen-7 ~]# getent passwd zhifei
zhifei:x:1208:1208:zhifei is Linux system:/users/zhifei:/bin/bash

    useradd -D:顯示用戶創建時的默認選項

    useradd -D   選項:    修改默認選項的值  修改的結果保于/etc/default/useradd文件,也可以直接編輯文件來修改變量   

[root@wen-7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@wen-7 ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  注意:創建用戶時的諸多默認設定配置文件為/etc/login.defs      

[root@wen-7 ~]# cat /etc/login.defs 
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

 擴展: 批量創建用戶:

     (1)創建用戶文件 user.sh,按照/etc/passwd的格式

     (2) newusers  user.sh            #批量創建用戶

     (3)創建密碼文件passwd.sh, 格式:username:password

     (4)cat passwd.sh |chpasswd        #批量修改密碼

[root@w6 ~]# cat user.sh 
we7:x:507:507::/home/we7:/bin/bash
we8:x:508:508::/home/we8:/bin/bash
we9:x:509:509::/home/we9:/bin/bash
[root@w6 ~]# newusers user.sh 
[root@w6 ~]# tail -n3 /etc/passwd
we7:x:507:507::/home/we7:/bin/bash
we8:x:508:508::/home/we8:/bin/bash
we9:x:509:509::/home/we9:/bin/bash
[root@w6 ~]# cat passwd.sh 
we7:123456
we8:123456
we9:123456
[root@w6 ~]# cat passwd.sh | chpasswd 
[root@w6 ~]# tail -n3 /etc/shadow
we7:$6$IfgzE/H6x.$OYFvTlN3HxiUDvlVGhFU5ubi5jQfrNY2P5C0fhted4PDHP3XI6DQuZw13LEyBvuanHnHkplvR25wP9ZFqViTq1:17012:0:99999:7:::
we8:$6$rzkZHmbVkD/2dgcz$/jx52XRml4tP4jB2HMdRAPlcAC5HDFS2K9ClKnSXulYnaPfceUbjBw9EAiFPBgE4clYVM5wtfII6mmIKRRs4T1:17012:0:99999:7:::
we9:$6$8weaIXfBEiP$Pg8JQSYEOFlYWhVW1FGtOFlLf7PJSMvoJOoqLy3FdfC7vNOBHsWjdAGqlKmaiB76AY5GRwA/aYMezIA5e9zaf/:17012:0:99999:7:::
[root@w6 ~]#cp -r /etc/skel/. /home/we9

練習:

1、創建用戶gentoo,附加組為binroot,默認shell/bin/csh,注釋信息為"GentooDistribution"

[root@w6 ~]# useradd  -G bin,root -c "GentooDistribution" -s /bin/csh gentoo1
[root@w6 ~]# getent passwd gentoo1
gentoo1:x:510:510:GentooDistribution:/home/gentoo1:/bin/csh
[root@w6 ~]# groups gentoo1
gentoo1 : gentoo1 root bin

2、創建下面的用戶、組和組成員關系
名字為admins 的組
用戶natasha,使用admins 作為附屬組
用戶harry,也使用admins 作為附屬組
用戶sarah,不可交互登錄系統, 且不是admins 的成員
natasha, harry, sarah密碼都是centos

[root@wen-7 ~]# groupadd admins
[root@wen-7 ~]# useradd -G admins natasha
[root@wen-7 ~]# useradd -G admins harry
[root@wen-7 ~]# useradd -s /sbin/nologin sarsh
[root@wen-7 ~]# tail -n3 /etc/passwd
natasha:x:4048:4048::/home/natasha:/bin/bash
harry:x:4049:4049::/home/harry:/bin/bash
sarah:x:4050:4050::/home/sarah:/sbin/nologin

[root@wen-7 ~]# echo "centos"| passwd --stdin natasha
更改用戶 natasha 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin harry
更改用戶 harry 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin sarah
更改用戶 sarah 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@wen-7 ~]# echo "centos"| passwd --stdin sarah

(2)usermod:修改用戶屬性

  usermod  [OPTINOS] username

   選項:

     -u UID:修改用戶的id號

    -g GROUP:修改用戶所受的基本組

    -G GROUP:修改用戶所屬的附加組,原來的組會被覆蓋

    -a:與 -G一同使用,用于為用戶追加新的附加組

    -c:修改注釋信息

    -d home_DIR:修改用戶的家目錄,用戶原有的文件不會被轉移

    -m:與-d配合使用,修改用戶家目錄后,移動原有的文件至新的家目錄

    -l newname: 修改用戶名

    -s shell:修改用戶的shell類型

    -L:鎖定用戶密碼,禁止用戶登錄,及即在用戶原來的密碼字符串之前添加一個“!“

    -U:解鎖用戶密碼 刪除 ”!“  !沒有后,可免密碼登錄

           

(3).userdel :刪除用戶

   userdel [OPTIONS】 username

     -r:刪除用戶時,一并刪除其家目錄和郵箱,系統默認不刪家目錄


練習:

    1.創建用戶gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和peguin(GID為5001);

[root@wen-7 ~]# groupadd -g 5000 distro
[root@wen-7 ~]# groupadd -g 5001 peguin
[root@wen-7 ~]# groupadd  gentoo
root@wen-7 ~]# useradd -u 4001 -g gentoo -G distro,peguin gentoo
[root@wen-7 ~]# tail -1 /etc/passwd
gentoo:x:4001:5002::/home/gentoo:/bin/bash
[root@wen-7 ~]# tail -3 /etc/group
distro:x:5000:gentoopeguin:x:5001:gentoogentoo:x:5002:

    2.創建用戶fedore,其注釋信息為“Fedore Core” 默認shell為/bin/tcsh

[root@wen-7 ~]# useradd -c "Fedora Core" -s /bin/tcsh  fedora
[root@wen-7 ~]# tail -1 /etc/passwd
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh

    3.修改gentoo用戶的家目錄為/var/tmp/gentoo,要求其原有文件仍能被用戶訪問        

[root@wen-7 ~]# usermod -md  /var/tmp/gentoo  gentoo
[root@wen-7 ~]# tail -2 /etc/passwd
gentoo:x:4001:5002::/var/tmp/gentoo:/bin/bashfedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
[root@wen-7 ~]# ls -a /var/tmp/gentoo/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  .zshrc

    4.為gentoo新增附加組netadmin;

[root@wen-7 ~]# usermod -aG netadmin gentoo
[root@wen-7 ~]# tail -2 /etc/group
fedora:x:4002:
netadmin:x:5003:gentoo

    5.刪除用戶fedore

[root@wen-7 ~]# userdel -r fedora
userdel:組“fedora”沒有移除,因為它不是用戶 fedora 的主組
userdel:/users/fedora/ 并不屬于 fedora,所以不會刪除
[root@wen-7 ~]# ll /home/
總用量 4
drwx------   3 docker  docker    87 7月  30 11:14 docker
drwx------   3    4002 fedora    87 7月  29 16:37 fedora
drwx------   3 hadoop  hadoop    87 8月   1 08:35 hadoop
drwx------   3 harry   harry     87 8月   1 21:24 harry
drwx------   3 natasha natasha   87 8月   1 21:24 natasha
drwx------   3 sarah   sarah     87 8月   1 21:26 sarah
drwx------. 15 wen     wen     4096 7月  30 11:42 wen
drwx------   3 wen1    wen1      87 7月  29 14:58 wen1

(4).passwd命令:

  passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S]

  passwd  [–stdin] [username]

   選項:

    -l:鎖定用戶

    -u:解鎖用戶

    -d:清除用戶密碼

    -e date:強制更改過期期限,日期

    -i date:非活動期限;

    -n date:密碼的最短使用期限

    -x date:密碼的最長使用期限

    -w date:警告期限

     –stdin:標準輸入    echo ”PASSWD“|passwd –stdin USERNAME

[root@wen-7 ~]# echo "123456" | passwd --stdin gentoo
更改用戶 gentoo 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

(5).chage命令 更改用戶密碼過期信息

     chage username:交互式更改,不用指定選項

                -d: 更改最后一次更改密碼的日期       跟0表示下一次更改

     -E:

     -W:

     -m:

     -l: 查看密碼策略

         

[root@w6 ~]# chage -d 17011  -E 3 -W 9 -m 4 wen[root@w6 ~]# getent shadow wenwen:$6$TfrxzyP7T.sVpvMD$phH8yrBzDQ.dfh3A/9SB8pr2pVHOAjfG3mgoA/g0szkU.Wvkd8z2RBa2IQQNVsj3.iYjSkP3UHUt348bt3n1B1:17011:4:99999:9::3:

(6)id 顯示用戶的真實有效id信息

   id [options] username

    默認是當前登錄用戶,后接其他用戶名,查看其他用戶

   選項:

    -u:只顯示UID

    -g:只顯示基本組ID

   -G: 所有組的ID號

   -n:只顯示名稱 而非id 配合以上選項使用   

[root@wen-7 ~]# id -u wen 
1000
[root@wen-7 ~]# id -g wen 
1000
[root@wen-7 ~]# id -G wen 
1000 4046
[root@wen-7 ~]# id -nu wen 
wen
[root@wen-7 ~]# id -ng wen 
wen
[root@wen-7 ~]# id -nG wen 
wen gentoo

 

(7) su命令 :swith user

   登錄式切換:會通過重新讀取用戶的配置文件,環境變量來重新初始化

    su – USername

    su -l Username

  非登錄式切換:不會讀取目標用戶的配置文件,環境變量來進行初始化

    su Username

[root@wen-7 ~]# su wen
[wen@wen-7 root]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[wen@wen-7 root]$ exit
exit
[root@wen-7 ~]# su - wen
上一次登錄:一 8月  1 21:38:04 CST 2016pts/0 上
[wen@wen-7 ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wen/.local/bin:/home/wen/bin

    -c command:僅以指定用戶的身份運行此處指定的命令,不進行實質切換            

[root@wen-7 ~]# su - wen -c 'whoami`
 wen

注意:管理員可無密碼切換至其他用戶,非管理員在切換用戶時必須提供密碼,否則無法切換

        切換后,不能再su回去,只能exit退出用戶登

作業:

1、創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser

[root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser
[root@wen-7 ~]# getent passwd testuser 
testuser:x:1234:1::/testdir/testuser:/bin/csh

2、修改testuser uid:4321,主組:root,輔助組:nobody,loginname:test,home:/home/test 家數據遷移

[root@wen-7 ~]# usermod -l test -u 4321 -g root -G nobody -d /home/test -m  testuser
[root@wen-7 ~]# getent passwd test
test:x:4321:0::/home/test:/bin/csh

3、批量創建帳號:user1…user10

uid:3000-3009,shell:/bin/csh,home:/testdir/username

passwd:usernamepass

注意家目錄相關配置,使用戶正常登錄

[root@w6 ~]# mkdir /testdir                     #創建用戶文件
[root@w6 ~]# cat  user.sh 
user1:x:3001:3001::/testdir/user1:/bin/csh
user2:x:3002:3002::/testdir/user2:/bin/csh
user3:x:3003:3003::/testdir/user3:/bin/csh
user4:x:3004:3004::/testdir/user4:/bin/csh
user5:x:3005:3005::/testdir/user5:/bin/csh
user6:x:3006:3006::/testdir/user6:/bin/csh
user7:x:3007:3007::/testdir/user7:/bin/csh
user8:x:3008:3008::/testdir/user8:/bin/csh
user9:x:3009:3009::/testdir/user9:/bin/csh
user10:x:3010:3010::/testdir/user10:/bin/csh
[root@w6 ~]# newusers user.sh                    #使用用戶文件,生成用戶
[root@w6 ~]# tail -10 /etc/passwd
user1:x:3001:3001::/testdir/user1:/bin/csh
user2:x:3002:3002::/testdir/user2:/bin/csh
user3:x:3003:3003::/testdir/user3:/bin/csh
user4:x:3004:3004::/testdir/user4:/bin/csh
user5:x:3005:3005::/testdir/user5:/bin/csh
user6:x:3006:3006::/testdir/user6:/bin/csh
user7:x:3007:3007::/testdir/user7:/bin/csh
user8:x:3008:3008::/testdir/user8:/bin/csh
user9:x:3009:3009::/testdir/user9:/bin/csh
user10:x:3010:3010::/testdir/user10:/bin/csh         

[root@w6 ~]# cat passwd.sh 
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
user5:user5pass
user6:user6pass
user7:user7pass
user8:user8pass
user9:user9pass
user10:user10pass
[root@w6 ~]# cat passwd.sh |chpasswd         #使用密碼文件,批量生成密碼
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user1              #復制家目錄模板文件,使普通用戶命令變量符恢復正常
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user2
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user3
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user4
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user5
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user6
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user7
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user8
[root@w6 ~]# cp -r /etc/skel/.[^.]* /testdir/user9
            cp -r /etc/skel/. /home/user10           ######整個文件所有文件,隱藏和非隱藏
[root@w6 ~]# ll -a /testdir/user1
total 32
drwx------.  4 user1 user1 4096 Jul 30 16:58 .
drwxr-xr-x. 12 root  root  4096 Jul 30 16:53 ..
-rw-r--r--.  1 root  root    18 Jul 30 16:58 .bash_logout
-rw-r--r--.  1 root  root   176 Jul 30 16:58 .bash_profile
-rw-r--r--.  1 root  root   124 Jul 30 16:58 .bashrc
drwxr-xr-x.  2 root  root  4096 Jul 30 16:58 .gnome2
-rw-------.  1 user1 user1   53 Jul 30 16:56 .history
drwxr-xr-x.  4 root  root  4096 Jul 30 16:58 .mozilla

touch /etc/nologin   創建此目錄可以禁止所有用戶登錄,并可以讓用戶看見文件中的提示信息,用于系統維護場景

touch /run/noligin    創建此目錄可以禁止所有用戶登錄,并可以讓用戶看見文件中的提示信息,用于系統維護場景   centos7有/run/

原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/27634

(0)
wencxwencx
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • 對虛擬機鍵入Ctrl+Alt+Delete的詳細說明

            日常中我們用Windows系統時經常使用Ctrl+Alt+Delete來換出任務管理的菜單,進行任務管理,linux中也有這樣的鍵入命令,但不是管理任務,而是重啟系統?。?!那么我們就應該注意了,不要誤操作重啟服務器。       &n…

    2017-03-28
  • 文本處理

    cat,tac,rev,more,less,head,tail,cut,wc,sort,uniq,grep,
    正則表達式,擴展正則表達式

    2018-03-13
  • N25 – Week 5 blog

    1. 顯示當前系統上root, fedora或user1用戶的默認shell [root@dhcp-10-129-6-166 ~]# grep -E "root|fedora|user1" /etc/passwd | grep -o "[^…

    Linux干貨 2016-12-27
  • keepalived雙主模型高可用Nginx服務

    配置前提: (1) 各節點時間必須同步;             ntp, chrony (2) 確保iptables及selinux不會成為阻礙; (3) 各節點之間可通過主機名互相通信(對KA并非必須);   &nb…

    2017-07-06
  • 馬哥教育網絡班20期+第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。  答:文件管理類命令有: touch :創建一個新文件 示例:在/tmp/目錄下創建一個1.log文件 touch /tmp/1.log mv:移動文件  示例:將/etc/fstab文件移至/tmp/目錄中。  mv /etc/fstab /tmp/…

    Linux干貨 2016-06-23
  • grep和正則表達式

    grep       作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文件逐行進行匹配檢查;打印匹配到的行;       模式:由正則表達式的元字符及文本所編寫出的過濾條件    語法:【選項】【文件】  &…

    2017-08-04
欧美性久久久久