Linux用戶管理

一. 用戶配置文件

用戶配置文件主要包括

  • /etc/passwd 用戶信息文件
  • /etc/shadow 用戶密碼文件
  • /etc/group 用戶組信息文件
  • /etc/gshadow 用戶組密碼文件

1. 用戶信息文件

用戶信息配置文件為/etc/passwd, 查看如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
test:x:502:505::/home/test:/bin/bash
tony:x:503:506::/home/tony:/bin/bash
tom:x:504:507::/home/tom:/bin/bash
lw:x:505:509::/home/lw:/bin/bash
uar:x:506:510::/home/uar:/bin/bash

各字段含義:

  • 名稱
  • 密碼占位符x(配置文件在/etc/shadow)
  • UID(用戶id, 系統(tǒng)主要通過UID識(shí)別用戶, 系統(tǒng)用戶0-500, 其他用戶>500, 將UID手動(dòng)改成0, 該用戶會(huì)變成超級(jí)管理員)
  • GID(用戶組id, 系統(tǒng)通過GID識(shí)別該用戶初始組)
  • 用戶描述
  • 用戶家目錄
  • 用戶登錄shell, /sbin/nologin, 不允許登陸

2. 密碼配置文件(影子文件)

用戶密碼配置文件為/etc/shadow, 權(quán)限為000, 只有root能對(duì)其進(jìn)行修改

root:$6$AZ76b/wn$jw8/5ZnecagBeRrt3j3hLGK5aLlBuoHHH/PRBViVNwG8rvYENmdTMEXpCcEiG8/MlmkGh1ART2S/xnkrzhpbC0:17230:0:99999:7:::
bin:*:15980:0:99999:7:::
.....
uar:$6$ALNMp7A9$EMdZzzClqH0bS4M1z3KpcWNuQvY9Q1Mxivu3DF3S68il0pkxvPqEsiHZnvyV235Eetd6LY3ob9PFCYV1V9kEv.:17525:10:20:7:5::

各字段含義:

  • 用戶名
  • 加密后的密碼, 如果密碼為是*或者!!, 表示沒有密碼, 不能登錄
  • 添加的時(shí)間戳, 單位天, 以1970-01-01為起始時(shí)間, 到添加用戶時(shí)所間隔的天數(shù)
  • 兩次密碼修改的間隔時(shí)間, 和第三個(gè)字段相比較, 0表示沒有間隔, 設(shè)置為10, 表示10天之內(nèi)不能改密碼, 10天之后才能改
  • 密碼有效期, 和第三個(gè)字段相比, 99999天約等于200多年, 可以理解為無限制, 如過設(shè)置為20, 大于20天沒有修改密碼, 就不讓其登陸(和第六, 第七字段相關(guān))
  • 密碼修改時(shí)間到期前的提示天數(shù), 如uar用戶, 提前七天給提示, 讓其修改密碼
  • 密碼過期后的寬限天數(shù), 0和不設(shè)表示密碼過期后, 立即失效, -1永久生效, 如uar用戶, 延后五天給提示, 讓其修改密碼
  • 賬號(hào)失效時(shí)間, 時(shí)間戳表示
  • 保留字段

3. 用戶組配置文件

用戶組配置文件為/etc/group

root:x:0:
bin:x:1:bin,daemon
..
uar:x:510:

各字段含義

  • 組名
  • 組密碼(x占位符, 對(duì)應(yīng)組密碼文件/etc/gshadow)
  • 組id
  • 組附加用戶(擴(kuò)展組)

4. 用戶管理相關(guān)文件

  • 用戶家目錄(700, 添加用戶自動(dòng)生成)
# 添加用戶生成, 生成文件模板目錄為/etc/skel
-rw-------  1 uar  uar    78 12月 26 23:10 .bash_history
-rw-r--r--  1 uar  uar    18 7月  18 2013 .bash_logout
-rw-r--r--  1 uar  uar   176 7月  18 2013 .bash_profile
-rw-r--r--  1 uar  uar   124 7月  18 2013 .bashrc
  • 用戶家目錄模板目錄(/etc/skel), 添加用戶時(shí), 默認(rèn)在用戶家目錄創(chuàng)建一下文件
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
  • 添加用戶時(shí)會(huì)在/etc//var/spool/mail創(chuàng)建一個(gè)同戶名同名的郵箱文件

