码迷,mamicode.com
首页 > 系统相关 > 详细

linux系统用户管理(一)

时间:2019-10-28 20:40:14      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:无法   dev   命令   ini   数字   字段   操作系统。   ted   groups   

Linux系统用户管理
1.用户管理*****
2.Linux用户命令****
3.用户创建的原理***
4.密码管理***
5.组命令管理**
6.身份切换*****
7.sudo提升权限*****

我们现在所使用的操作系统都是多用户操作系统
AAA 认证体系
认证 授权 统计

用户和组存在的意义

1.系统上的每一个进程(运行的程序)都需要特定的用户运行
2.每一个文件都有特定的用户拥有
3.访问文件或目录受到用户的限制
4.进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关

查看当前登录的用户信息
[root@localhost ~]# 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
[root@localhost ~]# 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

[root@localhost ~]# 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日,和图中时间匹配,方便后续验证
[root@localhost ~]# date -s ‘20140831‘ #修改当前系统时间为2014年08月31日
Sun Aug 31 00:00:00 CST 2014
[root@localhost ~]# date #查看当前系统时间
Sun Aug 31 00:00:08 CST 2014
[root@localhost ~]# useradd oldboy1 #创建用户
[root@localhost ~]# echo "123"|passwd --stdin oldboy1 #给oldboy1用户创建密码123
Changing password for user oldboy1.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# tail -1 /etc/shadow #查看创建用户的密码信息
oldboy1:$6$nMLlslZx$.olzO0byVVK7PANHO1R4w.ZPGIz4ZZC6NB5eQ7FcJhNwXLgj4pVru4tbFAdiDMrCtZsBpfWdunDo6q0ioCgbL0:16312:0:99999:7:::

//设置最近一次修改密码时间
[root@localhost ~]# chage -d ‘2019-09-01‘ oldboy1
[root@localhost ~]# 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

//设置密码最短使用时间
[root@localhost ~]# chage -m 2 oldboy1
[root@localhost ~]# 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

//设置密码最长使用时间
[root@localhost ~]# chage -M ‘15‘ oldboy1
[root@localhost ~]# 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

//设置密码警告时间
[root@localhost ~]# chage -W ‘6‘ oldboy1
[root@localhost ~]# tail -1 /etc/shadow
oldboy1:$6$nMLlslZx$.olzO0byVVK7PANHO1R4w.ZPGIz4ZZC6NB5eQ7FcJhNwXLgj4pVru4tbFAdiDMrCtZsBpfWdunDo6q0ioCgbL0:18140:2:15:6:::

//设置密码过期时间
[root@localhost ~]# chage -I ‘5‘ oldboy1
[root@localhost ~]# 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

//设置账号过期时间
[root@localhost ~]# chage -E ‘2020-01-01‘ oldboy1
[root@localhost ~]# 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.普通用户登录系统后,会提示警告密码还剩多少天过期
[root@localhost ~]# date -s ‘2019-09-14 ‘

3.普通用户登录系统后,强制要求修改密码
[root@localhost ~]# 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
[root@localhost ~]# useradd -u 5001 -g students -G sa,dba -c ‘2018 new student‘ -d /home/oldboy -s /bin/bash oldboy
[root@localhost ~]# tail -1 /etc/passwd
oldboy:x:5001:1005:2018 new student:/home/oldboy:/bin/bash

//创建系统用户,-M不建立用户家目录 -s指定nologin使其不登录
[root@localhost ~]# useradd -M -s /sbin/nologin mysql
[root@localhost ~]# useradd -r -g dba -s /sbin/nologin dba
[root@localhost ~]# 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
[root@localhost ~]# usermod -u 250 mysql
[root@localhost ~]# tail -2 /etc/passwd
mysql:x:250:5002::/home/mysql:/sbin/nologin

//修改用户oldboy的基本组为root
[root@localhost ~]# usermod -g root oldboy
[root@localhost ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba)

