用户管理
信息存放
用户信息etc/passwd,账户密码存在/etc/shadow
/etc/passwd
由’:’分割成7个字段,每个字段的具体含义如下:
字段名称 注释说明
1.用户名称 #用户账号命名成
2、密码占位符 #存放账户的口令,暂用X表示,密码保存在/etc/shadow
3、用户的uid #用户标识号
4、用户基本组GID #组标识号码
5、用户注释 #用户详细信息
6、用户家目录 #用户家目录,root家目录是/root普通用户的家目录存在/home
7、用户登录shell #用户登录linux使用shell cat/etc/shells
/etc/shadow
由‘:’分割成9个字段
字段名称 注释说明
1、用户登录名 用户的账号密码
2、加密后的密码 用户密码,这是加密过的口令(未密码为!!)
3、最近一次密码更改时间 从1970年到最近一次更改密码时间之间过了多少天
4、密码最少使用几天 密码最少要使用几天才能更改密码(0表示无限制)
5、密码最长使用几天 密码使用多少天需要更改密码
6、密码到期前警告期限 密码到期前多少天提醒用户更改密码(默认过期前7天警告)
7、密码到期后保持活动天数 在此期间内,用户依然可以登录系统并更改密码
8、账号到期时间 到期后失效
9、标志 保留
密码格式
$a$b$c
用户密码修改
chage更改用户密码,使用情况
-d 设置最近一次更改密码时间,0下次登录系统强制修改密码
-m 设置密码两次改变密码之间使用的最小天数
-M 设置密码两次改变密码之间使用的最大天数
-W 设置密码更改警告时间,将过期警告天数设为‘警告天数’
-I 设置密码过期天数后,密码为失效状态
-E 设置过期时间,账户失效后无法登录
-l 显示用户信息
用法:chage [选项] 登录
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
用户命令
添加用户前需要确定
确定用户的默认组是否有特殊要求
确定用户是否允许登录
确定用户的密码策略
确定用户的有效期限
确定用户的uid是否有特殊要求
使用useradd命令新增账户
useradd命令
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
示例:
创建用户xiao
指定UID5001,基本组student,附加组:sa,dba,注释信息‘2018 new student’,shell:bash
[root@192 ~]# useradd -u 5001 -g student -G sa,dba -c "2018 new student" -d /home/xiao -s /bin/bash xiao
[root@192 ~]# tail -1 /etc/passwd
xiao:x:5001:1006:2018 new student:/home/xiao:/bin/bash
用法:usermod 修改用户属性
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-L, --lock 锁定用户帐号
-U, --unlock 解锁用户帐号
finger 查询用户信息以及登录信息
示例:
[root@192 ~]# finger xiaoadd
Login: xiaoadd Name: 2018 new student
Directory: /home/xiaoadd Shell: /bin/bash
Never logged in.
No mail.
No Plan.
chfn修改用户信息
[root@192 ~]# chfn xiaoadd
Changing finger information for xiaoadd.
名称 [2018 new student]: xiao
办公 []: wlmq
办公电话 []: 0991-2327227
住宅电话 []: 123456
Finger information changed.
chsh 更改用户登录的shell
[root@192 ~]# chsh xiaoadd
Changing shell for xiaoadd.
New shell [/bin/bash]: /bin/bash
chsh: Shell not changed.
查看登录情况
who
w
userdel 删除用户
[root@192 ~]# userdel
用法:userdel [选项] 登录
选项:
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
示例:
[root@192 ~]# userdel -r 123456
[root@192 ~]# ls /home/
741 xiao xiao1
用户创建原理
创建用户模板文件
/etc/passwd //账号文件
/etc/shadow //密码文件
/etc/default/useradd //用户模板文件
/etc/login.defs //用户创建取值文件
/etc/skel //家目录文件
默认创建执行/etc/default/useradd,如需变更环境拷贝目录站点可修改/etc/default/useradd
[root@192 ~]# egrep -v "^#|^$" /etc/login.defs //过滤#和空行显示有效行数
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5 //密码级别,8位以上
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077 //权限
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@192 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home //用户家目录
INACTIVE=-1 //是否启用账号过期停权,-1表示不启用
EXPIRE= //账号终止日期,不设置表示不启用
SHELL=/bin/bash //新用户默认所有的shell类型
SKEL=/etc/skel //配置新用户家目录的默认存放路径
CREATE_MAIL_SPOOL=yes //是否创建邮箱
故障示例:
用户登录linux系统,环境变量被误删除,出现-bash-4.2$(或者其他的*.*)解决办法
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ exit
重新登录
密码管理
新创建的账户默认没有密码,所以该账户无法登录操作系统,只有使用passwd设置密码以后可以登录
密码设置标准
1、长度大于10位字符;
2、密码包含大小写字母数字以及特殊字符,不包含空格
3、不规则性
修改密码注意事项
1、普通用户只能更改自己的
2、管理员root可以管理所有的
语法:
[root@192 ~]# passwd xiao
更改用户 xiao 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
备注:
passwd 后面不添加用户名修改的是当前用户
随机产生密码方式
示例1:
[741@192 ~]$ echo $RANDOM|md5sum|cut -c 1-10
89ca15826e
示例2:
[root@192 ~]# yum install -y expect
[root@192 ~]# mkpasswd -l 15 -d 3 -C 5 -l密码长度 -d数字 -c小写字母 -C大写字母
OesX9z3rAIj6$So
无需交互修改密码
[root@192 ~]# echo "123" | passwd --stdin 741 //echo "123"表示输出结果,passwd --stdin 741表示输入结果
更改用户 741 的密码 。
passwd:所有的身份验证令牌已经成功更新。
组命令管理
组信息保存位置/etc/group和/etc/gshadow
组信息
[xiao@192 ~]$ head -2 /etc/group
root:x:0:
字段名称 注释说明
1、组账户名称 组名称
2、密码占位符 组的密码(/etc/gshadow)
3、组GID 组GID信息
4、组成员 显示附加组成员,不显示基本成员
[root@192 ~]# head -2 /etc/gshadow
root:::
字段名称 注释说明
1、组账户名称 组名称
2、密码占位符 组的密码
3、组管理员 组管理员
4、组成员 显示附加组成员,不显示基本成员
创建组
[root@192 ~]# groupadd
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
创建默认组
[root@192 ~]# groupadd boos
[root@192 ~]# tail -1 /etc/group
boos:x:1007:
创建指定组
[root@192 ~]# groupadd -g 2000 file
[root@192 ~]# tail -1 /etc/group
file:x:2000:
创建系统组(gid从201-999)
[root@192 ~]# groupadd -g 202 file2
[root@192 ~]# tail -1 /etc/group
file2:x:202:
修改已经创建的组
groupmod命令
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
示例:
[root@192 ~]# tail -1 /etc/group
file4:x:202:
[root@192 ~]# groupmod -g 2006 file4 //该组gid
[root@192 ~]# tail -1 /etc/group
file4:x:2006:
[root@192 ~]# groupmod -n xiao1 file4 //重命名组
[root@192 ~]# tail -1 /etc/group
xiao1:x:2006:
组删除
groupdel ,只能删除附加组,无法删除基本组,只有删除用户或者用户变更基本后,才可以删除改组
身份切换
有些操作无法操作需要root用户才能操作,需要临时切换到root身份
交互式shell 等待用户输入执行命令(终端操作),exit退出
非交互式shell 执行shell脚本,脚本执行结束shell自动退出
登录shell 需要输入用户名和密码才进shell ,su - username
非登录shell 不需要输入用户和密码就能进入,sh bash
1、把交互命令转换成同等功能非交互命令
2、提前做好应答文件
查看登录shell
[root@192 ~]# pstree
临时设置,永久设置需要修改配置文件
bash的配置文件保存用户的工作环境
个人配置文件:~/.bash_profile和 ~/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile 类文件:设定环境变量,登录前运行的脚本命令
bashrc 类文件:设定本地变量,定义命令别名
字符串环境变量文件:/etc/locale.conf (Centos7)
全局配和个人呢配置冲突,以个人配置为准
shell配置文件应用顺序
登录shell 配置文件执行顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
非登陆式shell配置文件执行顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
sudo提升权限
su 是从root用户切换到普通用户
[root@xiao ~]# su - xiao -c 'ifconfig'
加- 代表进入登录是shell
不加 代表非登录式shell
默认只有root用户能使用sudo命令,普通用户想使用,是需要root预先设定的,即使用visudo命令去编辑相关的配置文件/etc/sudoers
centos7提权方法,授权用户具有管理员所有的权限,不建议使用
[root@xiao ~]# usermod -G wheel xiao
日志审计
[root@xiao ~]# sudo tail -f /var/log/secure
使用visudo命令编辑/etc/sudoers配置文件
使用visudo,等于使用vi 编辑sudoers配置文件
日志路径
/var/log/message 公共日志
时间:地点(主机名):人物(进程):信息
/var/log/secure 安全日志
sudo 配置选项解释
用户名/组名 主机名 角色名 命令名
%wheel ALL= (ALL) ALL
# %wheel ALL= (ALL) NOPASSWD: ALL
普通用户验证sudo权限
[root@xiao~]# su - xiao1
检查普通用户sudo权限明细
[xiao1@xiao ~]$ sudo -l
案例需求:
要求
visudo -c 语法检测
用户和组存在的意义
1、系统上的每一个进程(运行的程序)都需要特定的用户运行
2、每一个文件都有特定的用户拥有
3、访问文件或目录受到用户的限制
4、进程能够以何种方式访问某一文件或目录,与进程所关联的用户有关
查看当前用户登录的用户信息
[root@192 ~]# id
uid=0(root) gid=0(root) 组=0(root)
用户uid的分类
0超级管理员
1-200系统用户,有系统分配给系统的进程使用
201-999系统用户,用来运行服务账号,不需要登录系统(动态分配)
1000+常规用户
用户的取值范围
0-65535
组类别
基本组 优先使用基本组,用户只能属于一个基本组,用户默认基本组
附加组 基本组不能满足权限要求,创建附加组,用户可以属于多个附加组
私有组 创建用户是如果没有指定基本组,系统会创建和用户同名的组(可以更改)