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, 系统主要通过UID识别用户, 系统用户0-500, 其他用户>500, 将UID手动改成0, 该用户会变成超级管理员)
  • GID(用户组id, 系统通过GID识别该用户初始组)
  • 用户描述
  • 用户家目录
  • 用户登录shell, /sbin/nologin, 不允许登陆

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

用户密码配置文件为/etc/shadow, 权限为000, 只有root能对其进行修改

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::

各字段含义:

  • 用户名
  • 加密后的密码, 如果密码为是*或者!!, 表示没有密码, 不能登录
  • 添加的时间戳, 单位天, 以1970-01-01为起始时间, 到添加用户时所间隔的天数
  • 两次密码修改的间隔时间, 和第三个字段相比较, 0表示没有间隔, 设置为10, 表示10天之内不能改密码, 10天之后才能改
  • 密码有效期, 和第三个字段相比, 99999天约等于200多年, 可以理解为无限制, 如过设置为20, 大于20天没有修改密码, 就不让其登陆(和第六, 第七字段相关)
  • 密码修改时间到期前的提示天数, 如uar用户, 提前七天给提示, 让其修改密码
  • 密码过期后的宽限天数, 0和不设表示密码过期后, 立即失效, -1永久生效, 如uar用户, 延后五天给提示, 让其修改密码
  • 账号失效时间, 时间戳表示
  • 保留字段

3. 用户组配置文件

用户组配置文件为/etc/group

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

各字段含义

  • 组名
  • 组密码(x占位符, 对应组密码文件/etc/gshadow)
  • 组id
  • 组附加用户(扩展组)

4. 用户管理相关文件

  • 用户家目录(700, 添加用户自动生成)
# 添加用户生成, 生成文件模板目录为/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), 添加用户时, 默认在用户家目录创建一下文件
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
  • 添加用户时会在/etc//var/spool/mail创建一个同户名同名的邮箱文件

二. 用户管理命令

1. 用户添加命令useradd

  • useradd命令格式 useradd [选项] 用户名
    • -u UID: 指定用户UID
    • -d 家目录: 指定用户家目录
    • -c 用户说明
    • -g 组名: 指定用户初始组(不建议更改)
    • -G 组名: 指定用户扩展组(多个用逗号分隔)
    • -s shell: 手工指定登陆shell

执行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用户的扩展组
uar:x:510:hello
hello:x:666:

[root@localhost ~]# grep hello /etc/shadow
hello:!!:17537:0:99999:7:::
  • 用户默认配置文件/etc/default/useradd

    • GROUP=100 : 不生效
    • HOME=/home : 家目录
    • INACTIVE=-1 : 密码过期宽限天数(shadow第七字段)
    • EXPIRE= : 密码失效时间(shadow第八字段)
    • SHELL=/bin/bash : 初始登陆shell
    • SKEL=/etc/skel: 默认模板目录
    • CREATE_MAIL_SPOOL=yes: 是否建立邮箱
  • /etc/login.defs

    • PASS_MAX_DAYS 99999 密码有效时间(第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. 设定密码passwd

格式 passwd [选项] [用户名]

  • 用户名
    • 不加用户名, 是给当前登录用户设定密码
    • 加用户名, 给指定用户设定密码, 超级管理员可用
  • 选项
    -S: 查询用户密码状态
    -l: 暂时锁定用户
    -u: 解锁用户
    --stdin: 通过管道符给用户设定密码(shell脚本批量给用户初始化密码)

示例:

[root@localhost ~]# passwd -S hello
hello PS 2018-01-06 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)

[root@localhost ~]# passwd -l hello
锁定用户 hello 的密码 。
passwd: 操作成功

#锁定密码, 其实就是在密码前加入 '!!'
[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设定密码
[root@localhost ~]# echo 1234 | passwd --stdin hello
更改用户 hello 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# grep hello /etc/shadow
hello:$6$WqbpYyC8$Er8ytu9jGFvXplyBfim32SRMb.e8EspoBJKRdiH5sl8VhsuEBjt8ZmQGtIsupU.5hh42SNdbNvssUCv.Z75A00:17537:0:99999:7:::

3. 修改用户信息 usermod

useradd是添加新用户, usermod是修改已经存在的用户

格式 usermod [选项] 用户名

  • 选项
    • -u UID: 修改用户的UID
    • -c 用户说明: 修改用户的说明信息
    • -G 组名: 修改用的附加组
    • -L 锁定用户
    • -U 解锁用户锁定

4. 修改用户密码状态 chage

格式 chage [选项] 用户名

  • 选项:
    • -l 列出用户的详细密码状态
    • -d 天数, 修改密码最后一次更改日期(shadow3字段)
    • -m 天数: 两次密码修改间隔(4字段)
    • -M 天数: 密码有效期(5字段)
    • -W 天数: 密码过期前警告天数(6字段)
    • -I 天数: 密码过期后宽限天数(7字段)
    • -E 天数: 账号失效时间(8字段)

示例:
chage -d 0 hello
这个命令时把密码日期归0为(shadow第三字段), 用户已登录, 就要提示其修改密码, 在shell脚本中, 可以给很多用户设定一个初始密码, 然后将其密码修改日期归档为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 强制)
为 hello 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:

5 删除用户

userdel [选项] 用户名

  • 选项
    -r : 删除用户的同时, 将用户家目录也删除掉
  • 手动删除用户, 需要做如下操作:
    • vi /etc/passwd, 将用户删掉
    • vi /etc/shadow, 将密码删除, wq!强制保存退出
    • vi /etc/group, 将用户组删掉
    • vi /etc/gshadow, 将用户组密码删掉
    • rm -rf /var/spool/mail/hello删掉
    • rm -rf /home/hello家目录删掉
  • id , 查看当前用户信息
[hello@localhost ~]$ id
uid=666(hello) gid=666(hello) 组=666(hello),0(root),510(uar)

6 切换用户身份

格式: su [选项] 用户名

  • 选项
    • -: 选项'-'代表用户切换时连带用户的环境变量一起切换, 推荐加su - hello, 不要直接su hello, 如果直接su hello, 自己还会停留在hello目录里, 在退出hello家目录, 就进不来了, 此处有疑问
    • -c: 仅执行一次命令, 而不切换用户身份su - root -c "useradd usertest"
    • su root, 切换到root, 查看env, 发现用户环境变量并没有发生改变, 不要这样写, 应该写成su - root

三. 用户组管理

1.添加用户组

groupadd [选项] 组名

  • 选项
    • -g GID: 执行组ID

2. 修改用户组

groupmod [选项] 组名

  • 选项
    • -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
# 会将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是否存在没关系
[root@localhost ~]# groupdel gtest

4. 把用户添加入组或者从组中删除

gpasswd 选项 组名

  • 选项:
    • -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:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容