linux系统用户管理(一)

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

时间: 2024-11-05 03:34:37

linux系统用户管理(一)的相关文章

linux系统-用户管理-概念及原理

linux系统-用户管理-概念及原理 一 相关概念 1 /etc/passwd 的文件格式:用户名:密码位:用户标识号:组标识号:注释等相关描述:宿主目录:默认的shell,列如 chengzhi:x:500:500:chengzhi-CentOS:/home/chengzhi:/bin/shell 2 /etc/shadow 的文件格式:用户名:md5加密的密码(md5是单向不可逆的算法,固定长度):最后一次修改的时间:最大时间间隔:最小时间间隔:警告时间:闲置时间:失效文件:标志,前面两项比

linux系统-用户管理-相关配置文件

linux系统-用户管理-相关配置文件 一 配置文件 1 用户信息文件:/etc/passwd 2 密码文件:/etc/shadow 3 用户组信息文件:/etc/group 4 用户组密码文件:/etc/gshadow 5 用户配置文件:/etc/login.defs     /etc/default/useradd 6 新用户的信息文件:/etc/skel 7 登陆信息文件:/etc/motd和/etc/issue 二 my_qq 872785786 及相应的网盘资料链接:http://pa

linux系统-用户管理-常用命令

linux系统-用户管理-常用命令 一 用户 1 useradd 用户名 [-参数].. 2 passwd 改密码 3 usermod 修改用户的信息 [-G 添加用户到用户组] [-L禁用用户][-U恢复用户] 二 用户组 1 groupadd 组名 [-参数] 添加用户组 2 groupdel  删除用户组 3 groupmod 设置信息 三 用户与用户组 1 添加用户到用户组:gpasswd -a 用户组 用户 2 用户组删除用户:gpasswd -d 用户 3 设置用户组管理员:gpas

linux系统-用户管理-补充

linux系统-用户管理-补充 一 SetUID概念 当一个用户被授予SetUID时,该用户执行程序的时候将会以程序的所有者执行,linux默认的程序的所有者为root 这就是为什么普通用户可以改密码的原因,单执行passwd的命令的时候,会以root的身份执行 二 my_qq 872785786 及linux系统基础相应的网盘资料链接:http://pan.baidu.com/s/1ydewA 密码:kaek 欢迎一起交流学习-安卓嵌入式开发,若想免费获取更多资料,请联系我即可-共享精神,提供

linux系统-用户管理-管理员授权

linux系统-用户管理-管理员授权 一 linux的普通用户的root权限 1常用于管理某些服务的时候需要一些权限,可以在visudo里面编辑 用户名  主机地址=绝对路径(用于限定权限,使用户只能在这些路径下执行相应的程序,而不需要root权限) 2 可用于网站管理服务等,和linux系统的后门入侵 二 my_qq 872785786 及linux系统基础相应的网盘资料链接:http://pan.baidu.com/s/1ydewA 密码:kaek 欢迎一起交流学习-安卓嵌入式开发,若想免费

Linux系统用户管理

一.Linux账户 广义上讲,Linux的账户包括用户账户和组账户两种. Linux系统下的用户账户有两种,普通用户和超级用户.普通用户在系统中的任务就是普通工作,管理员在系统上的任务就是对普通用户和整个系统进行管理.管理员对系统具有绝对的控制权,能够对系统进行一切操作. 除了用户账户之外,Linux系统下还有组账户.组是用户的集合.在Linux系统中组有两种类型:私有组和公共组,当创建一个新用户时,若没有指定他所属的组,Linux系统就创建一个和该用户同名的私有组.这个私有组只包括这个用户自己

linux系统用户以及用户组管理

用户组管理 1.   groupadd 功能说明:新建群组. 语 法:groupadd [-g gid [-o]] [-r] [-f] [群组名称] 补充说明:groupadd 可指定群组名称来建立新的群组帐号.需要时可从系统中取得新群 组值. 参 数: -g <群组识别码>  设置欲使用的群组识别码,group’s id. 实例 : 不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的 -g选项可以自定义gid 2. groupdel 功能说明:删除群组. 语 法:g

Linux之用户管理

Linux系统是个多用户系统,它能做到不同的用户能同时访问不同的文件,但是又不可能让每一个用户都随意可随意访问修改别的用户的数据,因此一定要有文件权限控制机制.Linux系统的权限控制机制和Windows的权限控制机制有着很大的差别.Linux的文件或目录被一个用户拥有时,这个用户称为文件的拥有者(或文件属主),同时文件还被指定的用户组所拥有(文件属组).一个用户可以是不同组的成员,这可以由管理员控制.文件的权限由权限标志来决定,权限标志决定了文件的拥有者.文件的所属组.其他用户对文件访问的权限

linux 下用户管理

linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 999 ) 3.普通用户:一般是可以登录系统的,用管理员来添加:UID = 500 ~ 60000( RHEL7 = 1000 ~ 60000) (UID:用户的标识) 二.与用户相关的配置文件 1./etc/passwd 使用man 5 查看 内容以" :"分割分别是 用户名:密码占位符