Linux系统用户管理
1.用户管理*****
2.Linux用户命令****
3.用户创建的原理***
4.密码管理***
5.组命令管理**
6.身份切换*****
7.sudo提升权限*****
我们现在所使用的操作系统都是多用户操作系统
AAA 认证体系
认证 授权 统计
用户和组存在的意义
1.系统上的每一个进程(运行的程序)都需要特定的用户运行
2.每一个文件都有特定的用户拥有
3.访问文件或目录受到用户的限制
4.进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关
查看当前登录的用户信息
[[email protected] ~]# id
uid=0(root) gid=0(root) groups=0(root)
用户uidd的分类
取值范围 0~65535
0 超级管理员
1-200 系统用户,由系统分配给系统进程使用
201-999 系统用户,用来运行服务账户,不需要登录系统(动态分配)
1000+ 常规用户
注意:在Linux7之前的惯例是,UID1-499用于系统用户,而UID500+则用于普通用户
组类别
基本组 优先使用基本组,用户只能属于一个基本组,用户默认基本组
附加组 基本组不能满足授权要求,创建附加组,用户可以属于多个附加组
私有组 私有组,创建用户时如果没有指定基本组,系统会创建和用户同名的组
1.用户管理
账户信息存放在/etc/passwd,账户密码信息保存在/etc/shadow,这两个文件是linux系统中最重要的文件之一
如果没有这两个文件或这两个文件出问题,会导致无法正常登陆
/etc/passwd
[[email protected] ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
// /etc/passwd由":"分割成7个字符,每个字段的具体含义如下:
字段名称 注释说明
1.用户名称 //用户的账号名称
2.密码占位符 //存放账户的口令,暂用x表示,密码保存在/etc/shadow
3.用户的UID //用户标识号
4.用户基本组GID //组标识号
5.用户注释 //用户详细信息
6.用户家目录 //用户家目录,root家目录是/root,普通用户家目录存在/home/username,可自定义
7.用户登录Shell //用户登录linux使用的shell cat /etc/shells
[[email protected] ~]# tail -1 /etc/shadow
xiaoming:$6$jI/Vus00$xYy4ndP1w1i1iejisph8DDbTx0SfZu31MZq3MAXVJX9/gdFUT5cd4I45IWFeO5xVLg6KtlFqxcl6XCebVtuD80:18193:0:99999:7:::
// /etc/shadow由":"分割成9个字符,每个字符的具体含义如下:
字段名称 注释说明
1.用户登录名 //用户的账号名称
2.加密后的密码 //用户密码,这是加密过的口令(未设密码时为!!)
3.最近一次密码更改时间 //从1970年到最近一次更改密码时间过了多少天
4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认过期前7天警告)
7.密码到期后保持活动的天数//在此期间,用户依然可以登录系统并更改密码,指定天数过后 ,账户被锁定
8.账户到期时间 //从1970年起,账户在这个日期前可使用,到期后失效
9.标志 //保留
密码格式
$a$b$c
a 表示加密算法
b salt随机值
c 加密后的值
使用chage更改用户密码密码使用情况
-d 设置最近一次更改密码时间,0下次登录系统强制修改密码
-m 设置用户两次改变密码之间使用“最小天数”
-M 设置用户两次改变密码之间使用“最大天数”
-W 设置密码更改警告时间,将过期警告天数设为“警告天数”
-I 设置密码过期天数后,密码为失效状态
-E 设置用户过期时间,账户失效后无法登陆
-l 显示用户信息
//修改时间为2014年08月31日,和图中时间匹配,方便后续验证
[[email protected] ~]# date -s ‘20140831‘ #修改当前系统时间为2014年08月31日
Sun Aug 31 00:00:00 CST 2014
[[email protected] ~]# date #查看当前系统时间
Sun Aug 31 00:00:08 CST 2014
[[email protected] ~]# useradd oldboy1 #创建用户
[[email protected] ~]# echo "123"|passwd --stdin oldboy1 #给oldboy1用户创建密码123
Changing password for user oldboy1.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# tail -1 /etc/shadow #查看创建用户的密码信息
oldboy1:$6$nMLlslZx$.olzO0byVVK7PANHO1R4w.ZPGIz4ZZC6NB5eQ7FcJhNwXLgj4pVru4tbFAdiDMrCtZsBpfWdunDo6q0ioCgbL0:16312:0:99999:7:::
//设置最近一次修改密码时间
[[email protected] ~]# chage -d ‘2019-09-01‘ oldboy1
[[email protected] ~]# chage -l oldboy1
Last password change : Sep 01, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
//设置密码最短使用时间
[[email protected] ~]# chage -m 2 oldboy1
[[email protected] ~]# chage -l oldboy1
Last password change : Sep 01, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
//设置密码最长使用时间
[[email protected] ~]# chage -M ‘15‘ oldboy1
[[email protected] ~]# chage -l oldboy1
Last password change : Sep 01, 2019
Password expires : Sep 16, 2019
Password inactive : never
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 15
Number of days of warning before password expires : 7
//设置密码警告时间
[[email protected] ~]# chage -W ‘6‘ oldboy1
[[email protected] ~]# tail -1 /etc/shadow
oldboy1:$6$nMLlslZx$.olzO0byVVK7PANHO1R4w.ZPGIz4ZZC6NB5eQ7FcJhNwXLgj4pVru4tbFAdiDMrCtZsBpfWdunDo6q0ioCgbL0:18140:2:15:6:::
//设置密码过期时间
[[email protected] ~]# chage -I ‘5‘ oldboy1
[[email protected] ~]# chage -l oldboy1
Last password change : Sep 01, 2019
Password expires : Sep 16, 2019
Password inactive : Sep 21, 2019
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 15
Number of days of warning before password expires : 6
//设置账号过期时间
[[email protected] ~]# chage -E ‘2020-01-01‘ oldboy1
[[email protected] ~]# chage -l oldboy1
Last password change : Sep 01, 2019
Password expires : Sep 16, 2019
Password inactive : Sep 21, 2019
Account expires : Jan 01, 2020
Minimum number of days between password change : 2
Maximum number of days between password change : 15
Number of days of warning before password expires : 6
//如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码,不需要调整时间
2.普通用户登录系统后,会提示警告密码还剩多少天过期
[[email protected] ~]# date -s ‘2019-09-14 ‘
3.普通用户登录系统后,强制要求修改密码
[[email protected] ~]# date -s ‘2019-09-18 ‘
4.普通用户登录系统后,提示账户已过期
2.LInu用户命令
添加用户前需要确定
确定用户的默认组是否有特殊要求
确定用户是否允许登录
确定用户的密码策略
确定用户的有效期
确定用户的UID是否有特殊要求1.使用useradd命令新增账户,注意:adduser命令软链接到useradd
‘-u‘ 指定用户的UID,不能和现有ID冲突
‘-g‘ 指定用户用户默认基本组
‘-G‘ 指定用户附加组,用逗号隔开添加多个附加组
‘-d‘ 指定用户家目录
‘-c‘ 指定用户注释信息
‘-M‘ 不建立家目录
‘-s‘ 指定用户默认shell
‘-r‘ 创建系统账户,没有家目录
//创建oldboy用户,指定UID5001,基本组,students附加组sa、dba,注释信息"2018 new student",shell:bash
[[email protected] ~]# useradd -u 5001 -g students -G sa,dba -c ‘2018 new student‘ -d /home/oldboy -s /bin/bash oldboy
[[email protected] ~]# tail -1 /etc/passwd
oldboy:x:5001:1005:2018 new student:/home/oldboy:/bin/bash
//创建系统用户,-M不建立用户家目录 -s指定nologin使其不登录
[[email protected] ~]# useradd -M -s /sbin/nologin mysql
[[email protected] ~]# useradd -r -g dba -s /sbin/nologin dba
[[email protected] ~]# tail -2 /etc/passwd
mysql:x:5002:5002::/home/mysql:/sbin/nologin
dba:x:998:1004::/home/dba:/sbin/nologin
使用usermod命令修改用户组
‘-u‘ 修改用户的UID
‘-g‘ 修改用户所属的基本组GID
‘-G‘ 修改用户附加组
‘-a‘ 追加更多的附加组,使用逗号隔开多个附加组,覆盖原有的附加组
‘-md‘ 家目录迁移,必须的-d一起使用,移动用户的家目录到新的位置
‘-d‘ 指定用户家目录的新位置
‘-c‘ 修改用户的注释信息
‘-s‘ 更改用户使用的shell
‘-l‘ 更改用户登录名
‘-L‘ 锁定用户
‘-U‘ 解锁用户
//修改用户mysql的UID为250
[[email protected] ~]# usermod -u 250 mysql
[[email protected] ~]# tail -2 /etc/passwd
mysql:x:250:5002::/home/mysql:/sbin/nologin
//修改用户oldboy的基本组为root
[[email protected] ~]# usermod -g root oldboy
[[email protected] ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba)
//修改用户oldboy的附加组,添加students组
[[email protected] ~]# usermod -G students,sa,dba,mysql oldboy
[[email protected] ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba),1005(students)
//追加用户oldboy的附加组sa、dba
[[email protected] ~]# usermod -G students oldboy
[[email protected] ~]# usermod -aG sa,dba oldboy
[[email protected] ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba),1005(students)
//将用户oldboy从/home目录迁移到/目录下
[[email protected] ~]# usermod -md /oldboy oldboy
[[email protected] ~]# ls /
bin dev home lib64 mnt opt root sbin sys usr
boot etc lib media oldboy proc run srv tmp var
//修改用户oldboy的shell,使其无法登录
[[email protected] ~]# usermod -s /sbin/nologin oldboy
[[email protected] ~]# grep oldboy /etc/passwd
oldboy1:x:1001:1001::/home/oldboy1:/bin/bash
oldboy:x:5001:0:2018 new student:/oldboy:/sbin/nologin
//更改用户oldboy登录名为oldgirl
[[email protected] ~]# usermod -l oldgirl oldboy
[[email protected] ~]# grep oldboy /etc/passwd
oldboy1:x:1001:1001::/home/oldboy1:/bin/bash
oldgirl:x:5001:0:2018 new student:/oldboy:/sbin/nologin
//修改用户oldgirl的注释信息
[[email protected] ~]# usermod -L oldgirl
[[email protected] ~]# grep oldgirl /etc/passwd
oldgirl:x:5001:0:2019 new stu:/oldboy:/bin/bash
//锁定oldboy用户
usermod -L oldgirl
使用finger命名查询用户信息以及登录信息
yum install -y finger #安装finger命令
[[email protected] ~]# finger oldgirl #查看oldgirl用户及登录信息
Login: oldgirl Name: 2019 new stu
Directory: /oldboy Shell: /bin/bash
Last login Mon Oct 28 14:45 (CST) on pts/1 from 10.0.1.26
No mail.
No Plan.
使用chfn修改用户信息
[[email protected] ~]# chfn oldgirl
Changing finger information for oldgirl.
Name [2019 new stu]: 2019 new teacher
Office []: oldboy 2009
Office Phone []: 1234567
Home Phone []: 132131231
Finger information changed.
使用finger再次检查
[[email protected] ~]# finger oldgirl
Login: oldgirl Name: 2019 new teacher
Directory: /oldboy Shell: /bin/bash
Office: oldboy 2009, 123-4567 Home Phone: 132131231
Last login Mon Oct 28 14:45 (CST) on pts/1 from 10.0.1.26
No mail.
No Plan.
使用chsh命令更改用户登录shell
[[email protected] ~]# chsh oldgirl
Changing shell for oldgirl.
New shell [/bin/bash]: /sbin/nologin
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[[email protected] ~]# grep oldgirl /etc/passwd
oldgirl:x:5001:0:2019 new teacher,oldboy 2009,1234567,132131231:/oldboy:/sbin/nologin
检查用户的登录情况
[[email protected] ~]# who
root pts/0 2019-10-28 15:05 (10.0.1.26)
root pts/1 2019-10-28 15:30 (10.0.1.26)
[[email protected] ~]# w
15:51:16 up 47 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/0 10.0.1.26 15:05 22:12 0.25s 0.02s -bash
root pts/1 10.0.1.26 15:30 4.00s 0.24s 0.00s w
使用userdel删除账户
语法:userdel [-r] username//-r 同时删除家目录
[[email protected] ~]# userdel ts
[[email protected] ~]# ls -lhd /home/ts/
drwx------ 2 5003 5004 62 Oct 28 15:56 /home/ts/
//连同家目录一起删除
[[email protected] ~]# userdel -r ts
3.用户创建的原理
Linux创建用户默认会读取/etc/default/useradd的配置文件,如果当我指定参数时,使用指定参数,如果不指定参数,默认使用/etc/
default/useradd中的配置。当我们使用useradd命令创建用户时,用户家目录下会产生相应的.bash_*文件。这些文件默认是从/etc/
skel目录中复制。如需变更环境拷贝目录站点可修改:/etc/default/useradd的配置文件。
注意:如果执行useradd命令新建用户时,指定了参数,就会覆盖/etc/default/useradd中默认的配置
[[email protected] ~]#
[[email protected] ~]# egrep -v "^#|^$" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
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
[[email protected] ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home //把用户的家目录建在/home中
INACTIVE=-1 //是否启用账号过期停权,-1表示不启用
EXPIRE= //账号终止日期,不设置表示不启用
SHELL=/bin/bash //新用户默认所有的shell类型
SKEL=/etc/skel //配置新用户家目录的默认文件存放路径
CREATE_MAIL_SPOOL=yes //创建mail文件
//用户登录linux操作系统,环境变量误删,出现-bash-4.2$,如今解决
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ exit
4.密码管理
创建完账户后,默认是没有密码的,所以该账户是没有办法登录操作系统。只有使用passwd设置好密码后方可登录系统。
使用passwd为用户创建密码时,为了安全起见,请尽量设置复杂一些,可以按照如下规则设置密码:
1.长度大于10位字符
2.密码中包含大小写字母数字以及特殊字符“!”,"@","$"等;
3.不规则性(不要出现自己名字、公司名字、自己电话、等等简单的密码)
需要注意
1.普通用户只能更改自己的密码
2.管理员root能更改任何人的密码
使用passwd命令能修改用户密码
语法:passwd[username]
//‘passwd‘后面不加username则是修改当前账户的密码。
//如果你登录的是root账户,后面可以指定需要修改密码的账户
//只有root才可以修改其他账户的密码,普通账户只能修改自己的密码,普通用户没有修改其他用户的权限
随机密码生成工具几种方式
//1.系统内置变量生成随机密码
[[email protected] ~]# echo $RANDOM|md5sum |cut -c 1-10
ae02560755
//2.mkpasswd密码生成工具
//-l密码长度默认7位,-d数字,-c小字母,-C大字母
[[email protected] ~]# yum install -y expect
[[email protected] ~]# mkpasswd -l 15 -c 3 -d 5
448crm3Zteq2Fs\
推荐密码保存工具客户端,支持windows,MacOS、手机以及浏览器插件Lastpass官方网站
https://www.lastpass.com/zh
原文地址:https://www.cnblogs.com/xmtxh/p/11755170.html