二. 用戶管理命令

1. 用戶添加命令useradd

  • useradd命令格式 useradd [選項(xiàng)] 用戶名
    • -u UID: 指定用戶UID
    • -d 家目錄: 指定用戶家目錄
    • -c 用戶說明
    • -g 組名: 指定用戶初始組(不建議更改)
    • -G 組名: 指定用戶擴(kuò)展組(多個(gè)用逗號(hào)分隔)
    • -s shell: 手工指定登陸shell

執(zhí)行useradd -u 666 -d /hello -c "helloworld" -G root,uar -s /bin/bash hello

[root@localhost ~]# ll -d /hello/
drwx------ 3 hello hello 4096 1月   6 10:18 /hello/

[root@localhost ~]# grep hello /etc/passwd
hello:x:666:666:helloworld:/hello:/bin/bash

[root@localhost ~]# grep hello /etc/group
root:x:0:hello #hello用戶的擴(kuò)展組
uar:x:510:hello
hello:x:666:

[root@localhost ~]# grep hello /etc/shadow
hello:!!:17537:0:99999:7:::
  • 用戶默認(rèn)配置文件/etc/default/useradd

    • GROUP=100 : 不生效
    • HOME=/home : 家目錄
    • INACTIVE=-1 : 密碼過期寬限天數(shù)(shadow第七字段)
    • EXPIRE= : 密碼失效時(shí)間(shadow第八字段)
    • SHELL=/bin/bash : 初始登陸shell
    • SKEL=/etc/skel: 默認(rèn)模板目錄
    • CREATE_MAIL_SPOOL=yes: 是否建立郵箱
  • /etc/login.defs

    • PASS_MAX_DAYS 99999 密碼有效時(shí)間(第5字段)
    • PASS_MIN_DAYS 0 密碼修改間隔(第4字段)
    • PASS_MIN_LEN 5 密碼最小5位(不生效)
    • PASS_WARN_AGE 密碼到期警告(第6字段)
    • UID_MIN 500 最小UID范圍
    • UID_MAX 60000
    • UID_MIN 500
    • GID_MAX 60000
    • ENCRYPT_METHOD SHA512 加密算法

2. 設(shè)定密碼passwd

格式 passwd [選項(xiàng)] [用戶名]

  • 用戶名
    • 不加用戶名, 是給當(dāng)前登錄用戶設(shè)定密碼
    • 加用戶名, 給指定用戶設(shè)定密碼, 超級(jí)管理員可用
  • 選項(xiàng)
    -S: 查詢用戶密碼狀態(tài)
    -l: 暫時(shí)鎖定用戶
    -u: 解鎖用戶
    --stdin: 通過管道符給用戶設(shè)定密碼(shell腳本批量給用戶初始化密碼)

示例:

[root@localhost ~]# passwd -S hello
hello PS 2018-01-06 0 99999 7 -1 (密碼已設(shè)置带饱,使用 SHA512 加密毡代。)

[root@localhost ~]# passwd -l hello
鎖定用戶 hello 的密碼 。
passwd: 操作成功

#鎖定密碼, 其實(shí)就是在密碼前加入 '!!'
[root@localhost ~]# grep hello /etc/shadow
hello:!!$6$hYvSf3tE$66xZYlCTuTLdGa7RtFXZUVfx1GOgseUSwbmb1sTa3uzgPa.a5Iv6RhJCM0zkUlqE3PwvBoeYoFVv5Q4Ln4JA61:17537:0:99999:7:::

#解鎖用戶, 就是移除密碼前的'!!'
[root@localhost ~]# passwd -u hello
解鎖用戶 hello 的密碼 勺疼。
passwd: 操作成功

[root@localhost ~]# grep hello /etc/shadow
hello:$6$hYvSf3tE$66xZYlCTuTLdGa7RtFXZUVfx1GOgseUSwbmb1sTa3uzgPa.a5Iv6RhJCM0zkUlqE3PwvBoeYoFVv5Q4Ln4JA61:17537:0:99999:7:::

