用户配置文件

用户信息文件

/etc/passwd

  • 第1字段:用户名

  • 第2字段:密码标志(x)

  • 第3字段:UID(用户id)

    • 0:超级用户
  • 1-499系统用户(伪用户)

  • 500-65535:普通用户。如果把uid改成0,则会变成管理员用户。

  • 第4字段:GID(用户初始组ID)

  • 第5字段:(用户说明)

  • 第6字段:家目录

    • 普通用户:/home/用户名
  • 超级用户:/root

  • 第7字段:登录之后的shell

    • root和普通用户的shell都是/bin/bash
  • 伪用户的shell是/sbin/nologin

  • 如果要暂时禁用一个用户,可以将shell改成/sbin/nologin

影子文件

/etc/shadow

  • 第1字段:用户名

  • 第2字段:加密密码

    • 加密算法升级为sha512散列加密算法
  • 如果密码位是!!*代表没有密码,不能登录

  • 第3字段:密码最后一次修改日期

    • 使用1970年1月1日作为标准时间,每过一天时间戳加1
  • 第4字段:两次密码的修改间隔时间(和第3字段相比),即多少天之后才能修改密码

  • 第5字段:密码有效期(和第3字段相比)

  • 第6字段:密码修改到期前的警告天数(和第5字段相比)

  • 第7字段:密码过期后的宽限天数(和第5字段相比)

    • 0:代表密码过期后立即失效
  • -1代表密码永远不会失效

  • 第8字段:账号失效时间

    • 要用时间戳表示
  • 第9字段:保留

组信息文件

/etc/group

  • 第1字段:组名

  • 第2字段:组密码标志

  • 第3字段:GID

  • 第4字段:组中附加用户

组密码文件/etc/gshadow

用户管理相关文件

用户的家目录

  • 普通用户:/home/用户名,所有者和所属组都是此用户,权限是700

  • 超级用户:/root,所有者和所属组都是root用户,权限是550

用户的邮箱

  • /var/spool/mail/用户名

用户模板位置

用户在新建完成之后家目录下会出现的文件,都是从这个目录里面copy过来的

  • /etc/skel

用户管理命令

查看登录用户信息

who

查看登录用户信息

/usr/bin/who

执行权限:所有用户

语法
1
who
  • tty表示本地终端

  • pts表示远程终端

w

查看登录用户详细信息

/usr/bin/w

语法
1
w

用户添加命令useradd

添加用户

语法

1
useradd [选项] 用户名
  • -uUID:手工指定用户的UID

  • -d家目录:手工指定用户的家目录

  • -c用户说明:手工指定用户的说明

  • -g组名:手工指定用户的初始组

  • -G组名:指定用户的附加组

  • -sShell:手工指定用户的登录shell,默认是/bin/bash

用户默认值文件

/etc/default/useradd

  • GROUP=100 用户默认组

  • HOME=/home 用户家目录

  • INACTIVE=-1 密码过期宽限天数,shadow文件第7字段

  • EXPIRE= 密码失效时8

  • SHELL=/bin/bash 默认shell

  • SKEL=/etc/skel 模板目录

  • CREATE_MAIL_SPOOL=yes 是否建立邮箱

/etc/login.defs

  • PASS_MAX_DAYS 99999 密码有效期

  • PASS_MIN_DAYS 0 密码修改间隔

  • PASS_MIN_LEN 5 密码最小5位

  • PASS_WARN_AGE 7 密码到期警告

  • UID_MIN 500 最小和最大UID范围

  • GID_MAX 60000

  • ENCRYPT_METHOD SHA512 加密模式

修改用户密码passwd

设置用户密码

语法

1
passwd [选项] 用户名
  • -S查询用户密码的密码状态。仅root用户可以用

  • -l暂时锁定用户。仅root用户可用。

  • -u解锁用户。仅root用户可用。

  • --stdin可以通过管道符输出的数据作为用户的密码。

示例

1
passwd        # 给当前用户设置密码

修改用户信息usermod

用于修改用户信息

  • 选项与``useradd`的一样,只不过这个是用来修改的

修改用户密码状态chage

修改用户密码状态

语法

1
chage [选项] 用户名
  • -l列出用户的详细密码

  • -d修改密码最后一次更改日期

  • -m两次密码修改间隔

  • -M密码有效期

  • -W密码过期前警告天数

  • -I密码过期后宽限天数

  • -E账号失效时间

示例

1
chage -d 0 user01 # 要求这个用户一登录必须修改密码

删除用户userdel

语法

1
userdel [-r] 用户名
  • -r删除用户的同时删除用户家目录

查看用户id

1
id 用户名

用户切换命令su

语法

1
su [选项] 用户名
  • -选项只使用-代表连带用户的环境变量一切切换,切换用户的时候必须带,如su - root

  • -c仅执行一次命令,而不切换用户身份,如su - root -c 'useradd user02'

用户组管理命令

添加用户组

语法

1
groupadd [选项] 组名
  • -gGID:指定组ID

修改用户组

语法

1
groupmod [选项] 组名
  • -gGID:修改组ID

  • -n新组名:修改组名

示例

1
groupmod -n testgrp group1        # 把组名group1修改为testgrp

删除用户组

1
groupdel 组名