計算機中用戶的作用:主要實現資源分享,在分享資源同時涉及到資源安全,又新增用戶密碼認證,使其資源由特定權限的用戶或用戶組纔可訪問。
linux系統中用戶和組分類:
用戶分爲:管理員用戶(root)、普通用戶和系統用戶(對守護進程獲取資源進行權限分配,也就是在系統啓動時或需要啓動某進程服務時需要的用戶,也稱爲“僞用戶”)
用戶組分爲:管理員組、普通用戶組,當然在創建用戶時會同時創建一個同用戶名的基本組,因此僞用戶也有着自己的基本組。另外用戶組針對用戶來說還有一個“附加組”,當然也是普通用戶組
並且同時在創建用戶後會生成唯一標識用戶的uid號,當然用戶組也是有gid,管理員uid和gid爲“0",因此如果在將一個用的uid和gid改爲"0"那麼這用戶即可提升爲系統管理員。在centos6中一般uid從1-499區間表示爲"系統用戶",uid爲500+的用戶爲普通用戶‘。
useradd命令:create a new user or update default new user information
【功能】創建一個新的用戶或更新用戶原來的信息
【語法】
useradd [option] USERNAME
【常用選項】
-u: [UID_MIN,UID_MAX] 定義在/etc/login.dnfs/ -g:指定用戶的基本組,可爲組名,也可以是GID -c:指定用戶的屬性信息 -d:指定用戶的家目錄,但是如果指定與用戶名不同的家目錄,指定時該目錄應該不事先存在 -s:指定用戶登錄系統默認shell -G:指定用戶的附加組,不同附加組用逗號隔開即可,一個用戶可以屬於多個附加組,組必須事先存在 -r:創建系統用戶 centos6: 1-499 centos7:1-999
【配置文件】/etc/passwd 和 /etc/shadow
/etc/passwd文件以":"做分隔符將文件每行數據分爲"7"段,而每行代表一個用戶信息。 root:x:0:0:root:/root:/bin/bash 這些信息分別表示: 用戶名:密碼佔位符:uid:gid:用戶資料(電話號碼,年齡等):用戶屬主目錄:用戶登錄系統默認shell /etc/shadow:文件以":"做分隔符將文件每行數據分爲"9"段,每行代表一個用戶密碼安全信息 root:$6$tlIcIKYX0qGDqZF5$QtTrzgTGF1cSp2Gf5.tWUGh7mR9JLNE32OJVcNVctD0x3Lv/YEqua8YY.En5xuEp4LiJAYdQ2i6FQahVuEynq.:16912:0:99999:7::: 1)用戶名 2)加密的密碼 3)上次更改密碼的日期(從1970-1-1開始) 4)最短密碼期限(按天計算,0 = 無最短期限) 5)最長密碼期限(按天計算) 6)密碼警告期限(按天計算,0 = 未指定警告) 7)密碼非活動期限(按天計算) 8)賬號到期時間(從1970-1-1開始) 9)保留域
【實例】useradd創建用戶
[root@perthon50 ~]# useradd -u 505 -c "this is testuser" testuser1 [root@perthon50 ~]# tail -n 1 /etc/passwd testuser1:x:505:505:this is testuser:/home/testuser1:/bin/bash [root@perthon50 ~]# tail -n 1 /etc/shadow testuser1:!!:16913:0:99999:7::: //密碼加密爲顯示爲"!!"表示無法登錄系統,沒設置密碼
usermod命令:modify a user account
【功能】修改用戶基本信息,
【語法】
usermod [options] USERNAME
【常用選項】
當然可以直接改/etc/shadow文件,不建議 -e:修改用戶賬號有效期限 -u:修改用戶uid -g:修改用戶基本組 -c:修改用戶的屬性信息 -d:修改用戶的家目錄,但是如果指定與用戶名不同的家目錄,指定時該目錄應該不事先存在 -s:修改用戶登錄系統默認shell -G:修改用戶的附加組,不同附加組用逗號隔開即可,一個用戶可以屬於多個附加組,組必須事先存在 -l:修改用戶名稱, -L:鎖定用戶密碼,使其用戶密碼無效,無法登錄系統 -U:解除用戶密碼鎖定
【實例】修改用戶名稱、默認shell、用戶屬性信息
[root@perthon50 ~]# tail -n 2 /etc/passwd gentoo:x:504:504:xxxxxxxxxxxxx:/home/gentoo:/bin/bash //原來用戶信息 testuser1:x:505:505:this is testuser:/home/testuser1:/bin/bash [root@perthon50 ~]# usermod -s "/bin/tcsh" -l user1 -c "tell 110" testuser1 [root@perthon50 ~]# tail -n 2 /etc/passwd gentoo:x:504:504:xxxxxxxxxxxxx:/home/gentoo:/bin/bash user1:x:505:505:tell 110:/home/testuser1:/bin/tcsh //修改後用戶信息
passwd命令:update user's authentication tokens
【功能】對用戶/etc/shadow文件管理,類似usermod命令
【語法】
passwd [options] USERNAME
【常用選項】
-l:鎖定用戶 -u:解鎖用戶 -n mindays:指定用戶密碼最短使用期限,表示用戶修改密碼後 必須#天后才能再次修改密碼 -x maxdays:最大使用期限,表示用戶修改密碼#天后必須修改密碼,否則不可以登錄系統 -w warndays:提前多少天前警告 表示用戶密碼最大期限到期的前#天提醒用戶修改密碼 -i inactivedays:非活動期限,表示用戶還可以登錄系統 -e expire:YY-MM-DD 設置密碼過期期限 --stdin: 從標準輸入接收用戶密碼 echo "PASSWORD" | passwd --stdin USERNAME 表示echo出來的直接輸入給passwd --stdin 設置USERNAME 密碼,但是必須顯示的 可以使用 管道送給/dev/null bit buckets黑洞 於此對應的有 /dev/zero 一直吐零
【實例】爲用戶添加登錄認證密碼
//爲用戶添加密碼方法一 [root@perthon50 ~]# tail -n 2 /etc/shadow gentoo:!!:16913:0:99999:7::: //密碼加密位顯示"!!"表示無密碼並不可登錄系統 user1:!!:16913:0:99999:7::: [root@perthon50 ~]# passwd gentoo Changing password for user gentoo. New password: //輸入自己需要的密碼即可,普通用戶爲自己設置密碼要求複雜性 BAD PASSWORD: it is based on a dictionary word Retype new password: //再次輸入密碼, passwd: all authentication tokens updated successfully. //爲用戶設置密碼方法二,並查看剛纔設置密碼是否成功 //不建議除非是批量新建用戶時,並寫腳本自動生成時,否則建議別使用,萬一誰查看過你的歷史命令或者是站在你後面可怎麼辦哦, [root@perthon50 ~]# echo "linux@123" | passwd --stdin user1 Changing password for user user1. passwd: all authentication tokens updated successfully. [root@perthon50 ~]# tail -n 2 /etc/shadow gentoo:$6$JQGxgi3e$XZiFTUa1lQVrCrwfHw6m4cWVJQ4ktmH7QKu8aXnsAJyNzdikosrGQxT4pMilsmVo1BDlXw0aLgQBcJJL9/sYI1:16913:0:99999:7::: user1:$6$b5rZKPL1$3aWfNwGVPz.VWN67SZN58sHLt4.j/RPnk7C/eXGL0qFHPxwqYJTYA0p2scr6zdTi7cpfiIhqkAmRqUNFMvLZE1:16913:0:99999:7:::
userdel命令: delete a user account and related files
【功能】常用刪除用戶
【語法】
userdel [option] USERANME
【常用選項】
-r:表示在刪除用戶時,同時刪除用戶屬主目錄(小心謹慎)
【實例】在系統中刪除gentoo用戶並且刪除gentoo的屬主目錄
[root@perthon50 ~]# ls /home gentoo lisi testuser1 zhangsan //在home目錄下有gentoo的屬主目錄 [root@perthon50 ~]# tail -n 2 /etc/passwd gentoo:x:504:504:xxxxxxxxxxxxx:/home/gentoo:/bin/bash //gentoo的用戶 user1:x:505:505:tell 110:/home/testuser1:/bin/tcsh [root@perthon50 ~]# userdel -r gentoo //刪除gentoo用戶並屬主目錄 [root@perthon50 ~]# !ls ls /home lisi testuser1 zhangsan //無gentoo屬主目錄 [root@perthon50 ~]# tail -n 2 /etc/passwd //也無gentoo用戶 lisi:x:503:503::/home/lisi:/bin/bash user1:x:505:505:tell 110:/home/testuser1:/bin/tcsh
groupadd命令:create a new group
【功能】在用戶需要指定附加組時,而附加組是必須事先存在纔可指定,那麼在創建用戶指定用戶附加組之前就必須先創建"組"。
【語法】
groupadd [options] GROUPNAME
【常用選項】
-g:創建組時指定gid -r:創建系統工作組,gid位於1-499區間
【實例】創建新組
//創建一個組名爲testgroup,gid爲534, [root@perthon50 ~]# groupadd -g 534 testgroup [root@perthon50 ~]# tail -n 2 /etc/group test:x:555: testgroup:x:534: //創建默認系統工作組,gid位於1-399區間 [root@perthon50 ~]# groupadd -r systemgroup [root@perthon50 ~]# tail -n 2 /etc/group testgroup:x:534: systemgroup:x:498:
gpasswd命令:administer /etc/group and /etc/gshadow
【功能】管理/etc/group,/etc/gshadow文件,當對組設置密碼時,可實現當用戶不屬於改組的成員,可通過gpasswd設置的密碼,進行組切換,操作完成退出即可,不常用
【語法】
gpasswd [options] GROUPNAME
【常用選項】
-a user: 將user添加至指定組中,附加組
-d user:刪除用戶user從附加組中移除
-A user1,user2……,設置有管理權限的用戶列表
newgroup:臨時切換組
pwck:檢查用戶認證信息完成性問題
【實例1】添加刪除用戶附加組
[root@perthon50 ~]# id user1 uid=505(user1) gid=505(testuser1) groups=505(testuser1) [root@perthon50 ~]# gpasswd -a user1 test //添加test組爲用戶user1的附加組 Adding user user1 to group test [root@perthon50 ~]# id user1 uid=505(user1) gid=505(testuser1) groups=505(testuser1),555(test) [root@perthon50 ~]# gpasswd -d user1 test //移除user1的附加組test Removing user user1 from group test [root@perthon50 ~]# id user1 uid=505(user1) gid=505(testuser1) groups=505(testuser1)
groupdel命令: delete a group
【功能】刪除系統中用戶組
【語法】
groupdel GROUPNAME
【實例】刪除系統中組
[root@perthon50 ~]# tail -n 2 /etc/group testgroup:x:534: systemgroup:x:498: [root@perthon50 ~]# groupdel systemgroup [root@perthon50 ~]# tail -n 2 /etc/group test:x:555: testgroup:x:534:
chage命令:change user password expiry information
【功能】修改用戶/etc/shadow文件字段信息
【語法】
chage [options] USERNAME
【常用選項】
-d, --lastday LAST_DAY 修改最近一次修改密碼時間 -E, --expiredate EXPIRE_DATE 有效時間 -I, --inactive INACTIVE 非活動期限 -m, --mindays MIN_DAYS 最小使用天數 -M, --maxdays MAX_DAYS 最大使用天數 -W, --warndays WARN_DAYS 提前警告時間
【實例】修改用戶密碼過期"提前警告天數"
[root@perthon50 ~]# tail -n 1 /etc/shadow user1:$6$b5rZKPL1$3aWfNwGVPz.VWN67SZN58sHLt4.j/RPnk7C/eXGL0qFHPxwqYJTYA0p2scr6zdTi7cpfiIhqkAmRqUNFMvLZE1:16913:0:99999:7::: //默認爲7天 [root@perthon50 ~]# chage -W 6 user1 [root@perthon50 ~]# tail -n 1 /etc/shadow user1:$6$b5rZKPL1$3aWfNwGVPz.VWN67SZN58sHLt4.j/RPnk7C/eXGL0qFHPxwqYJTYA0p2scr6zdTi7cpfiIhqkAmRqUNFMvLZE1:16913:0:99999:6::: //已經修改爲6天
以下爲筆記本
Linux用戶管理
用戶創建:useradd USERNAME
#useraddUSERNAME
#tail -1 /etc/passwd 查看最後一個創建用戶的用戶名
#tail -1 /etc/group
#tial -1 /etc/shadow 查看到用戶有!!表示該用戶沒有設置密碼無法登錄系統
[option]
-u UID:指定用戶的UID 在/etc/login.defs定義默認+1
-g GID:指定基本組,可使用組名、GID號指定,但是在創建用戶時,如果需要指定基本組,組必須事先存在
-c comment :通常是用戶的簡短信息簡要說明,如果有空格需要引號
-d 指定用戶家目錄 #useradd -d /home/balir user5,如果該目錄已經存在的情況,不會複製默認文件 (默認配置文件在 /etc/skel中)
-s 指定用戶默認shell
-G GROUP1,GROUP2 指明用戶的附加組,使用逗號隔開,組必須事先存在
-D 表示修改用戶默認值設定,/etc/default/useradd文件中,以後新增的用戶就會按照默認值來設置默認
-r 創建系統用戶
Centos6 ID<500
Centos7 ID<1000
定義用戶的創建時的默認信息
#cat /etc/login.defs 例如默認UID GID等等
#cat /etc/default/useradd 表示創建用戶默認指定的用戶信息 例如家目錄、bash等等
【練習】
1.創建用戶gentoo,附加組爲distro和linux ,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution"
#groupadd distro
#groupadd linux
#useradd -c "Gentoo Distribution" -s /bin/csh -G distro,linux gentoo
Linux組管理
組創建:groupadd GroupNAME
#groupadd GROUPNAME
-g GID 指明GID號,
-r 創建系統組
Centos6 ID<500
Centos7 ID<1000
創建系統組
#groupadd -r mysql
#tail -l /etc/group
指定組id
#groupadd -r -g 121 mysql
#tail -1 /etc/group
id與su命令
查看用戶的相關ID信息 id命令
#id
查看指定用戶的id
#id -u USERNAME
查看指定用戶的基本組
#id -g USERNAME
查看指定用戶的附加組
#id -G USERNAME
#id -n Name
切換用戶或以其他用戶身份執行命令:su
su [option…][-] [user [args…..]]
切換用戶的方式
su UserName 非登錄試切換,即不會讀取目標用戶的配置文件
su - UserName 登錄試切換,會讀取目標用戶的配置文件,完全切換
Note : root 使用su命令其他用戶無須密碼,非root用戶切換時需要密碼
su使用其他用戶只需命令
#su - UserName -c 'COMMAND'
命令只需結束後回到當前用戶
選項
-l : "su -l UserName"表示登錄試切換
usermod命令用戶屬性修改
usermod命令
-u UID 指定新UID
-g GID 指定新GID
-G 指定新的附加組,但是原來的附加組會被覆蓋,如果需要保留原來的附加組,需要-a選項表示追加
-s SHELL 修改默認shell
-c 'COMMENT' ,修改註釋信息
-d HOME:修改新的家目錄,原有的家目錄中的文件不會移動到新的家目錄下,如果需要同時移動到新的家目錄下,需要同時使用-m選項
-l 表示修改用戶的用戶名
-L 鎖定指定用戶 只有管理員有權限
-U 解鎖指定用戶 只有管理員有權限
-e YYYY-MM-DD 指定用戶賬號過期日期
-f INACTIVE 指定非活動期限
#usermod -d /home/newhome UserName
#usermod -L UserName 查看結果是密碼之前加!號cat /etc/shadow
passwd命令
給用戶添加密碼:passwd
#passwd UserName 修改指定用戶的密碼,只有root有權限
#passwd 修改當前用戶的密碼,任何用戶如果沒有密碼是無法修改密碼
常用選項
-l 鎖定指定用戶
-u 解鎖指定用戶
-n mindays 指定最短使用期限
-x maxdays 指定最大使用期限
-w warndays 提前多少天警告
-i inactivedays 非活動期限
--stdin 從標準輸入接手用戶密碼
#echo"redhat" | passwd --stdin UserName
Note: /dev/null ,bint buckets 特殊設備,無限吞
/dev/zero 無限吐
userdel刪除用戶
userdel命令
userdel [option…] UserName
#userdel UserName 不刪除用戶家目錄
#userdel UserName 同時刪除用戶家目錄
groupmod,groupdel,gpasswd,newgrp
groupmod命令修改組屬性
groupmod
-n group_name 修改組的新名字
-g GID 修改新的GID
groupdel命令
#groupdelGroup_name
給組新增密碼
gpasswd命令
gpasswd [option…]
#gpasswd Group_Nanme
-a 添加用戶至指定組
#gpasswd -a UserName Group
-d 將用戶移除指定組
#gpasswd -d UserName Group
-A UserName1,UserName2……設置有管理權限的用戶列表,設置某個用戶在改組有管理員權限
newgrp命令
如果用戶本屬於此組,則需要組密碼
newgrp Group_Name
pwck 命令檢查用戶是否有效
#pwck /etc/shadow
chage命令更改用戶密碼過期信息
chage命令
-d 設置用戶最近一次修改密碼的時間
-E 修改用戶賬戶號的過期期限
-I 修改用戶的非活動期限
-m 修改密碼的最小使用天數
-M 修改密碼的最大使用天數
-W 修改用戶的警告期限
其他命令
chfn chsh finger
#chfn User_Name 設置用戶的註釋信息
#finger User_Name 查看用戶的註釋信息,需要安裝
#chsh User_Name 修改用戶的默認shell