//修改用户oldboy的附加组,添加students组
[root@localhost ~]# usermod -G students,sa,dba,mysql oldboy
[root@localhost ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba),1005(students)

//追加用户oldboy的附加组sa、dba
[root@localhost ~]# usermod -G students oldboy
[root@localhost ~]# usermod -aG sa,dba oldboy
[root@localhost ~]# id oldboy
uid=5001(oldboy) gid=0(root) groups=0(root),1003(sa),1004(dba),1005(students)

//将用户oldboy从/home目录迁移到/目录下
[root@localhost ~]# usermod -md /oldboy oldboy
[root@localhost ~]# ls /
bin dev home lib64 mnt opt root sbin sys usr
boot etc lib media oldboy proc run srv tmp var

//修改用户oldboy的shell,使其无法登录
[root@localhost ~]# usermod -s /sbin/nologin oldboy
[root@localhost ~]# grep oldboy /etc/passwd
oldboy1:x:1001:1001::/home/oldboy1:/bin/bash
oldboy:x:5001:0:2018 new student:/oldboy:/sbin/nologin

//更改用户oldboy登录名为oldgirl
[root@localhost ~]# usermod -l oldgirl oldboy
[root@localhost ~]# grep oldboy /etc/passwd
oldboy1:x:1001:1001::/home/oldboy1:/bin/bash
oldgirl:x:5001:0:2018 new student:/oldboy:/sbin/nologin

//修改用户oldgirl的注释信息
[root@localhost ~]# usermod -L oldgirl
[root@localhost ~]# grep oldgirl /etc/passwd
oldgirl:x:5001:0:2019 new stu:/oldboy:/bin/bash

//锁定oldboy用户
usermod -L oldgirl

使用finger命名查询用户信息以及登录信息
yum install -y finger #安装finger命令
[root@localhost ~]# 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修改用户信息
[root@localhost ~]# 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再次检查
[root@localhost ~]# 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
[root@localhost ~]# chsh oldgirl
Changing shell for oldgirl.
New shell [/bin/bash]: /sbin/nologin
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[root@localhost ~]# grep oldgirl /etc/passwd
oldgirl:x:5001:0:2019 new teacher,oldboy 2009,1234567,132131231:/oldboy:/sbin/nologin

检查用户的登录情况
[root@localhost ~]# 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)

[root@localhost ~]# w
15:51:16 up 47 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ 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 同时删除家目录
[root@localhost ~]# userdel ts
[root@localhost ~]# ls -lhd /home/ts/
drwx------ 2 5003 5004 62 Oct 28 15:56 /home/ts/

//连同家目录一起删除
[root@localhost ~]# userdel -r ts

3.用户创建的原理
Linux创建用户默认会读取/etc/default/useradd的配置文件,如果当我指定参数时,使用指定参数,如果不指定参数,默认使用/etc/
default/useradd中的配置。当我们使用useradd命令创建用户时,用户家目录下会产生相应的.bash_*文件。这些文件默认是从/etc/
skel目录中复制。如需变更环境拷贝目录站点可修改:/etc/default/useradd的配置文件。
注意:如果执行useradd命令新建用户时,指定了参数,就会覆盖/etc/default/useradd中默认的配置

[root@localhost ~]#
[root@localhost ~]# 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

[root@localhost ~]# 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.系统内置变量生成随机密码
[root@localhost ~]# echo $RANDOM|md5sum |cut -c 1-10
ae02560755

//2.mkpasswd密码生成工具
//-l密码长度默认7位,-d数字,-c小字母,-C大字母
[root@localhost ~]# yum install -y expect
[root@localhost ~]# mkpasswd -l 15 -c 3 -d 5
448crm3Zteq2Fs\

推荐密码保存工具客户端,支持windows,MacOS、手机以及浏览器插件Lastpass官方网站
https://www.lastpass.com/zh

 

linux系统用户管理(一)

标签:无法   dev   命令   ini   数字   字段   操作系统。   ted   groups   

原文地址:https://www.cnblogs.com/xmtxh/p/11755170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!