一、概述

Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的

UID :用户标识

GID :用户群组标识

(1)用户账号常见分类

  • 超级用户:root uid=0 gid=0
  • 普通用户: 只能调用具备权限的文件,没有足够的权限无法调用。又可分为两大类:
  • 系统账号 1=< uid < 500 仅提供给Linux 系统本身使用。在某些软件执行的时候需要你提供一个普通用户类型的账号称为系统账号 ( System Account ),不能用于登陆或管理系统。
  • 真实用户 uid >= 500 为了让其他人登录系统使用的,做一般权限的系统管理

注:nobody它的UID\GID是65534

(2)用户组常见分类

  • 超级用户群组: root gid=0
  • 系统群组: 与系统账号一样,系统群组是给 Linux 系统本身,或是某个软件所使用
  • 用户自定义组:除了上述的群组外其余的所有群组,皆是由管理者自行定义,因此我们把这些群组称之为用户自定义组
  • 用户私有群组UPG, User Private Group)与用户账号名称相同,且为用户的主要群组。建立新的用户账号时,Linux 会自动建立该用户的私有群组

(3)用户账号文件

1、/etc/passwd
#保存用户名称、宿主目录、登陆 shell 等基本信息,一行对应一个用户的账号记录
deploy:   	 x    :1000:1000:        :/home/deploy:/bin/bash
用户名   密码占位符	 	uid  gid		备注    用户宿主目录    登陆的shell (/sbin/nologin 为不能登陆)

2、/etc/shadow
#保存用户的密码、账号有效期等信息。一行对应一个用户的密码
deploy:2N7FLqjM7uM8UyumVfVmVvJ:18841:0:99999:7:::
#字段说明
- 用户名
- 密文
- 账号上次修改时间距1970-01-01过去多少天
- 距上次密码修改起多少天内不能在此修改密码。0 为随时可修改
- 密码在修改后多少天必须重新修改密码。99999 表示永久可用
- 强制修改密码的提醒时间
- 空:密码过期多少天后账号禁用
- 空:密码过期日期。若设置则显示过期时间距1970-01-01 多少天

/etc/group		#账户信息
/etc/gshadow	#存储组密码及密码额外功能
/etc/default/useradd	#户创建的默认值。
/etc/skel/		#含默认文件的目录。新建用户账号时,从此目录复制初始配置文件
							#~/.bash_profile		#每次登陆时执行
              #~/.bashrc					#每次进入新bash环境执行
              #~/.bash_logout			#每次退出登陆是执行
/etc/subgid		#每个用户所属gid
/etc/subuid		#每个用户所属uid      
/etc/login.defs		#Shadow 密码套件配置

二、用户管理

1、添加用户账号

useradd
用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -c, --comment COMMENT         #添加备注
  -d, --home-dir HOME_DIR       #新账户的主目录,缺省默认为/home/用户名
  -e, --expiredate EXPIRE_DATE   #指定账号过期时间
  -g, --gid GROUP               #新账户主组的名称或 gid
  -G, --groups GROUPS   				#新账户的附加组的名称或 gid
  -m, --create-home     				#创建用户的主目录
  -M, --no-create-home          #不创建用户的主目录
  -p, --password PASSWORD       #加密后的新账户密码
  -r, --system                  创建一个系统账户
  -s, --shell SHELL             #新账户的登录 shell
  -u, --uid UID                 #指定 uid

2、设置/更改用户密码

 passwd [选项...] <帐号名称>
  -k, --keep-tokens       保持身份验证令牌不过期
  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
  -l, --lock              锁定指名帐户的密码(仅限 root 用户)
  -u, --unlock            解锁指名账户的密码(仅限 root 用户)
  -e, --expire            终止指名帐户的密码(仅限 root 用户)
  -f, --force             强制执行操作
  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)

3、修改用户属性

usermod [选项] 登录

选项:
  -l, --login LOGIN             #新的登录名称
  -L, --lock                    #锁定用户帐号
  -U, --unlock                  #解锁用户帐号
  #其他选项参考useradd

4、删除用户账号

userdel [选项] 登录
  -r, --remove                  删除主目录和邮件池

5、添加组

groupadd [选项] 组
-g, --gid GID                 为新组使用 GID

6、删除组

groupdel [选项] 组

7、查看/修改密码有效期

chage [选项] 用户名
  -m	设置密码修改的最小天数
  -M	设置密码修改的最大天数
  -d	设置密码最后修改日期
  -I	设置密码过期后,锁定账号的天数
  -E	设置账号过期日期,0=立即过期,-1=永不过期
  -W	设置密码过期前的警告天数
  -l	查看指定用户的相关信息

三、查询用户或组命令

#查询用户身份标识
id 用户名
-u	只显示uid
-g	只显示gid

#查询当前登录用户
whoami

#查询linux系统中登陆的所有用户
w

#查询linux系统中登陆的所有用户,与 w 命令类似
who