# 使用--stdin設(shè)定密碼
[root@localhost ~]# echo 1234 | passwd --stdin hello
更改用戶 hello 的密碼 教寂。
passwd: 所有的身份驗(yàn)證令牌已經(jīng)成功更新。
[root@localhost ~]# grep hello /etc/shadow
hello:$6$WqbpYyC8$Er8ytu9jGFvXplyBfim32SRMb.e8EspoBJKRdiH5sl8VhsuEBjt8ZmQGtIsupU.5hh42SNdbNvssUCv.Z75A00:17537:0:99999:7:::

3. 修改用戶信息 usermod

useradd是添加新用戶, usermod是修改已經(jīng)存在的用戶

格式 usermod [選項(xiàng)] 用戶名

  • 選項(xiàng)
    • -u UID: 修改用戶的UID
    • -c 用戶說明: 修改用戶的說明信息
    • -G 組名: 修改用的附加組
    • -L 鎖定用戶
    • -U 解鎖用戶鎖定

4. 修改用戶密碼狀態(tài) chage

格式 chage [選項(xiàng)] 用戶名

  • 選項(xiàng):
    • -l 列出用戶的詳細(xì)密碼狀態(tài)
    • -d 天數(shù), 修改密碼最后一次更改日期(shadow3字段)
    • -m 天數(shù): 兩次密碼修改間隔(4字段)
    • -M 天數(shù): 密碼有效期(5字段)
    • -W 天數(shù): 密碼過期前警告天數(shù)(6字段)
    • -I 天數(shù): 密碼過期后寬限天數(shù)(7字段)
    • -E 天數(shù): 賬號(hào)失效時(shí)間(8字段)

示例:
chage -d 0 hello
這個(gè)命令時(shí)把密碼日期歸0為(shadow第三字段), 用戶已登錄, 就要提示其修改密碼, 在shell腳本中, 可以給很多用戶設(shè)定一個(gè)初始密碼, 然后將其密碼修改日期歸檔為0, 用戶登陸后, 必須修改密碼

[root@localhost ~]# chage -d 0 hello

# 將其第三字段改為0
[root@localhost ~]# grep hello /etc/shadow
hello:$6$WqbpYyC8$Er8ytu9jGFvXplyBfim32SRMb.e8EspoBJKRdiH5sl8VhsuEBjt8ZmQGtIsupU.5hh42SNdbNvssUCv.Z75A00:0:0:99999:7:::
[root@localhost ~]# su - uar

[uar@localhost ~]$ su - hello
密碼:
您需要立即更改密碼(root 強(qiáng)制)
為 hello 更改 STRESS 密碼恢口。
(當(dāng)前)UNIX 密碼:
新的 密碼:

5 刪除用戶

userdel [選項(xiàng)] 用戶名

  • 選項(xiàng)
    -r : 刪除用戶的同時(shí), 將用戶家目錄也刪除掉
  • 手動(dòng)刪除用戶, 需要做如下操作:
    • vi /etc/passwd, 將用戶刪掉
    • vi /etc/shadow, 將密碼刪除, wq!強(qiáng)制保存退出
    • vi /etc/group, 將用戶組刪掉
    • vi /etc/gshadow, 將用戶組密碼刪掉
    • rm -rf /var/spool/mail/hello刪掉
    • rm -rf /home/hello家目錄刪掉
  • id , 查看當(dāng)前用戶信息
[hello@localhost ~]$ id
uid=666(hello) gid=666(hello) 組=666(hello),0(root),510(uar)

6 切換用戶身份

格式: su [選項(xiàng)] 用戶名

  • 選項(xiàng)
    • -: 選項(xiàng)'-'代表用戶切換時(shí)連帶用戶的環(huán)境變量一起切換, 推薦加su - hello, 不要直接su hello, 如果直接su hello, 自己還會(huì)停留在hello目錄里, 在退出hello家目錄, 就進(jìn)不來了, 此處有疑問
    • -c: 僅執(zhí)行一次命令, 而不切換用戶身份su - root -c "useradd usertest"
    • su root, 切換到root, 查看env, 發(fā)現(xiàn)用戶環(huán)境變量并沒有發(fā)生改變, 不要這樣寫, 應(yīng)該寫成su - root

