用户管理

131 阅读7分钟

 用户和用户组概述

用户

种类

  • 超级管理员: 拥有最高权限的账户(默认叫做root)可以正常登录 人可以使用
  • 普通用户: 权限受限的用户 可以正常登录 人可以使用
  • 程序用户: 不可以正常登录,只给程序使用,人不能用

系统启动的时候, 没有登录用户,
程序用户,专门给程序使用的用户,无需登录,直接启动程序
程序用户是给程序使用 , 普通用户超级管理员用户是给人使用
不登录人使用的用户,只运行一些程序用户
只给运行的程序分配 程序用户

用户组

种类

  • 基本组: 一个用户一定要有一个基本组 ,且只有一个
  • 附加组: 一个用户可以没有附加组,一个用户可以有多个附加组

分别基本组和 附加组?
[root@localhost data]#id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan),0(root)
用户排在第一个的组是基本组,后面的都是附加组

 用户账号管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

/etc/passwd

存放用户信息

行内字段含义:

[root@localhost ~]# head -n1 /etc/passwd    //查看passwd文件头1行
root:x:0:0:root:/root:/bin/bash

冒号(:)作为分隔符,将每行分为了7段

  • 第一字段:用户名
  • 第二字段:密码占位符
  • 第三字段:uid
  • 第四字段:组id
  • 第五字段:备注信息
  • 第六字段:家目录位置
  • 第七字段:默认shell程序

/etc/shadow

存放密码信息

行内字段含义:

[root@localhost ~]# tail -n1 /etc/shadow   //查看shadow文件最后一行
jlx:$6$732cCyCHqHnTfu8S$yIt47YNag7kl1VO539g1W0yiJWa9aFDehq6lSQDQPkN1j.q/qSgQr8r9Qaj4LFw2OLe8N2hcu7fBHxxxe3ad81::0:99999:7:::

每个字段用冒号隔开

  • 第一字段:用户名
  • 第二字段:加密后的密码 如果为 * !! 无法登录
  • 第三字段:上一次修改密码时间,数字的含义为 从1970-1-1 到改密码的时间 一共经历多少天
  • 第四字段:最小修改密码间隔时间 如果是0 可以随意修改, 7代表7 天后才可以修改
  • 第五字段: 密码有效期 默认99999天 273年,设置为 7 代表7天要求你重新设置密码
  • 第六字段:密码到期提醒时间 设置为7 代表密码到期前7天会提示你
  • 第七字段:密码过期后的宽限天数 设置为10 表示密码到期后还可以使用10天
  • 第八字段:用户失效时间 同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间 到期后无法登录
  • 第九字段:保留字段

添加用户 useradd

格式:

 useradd [选项].... 用户名

选项

选项说明
-u指定用户的UID,要求该UID未被其他用户使用
-d指定用户的家目录
-e指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g指定用户的基本组
-G指定用户的附加组
-M不建立家目录
-s指定用户的登录shell
-r建立系统用户

示例

-u 指定用户的UID

[root@localhost ~]# useradd -u 2000 pp    //添加pp用户,并指定UID为2000
[root@localhost ~]# tail -n1 /etc/passwd     //查看passwd中pp的信息
pp:x:2000:2000::/home/pp:/bin/bash

-d 指定用户的家目录

[root@localhost ~]# useradd -d /home/test/ 111   //创建用户,并指定家目录
[root@localhost ~]# tail -n1 /etc/passwd
111:x:2001:2001::/home/test/:/bin/bash

-e 指定用户的账户失效时间

[root@localhost ~]# useradd -e 2022-7-31 222     //创建用户并指定账户失效时间为2022年6月30日
[root@localhost ~]# tail -n1 /etc/shadow      //查看shadow文件,19173表示距离1970年1月1日的19204天
222:!!:19204:0:99999:7::19204:

-g 指定用户基本组

[root@localhost ~]# useradd -g jlx 333     //创建用户并指定用户基本组为jlx组
[root@localhost ~]# id 333               //查看用户信息,基本组为jlx组
uid=2003(333) gid=1000(jlx) 组=1000(jlx)

-G 指定用户附加组

[root@localhost ~]# useradd -G jlx 444      //创建用户并指定用户附加组为jlx组
[root@localhost ~]# id 444               //查看用户信息,附加组为jlx组
uid=2004(444) gid=2004(444) 组=2004(444),1000(jlx)

-M 不建立家目录

[root@localhost ~]# useradd -M 555       //创建用户且不建立家目录
[root@localhost ~]# ls /home/          //查看/home下没有user08的目录
222  333  444  jlx  pp  test

-s 指定用户的登录shell

[root@localhost ~]# useradd -s /sbin/nologin apache    //创建用户并指定登录shell为/sbin/nologin,该用户无法登录系统
[root@localhost ~]# tail -n1 /etc/passwd   
apache:x:2006:2006::/home/apache:/sbin/nologin

修改密码 passwd

root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。

普通用户只能执行单独的passwd命令修改自己的密码。

格式

passwd 用户名

选项

选项作用
-d清空指定用户的密码,无需使用密码直接登录
-l锁定用户密码, 不让登录
-u解锁用户密码
-S查看用户账户的状态(是否被锁定)

示例:

设置或修改用户密码

[root@localhost ~]# passwd pp      
更改用户 pp 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

-d 清除用户密码,使用用户名可直接登录

[root@localhost ~]# passwd -d pp    //清除nancy用户的密码
清除用户的密码 pp。
passwd: 操作成功

锁定和解锁用户

[root@localhost ~]# passwd -l pp    //锁定用户密码,锁定后用户无法登陆
锁定用户 pp 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u pp     //解锁用户,因pp无密码,系统提示不安全,必须使用-f才能解锁
解锁用户 pp 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost ~]# passwd -S pp     //查看pp用户状态,仍为锁定状态
pp LK 2022-07-31 0 99999 7 -1 (密码已被锁定。)

usermod 修改已有用户的属性

格式

usermod [选项]... 用户名

选项:

选项作用
-l更改用户的登录名称
-L锁定用户
-U解锁用户
-u指定的UID号
-d指定家目录
-e指定用户失效时间,可使用YYYY–MM-DD的日期格式
-g指定基本组
-G指定附加组
-s指定默认的登录Shell
M不建立家目录

示例

[root@localhost ~]# usermod -l lisi pp     //将pp的用户名改成lisi
[root@localhost ~]# usermod -L lisi    //锁定用户lisi
[root@localhost ~]# passwd -S lisi     //查看lisi状态,已被锁定
lisi LK 2022-07-31 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U lisi   //解锁用户lisi
usermod:解锁用户密码将产生没有密码的账户。
您应该使用 usermod -p 设置密码并解锁用户密码。

删除用户 userdel

格式

userdel [-r] 用户名(-r 连家目录一起删除)

示例

[root@localhost ~]# userdel 333    //删除用户333,不加-r会保留家目录
[root@localhost ~]# ls /home/   //查看/home下333的家目录仍存在
222  333  444  apache  jlx  pp  test
[root@localhost ~]# userdel -r 222     //删除用户222及其家目录
[root@localhost ~]# ls /home/       //查看/home下222的家目录不存在
333  444  apache  jlx  pp  test