用户和用户组管理
用户配置文件
用户信息文件
用户信息文件/etc/passwd
影子文件/etc/group
组信息文件/etc/group和组密码文件/etc/gshadow
-
在Linux中主要是通过用户配置文件来查看和修改用户信息
-
/etc/passwd
第1字段:用户名称
第2字段:密码标志(有x表示有密码)
第3字段:UID(用户ID)
0: 超级用户
1-499: 系统用户(伪用户)
500-65535: 普通用户
第4字段:GID(用户初始组ID)
第5字段:用户说明
第6字段:家目录
普通用户:/home/用户名/
超级用户:/root/
第7字段:登录之后的Shell -
初始组和附加组
每个用户都有初始组,并且只有一个。用户可以加入其它多个附加组,并拥有这些组的权限 -
Shell是什么?
Shell就是Linux的命令解释器
在/etc/passwd当中,除了标准Shell是/bin/bash外,还可以写如/sbin/nologin
影子文件
- 影子文件
/etc/shadow
第1字段:用户名
第2字段:加密密码
加密算法升级为SHA512散列加密算法
如果密码是“!!”或“*”代表没有密码,不能登录
第3字段:密码最后一次修改日期
使用1970年1月1日作为标准时间,每过一天时间戳加1
第4字段:两次密码的修改间隔时间(和第3字段相比)
第5字段:密码有效期(和第3字段相比)
第6字段:密码修改到期前的警告天数(和第5字段相比)
第7字段:密码过期后的宽限天数(和第5字段相比)
0: 代表密码过期后立即失效
-1:代表密码永远不会失效
第8字段:账号失效时间
要用时间戳表示
第9字段:保留 - 时间戳换算
把时间戳换算为日期
date -d “1970-01-01 16066 days”
把日期换算为时间戳
echo $(($(date --date=”2014/01/06”+%s)/86400+1))
- 组信息文件/etc/group和组密码文件/etc/gshadow
用户管理相关文件
- 用户的家目录(添加用户的同时自动生成)
普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
超级用户:/root/,所有者和所属组都是root用户,权限是550 - 用户的邮箱
/var/spool/mail/用户名/ (添加用户的同时自动生成) - 用户模板目录
/etc/skel/
用户管理命令useradd
- useradd命令格式
# useradd 【选项】用户名
选项:
-u: 手工指定用户的UID号
-d: 手工指定用户的家目录
-c: 手工指定用户的说明
-g: 手工指定用户的初始组
-G: 指定用户的附加组
-s: 手工指定用户的登录Shell,默认是/bin/bash - 添加默认用户
- 指定选项添加用户
- 用户默认值文件(以下两个)
/etc/default/useradd
GROUP=100 用户默认组
HOME=/home 用户家目录
INACTIVE=-1 密码过期宽限天数(shadow文件7字段)
EXPIRE= 密码失效时间(8字段)
SHELL=/bin/bash 默认shell
SKEL=/etc/skel 模板目录
CREAT_MAIL_SPOOL=yes 是否建立邮箱
/etc/login.defs
PASS_MAX_DAYS 99999 密码有效期
等等。
用户管理命令passwd(一般不用选项)
# passwd 【选项】 用户名
选项:
-S
查询用户密码的密码状态。仅root用户可用
-l
暂时锁定用户。仅root用户可用
-u
解锁用户。仅root用户可用
--stdin 可以通过管道符输出的数据作为用户的密码
使用字符串作为用户的密码(多用于shell编程,批量添加):# echo “123” | passwd –stdin user1
用户管理命令usermod和chage
- 修改用户信息usermod
# usermod 【选项】 用户名
-L 临时锁定用户(Lock)
-U 解锁用户锁定(Unlock)
-u -c -G等于useradd里的选项一样 - 修改用户密码状态chage
# chage 【选项】 用户名
-l 列出用户的详细密码状态
-d 修改密码最后一次更新日期(shadow3字段)
-m (4字段)
-M (5字段)
-W (6字段)
-I (7字段)
-E (8字段)
# chage -d 0 user1
(用的较多的一个选项)
该命令是把密码修改日期归0了(shadow3字段),这样用户一登录就要修改密码
用户管理命令userdel和su
- 删除用户userdel
# userdel 【-r】 用户名
-r 删除用户的同时删除用户家目录
也可通过手工修改以下用户文件的方式删除用户(但一般都用命令)
# vi /etc/passwd
# vi /etc/shadow
# vi /etc/group
# vi /etc/gshadow
# rm -rf /var/spool/mail/user1
# rm -rf /home/user1
- 查看用户ID(用户id,组id等)
# id 用户名
- 切换用户身份su
# su 【选项】 用户名
-: 选项只使用“-”代表连带用户的环境变量一起切换
-c 仅执行一次命令,而不切换用户身份
$ su – root -c “useradd user2”
不切换成root,但是执行useradd命令添加user2用户
用户组管理命令
- 添加用户组
# groupadd 【选项】 组名
-g
: GID 指定组ID - 修改用户组
# groupmod 【选项】 组名
-g
修改组ID
-n
修改组名
# groupmod -n testgrp group1
(把组名group1修改为testgrp) - 删除用户组(要删除组,要求这个组中没有初始用户,即这个组不是其他用户的初始组)
# groupdel 组名
- 把用户添加入组或从组中删除
# gpasswd 【选项】 组名
-a
用户名:把用户加入组
-d
用户名:把用户从组中删除
例:# gpasswd -a user1 root
(将user1用户加入root组)