用户管理
用户信息
存放信息:etc/passwd
--内容--
第一列:username(login name)
第二列:password列,已移除,用x表示,password information 转移到 /etc/shadow 文件
第三列:UID(user ID)
第四列:private group ID(GID,所属组的ID),任何用户都要属于一个用户组
第五列:描述信息
第六列:用户家目录信息
第七列:用户的登录shell
--命令--
id 查看用户的命令,该命令的信息是从/etc/passwd中调取
useradd 添加用户 (-u -d -s)
userdel 删除用户 (-r)
usermod(modify修改) 修改用户 (-u -d -s)
用户组信息
存放信息:/etc/group
--内容--
primary group(主要组)
private group(私有组)
attached group(附加组)
第一列:组名
第二列:组密码,x表示密码存放在 /etc/gshadow 文件里
第三列:GID(group ID)
第四列:组成员
--命令--
groupadd 添加组 (-g)
groupdel 删除组
groupmod 修改组 (-g)
grep group_name /etc/group 查看组
用户组和用户的关联
任何用户都必需依赖用户组才能存在
--创建用户时,不指定用户组(primary group)--
系统会为该用户创建一个同名的组,这个组叫该用户的 private group (私有组)
> private group:保护用户,让用户有一个组
> private group:一定是没有指定 组名 或 组号,如果 -g 3000 指定了组号,但是组名称和用户相同. 这个不是 private group
如果你创建用户时,指定了该用户的所属组,那么该用户就没有私有组
--/etc/passwd--
> 第四列(GID):表示该用户属于的 primary group (主要组),
> 一个用户可以属于很多组,记录在/etc/password的GID就是 primary group (主要组)
所以:一个用户的 private group 又可以是用户的 primary group
--attached group (附加组)--
一个用户只可属于一个 primary group ,但是可以同时属于多个 attached group.
附加组:理论上可以将任一用户组当作一个用户的附加组,但是我们要尽可能的不将私有组作为某个用户的附加组
> 除了GID(primary group)以为的组,都是 attached group
--命令--
-创建用户时,添加主要组-
useradd -g 指定添加的是该用户的 primary group
useradd username -g primary group
-创建用户时,添加附加组-
useradd -G 指定添加的是该用户的 attated group
useradd username -G attached group
--修改用户组--
usermod username -G attached group / -g primary group
usermod -G : 该参数有限制,只能添加一个附加组,如果已经有附加组,则进行覆盖
> 修改所有的附加组为某个附加组
usermod -aG : 使用该参数时,就可以添加多个附加组,且该参数的 顺序严格
gpasswd -a username group : 将某个用户添加到 某个组 中,该组为该用户的 attached group
gpasswd -d username group : 将某个用户从 某个组 中删除
用户密码
存放信息:/etc/shadow
--内容--
第一列:username
第二列:encrypt password,通过算法生成,算法在 /etc/login.defs 中有指定
第三列:上次修改密码的时间
第四列:密码最小有效期
> 如果是0,表示可以无期限的修改密码
> 如果是1,表示修改密码后,需使用该密码1天才能再次修改
第五列:密码最大有效期
> 默认是99999,表示密码在99999后就会失效
> 如果该数字是3,就表示密码在3天后过期,如果你想继续使用,必须在到期之前进行修改(在没配置其他条件时)
第六列:密码到期前n天,弹出警告的时间信息
> 如果数字为7,表示密码过期7天前会发出警告,告诉你密码即将过期
第七列:用户密码到期后宽限日期
> 如果数字是2,表示密码到期后,你还可以使用该密码2天,如果2天到了,没有修改或更新密码,则密码失效
第八列:账号失效日期
> 该日期为账号失效日期,如果到该日期后,账号直接失效,不可登录
第九列:保留
--命令--
--passwd(password)--
相比chage,提供了 锁定/解锁用户、设置/删除用户密码 的功能
passwd username : username 设置 password
passwd -d username : 删除用户的 password
passwd -l(lock) : 锁定用户密码,该用户除了root以为任何用户都无法切换到锁定账户
passwd -u(unlock) : 用户密码解锁
passwd -n 3 -x 10 -w 5 -i 2 username : 设置账户限制
> 该用户的 最小密码有效期3天 最大密码有效期10天 密码过期前5天警告 密码到期后宽限日期为2天
passwd -e username : 使用户的密码过期,让用户的 上次修改密码的时间变为 0 .
> 当上次修改密码时间的字段变为0时,表示该用户下次登录必须修改密码(该密码有复杂度要求)
> 但在 windows server 中,创建完的用户,默认该值就是 0
root的passwd可以修改任意用户的密码,而普通用户的passwd只能修改自己的密码
passwd:普通用户修改自身密码
passwd --stdin
echo 1 | passwd --stdin username : 将 1 作为 username 的密码
--chage(change age)--
相比于passwd更灵活的修改所有的密码信息
chage -d 1000 -m 3 -M 30 -W 5 -I 2 -E 2025-1-1 username
> 上一次修改的时间距离1970-1-1已过去1000,最小密码有效期3天,最大密码有效期30天,密码过期前5天警告
> 宽限日期为2天,账户失效时间为2025-1-1
一般来说,上次的修改日期,要么不修改,要么改为0,表示该用户下次登录必须修改密码(该密码有复杂度要求)
用户组密码
存放信息:/etc/gshadow
--内容--
第二列:组密码
默认的组和默认的用户一样没有密码
--命令--
gpasswd group:给用户组添加密码
> 组密码的作用是让那些不属于该组的用户,可以切换到该组的一种方式,只要提供正确的组密码,即可切换成功。
newgrp groupname(切换所属组):能让用户临时切换到另一个组,切换成功后,该用户创建的文件都属于切换后的组
newgrp 会开启一个 bash