三. 用戶組管理

1.添加用戶組

groupadd [選項(xiàng)] 組名

  • 選項(xiàng)
    • -g GID: 執(zhí)行組ID

2. 修改用戶組

groupmod [選項(xiàng)] 組名

  • 選項(xiàng)
    • -g GID 修改組GID
    • -n 新組名 原始組名: 修改組名
    • `groupmod -n newgrp oldgrp

3. 刪除組

groupdel 組名

  • 如果組里有初始用戶, 就不能刪除
  • 如果組沒有初始用戶, 僅僅是附加用戶, 則不受影響, 直接刪除
[root@localhost ~]# groupadd gtest
[root@localhost ~]# grep gtest /etc/group
gtest:x:511:

[root@localhost ~]# useradd -g gtest anny
[root@localhost ~]# grep anny /etc/passwd
anny:x:507:511::/home/anny:/bin/bash

[root@localhost ~]# useradd -G gtest jack
[root@localhost ~]# grep gtest /etc/group
# 會(huì)將jack放在gtest附加組里
gtest:x:511:jack

# 如果有初始用戶, 則不能刪除
[root@localhost ~]# groupdel gtest
groupdel: cannot remove the primary group of user 'anny'

[root@localhost ~]# userdel jack
[root@localhost ~]# grep gtest /etc/group
gtest:x:511:
[root@localhost ~]# userdel anny

# 刪除anny用戶后, 再刪除gtest組, 和jack是否存在沒關(guān)系
[root@localhost ~]# groupdel gtest

4. 把用戶添加入組或者從組中刪除

gpasswd 選項(xiàng) 組名

  • 選項(xiàng):
    • -a 用戶名: 把用戶加入組
    • -d 用戶名: 把用戶從組中刪除
  • 示例:
[root@localhost ~]# gpasswd -a lw,uar gtest
gpasswd: user 'lw,uar' does not exist

[root@localhost ~]# gpasswd -a lw gtest
Adding user lw to group gtest

[root@localhost ~]# gpasswd -a uar gtest
Adding user uar to group gtest

[root@localhost ~]# grep gtest /etc/group
gtest:x:511:lw,uar

[root@localhost ~]# gpasswd -d lw gtest
Removing user lw from group gtest

[root@localhost ~]# gpasswd -d uar gtest
Removing user uar from group gtest

[root@localhost ~]# grep gtest /etc/group
gtest:x:511:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孝宗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耕肩,更是在濱河造成了極大的恐慌因妇,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猿诸,死亡現(xiàn)場(chǎng)離奇詭異婚被,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)梳虽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門址芯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窜觉,你說我怎么就攤上這事谷炸。” “怎么了禀挫?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵旬陡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我语婴,道長(zhǎng)描孟,這世上最難降的妖魔是什么驶睦? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮匿醒,結(jié)果婚禮上场航,老公的妹妹穿的比我還像新娘。我一直安慰自己廉羔,他們只是感情好溉痢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜜另,像睡著了一般适室。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上举瑰,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音蔬螟,去河邊找鬼此迅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛旧巾,可吹牛的內(nèi)容都是我干的耸序。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鲁猩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼坎怪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起廓握,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤搅窿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后隙券,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體男应,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年娱仔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沐飘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡牲迫,死狀恐怖耐朴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盹憎,我是刑警寧澤筛峭,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脚乡,受9級(jí)特大地震影響蜒滩,放射性物質(zhì)發(fā)生泄漏滨达。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一俯艰、第九天 我趴在偏房一處隱蔽的房頂上張望捡遍。 院中可真熱鬧,春花似錦竹握、人聲如沸画株。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谓传。三九已至,卻和暖如春芹关,著一層夾襖步出監(jiān)牢的瞬間续挟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工侥衬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诗祸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓轴总,卻偏偏與公主長(zhǎng)得像直颅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怀樟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容