Centos7用户管理

进入centos7 紧急模式恢复root密码

用户一般来说是指使用计算机的人,计算机对针使用其的每一个人给了一个特定的名称,用户就可以使用这些名称来登录使用计算机,除了人之外,一些系统服务也需要含有部分特权的用户账户运行;因此出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root在计算机中用拥有至高特权,所以一般只作管理用,非特权用户可以通过SU或SUDO程序来临时获得特权
GNU/Linux 通过用户和用户组实现访问控制----包括对文件访问、设备使用的控
个人可以拥有很多账户,只不是彼此名称不同,比如root名称已经占用就不能再用了,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获得该组的特权
GNU/Linux 系统中的每一个文件都有属一个用户(属主)和一个用户组(属组)。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。再次,我们可以通过 ls | stat命令查询文件属主、属组和权限
[[email protected] test]# ll | head -2
总用量 8
-rw-r–r--. 1 root root 12 9月 30 05:34 aa.txt
[[email protected] test]# stat aa.txt
文件:“aa.txt”
大小:12 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:34157942 硬链接:1
权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-09-30 05:34:55.234137864 +0800
最近更改:2019-09-30 05:34:34.000000000 +0800
最近改动:2019-09-30 05:34:48.300004871 +0800
创建时间:-

用户账号

用户的分类

Linux用户三种角色
超级用户: root 拥有对系统的最高的管理权限 ID=0
普通用户:系统用户 UID:1-999(centos7版本) 1-499(centos6版本)
本地用户 UID:1000+ 500+
UID:即每个用户的身份标示,类似于每个人的身份证号码.
虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp,apache

下图是用户和组的关系:
一对一:一个用户可以存在一个组中; 一对多:一个用户可以存在多个组中
多对一:多个用户可以存在一个组中; 多对多:多个用户可以存在多个组中
在这里插入图片描述

配置文件

在这里插入图片描述

用户管理

用户命令
命令:useradd

useradd -d -u “UID” -g "初始组" -G "附加组" -s "登陆的shell” 用户
-d:  -d 用户主目录路径, 可以指定用户家目录
-M:   不创建用户的主目录
-g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组,GID 等于 UID.
-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)
-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将shell设置成 /sbin/nologin 就可以禁止用户登录。

添加登录用户

例:添加一个名为harry的用户,并使用bash作为登录的shell

[[email protected] test]# useradd harry
[[email protected] test]# tail -1 /etc/passwd
harry:x:1000:1000::/home/harry:/bin/bash

说明:此命令会自动创建harry组,并成为harry用户的默认主组,同时默认的登录shell是bash
用户帐户的全部信息被保存在/etc/passwd文件。这个文件以如下格式保存了每一个系统帐户的所有信息 (字段以“:”分割)

harry❌1001:1001::/home/harry:/bin/bash
在这里插入图片描述
ry:用户名
x:密码占位符
1001:用户的UID,它都是用数字来表示的
1001:用户所属组的GID,它都是用数字来表示的
用户描述信息:对用户的功能或其它来进行一个简要的描述
/home/harry:用户主目录(shell提示符中“~”代表的那个)
/bin/bash:用户登录系统后使用的shell

查看系统中,支持哪些shell

[[email protected] test]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

指定用户UID : -u 用户ID

[[email protected] test]# useradd -u 1234 bf01
[[email protected] test]# id bf01
uid=1234(bf01) gid=1234(bf01)=1234(bf01)
[[email protected] test]# tail -1 /etc/passwd
bf01:x:1234:1234::/home/bf01:/bin/bash
[[email protected] test]# ls /home/bf01/
[[email protected] test]# ls /home/bf01/ -a
.  ..  .bash_logout  .bash_profile  .bashrc

指定用户主目录

[[email protected] test]# useradd -d /home/ab ab
[[email protected] test]# tail -1 /etc/passwd
ab:x:1235:1235::/home/ab:/bin/bash

指定用户的主组

[[email protected] test]# useradd -g ab abc
[[email protected] test]# id abc
uid=1236(abc) gid=1235(ab)=1235(ab)

指定用户的附属组

我们也可以把这个附属组称为补充组,用户可以有0个或多个附加组的成员
如果一个组有多个成员,我们是可以在/etc/group文件中最后一个字段看到的

[[email protected] test]# useradd -G ab,harry,root abcd
[[email protected] test]# id abcd
uid=1237(abcd) gid=1237(abcd)=1237(abcd),0(root),1000(harry),1235(ab)

在这里插入图片描述

创建用户的另外一个命令

[[email protected] test]# adduser ab2
[[email protected] test]# id ab2
uid=1238(ab2) gid=1238(ab2)=1238(ab2)
[[email protected] test]# which adduser
/usr/sbin/adduser
[[email protected] test]# ll /usr/sbin/adduser 
lrwxrwxrwx. 1 root root 7 9月  26 15:45 /usr/sbin/adduser -> useradd
注: adduser是useradd的软链接

删除用户

usage: userdel [options] LOGIN
选项:-r 删除的时候,会同时删除用户的家目录和/var/mail下的目录

密码的文件

[[email protected] test]# head -3 /etc/shadow
root:$6$bhfxiuVyq7L6ldwR$AecZe.eNdQiuZo3gj6xLNRZU2WMXoH/eDozqYwFoshzMt8rYzbJtsRlx4aAxdVJ.6DZ1KCPqWhgTFm1TkkpHB0::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::

在这里插入图片描述

在这里插入图片描述

给用户添加密码

交互

[[email protected] test]# passwd ab         

更改用户 ab 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

不交互

[[email protected] test]# echo 123 |passwd --stdin ab
更改用户 ab 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[[email protected] test]# echo 123 |passwd --stdin abc
更改用户 abc 的密码 。
passwd:所有的身份验证令牌已经成功更新。

互动: 两个用户的密码一样? 那么shadow中加密的hash值一样吗?
不一样。 因为salt不一样

控制添加用户规则文件的两个文件:/etc/default/useradd 和 /etc/login.defs

[[email protected] test]# 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                  #用户ID开始的数字
UID_MAX                 60000                  #用户ID结束的数字
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000                  #组ID结束的数字
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes                              #是否为用户建立home目录
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512                       #shadow 文件的加密算法
[[email protected] test]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100  #表示可以创建普通组 。 users组ID为100 。如果没有这一条,或者你把users这个组删除了,当你再创建用户时,将提示:useradd: group '100' does not exist 
HOME=/home  #哪个目录作为用户主目录存放目录。如果你不想让用户家目录在/home下,可以修改这个地方。
INACTIVE=-1   #是否启用帐号过期。passwd文件中第7栏。即:密码过期后是否会失效的设定值 。 无效。-1表示启用
EXPIRE=     #帐号终止日期 shadow中第8栏。账号失效的日期 就是 shadow 内的第八字段,你可以直接设定账号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设定此项目,但如果是付费的会员制系统,或许这个字段可以设定!
SHELL=/bin/bash   #默认shell使用哪个
SKEL=/etc/skel    #模板目录
CREATE_MAIL_SPOOL=yes  #是否创建邮箱文件

命令:chage

-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-W:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期,为0表示强制在下次登录时更新密码
例:修改用户ab密码信息:让这个用户ab首次登录系统时必须更改其密码

[[email protected] test]# chage -d 0 ab
新开一个终端用ab这个用户连接
ssh [email protected]
Connecting to 10.10.100.88:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

You are required to change your password immediately (root enforced)
WARNING: Your password has expired.
You must change your password now and login again!
更改用户 ab 的密码 。
为 ab 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:

两个用户的UID可以一样吗?
[[email protected] test]# vim /etc/passwd 改ab uid为0
在这里插入图片描述

查看用户相关命令:

#id 用户和组的信息
#whoami   #查看当前有效用户名
#who #显示目前登入系统的用户信息。
#w # w命令用于显示已经登陆系统的用户列表
#users #用于显示当前登录系统的所有用户的用户列表

修改用户信息

语法:usermod 【参数】用户名
常用参数:
-u UID
-d 宿主目录
-g 起始组 #只能有一个
-G 附加组 #可以有多个
-s 登录shell
-L 锁定

修改UID

[[email protected] test]# id abc
uid=1236(abc) gid=1235(ab)=1235(ab)
[[email protected] test]# usermod -u 1200 abc
[[email protected] test]# id abc
uid=1200(abc) gid=1235(ab)=1235(ab)

更改用户的主目录

[[email protected] test]# usermod -m -d /mnt/abc abc
[[email protected] test]# cat /etc/passwd
abc:x:1200:1235::/mnt/abc:/bin/bash    #目录已更改   
abcd:x:1237:1237::/home/abcd:/bin/bash
ab2:x:1238:1238::/home/ab2:/bin/bash

添加说明信息

[[email protected] test]# usermod -c "helo word" abc
[[email protected] test]# cat /etc/passwd

abc:x:1200:1235:helo word:/mnt/abc:/bin/bash     #说明信息
abcd:x:1237:1237::/home/abcd:/bin/bash
ab2:x:1238:1238::/home/ab2:/bin/bash

解决模板文件被删之后显示不正常的问题

[[email protected] test]# rm -rf /home/ab/.bash*
[[email protected] test]# su - ab
上一次登录:一 9月 30 06:18:57 CST 2019从 10.10.100.29pts/1 上
-bash-4.2$

[[email protected] ~]# cp /etc/skel/.bash* /home/ab/
[[email protected] ~]# chown ab:ab /home/ab/.bash*
[[email protected] ~]# su - ab
上一次登录:一 9月 30 06:33:37 CST 2019pts/0 上
[[email protected] ~]$ 

进入centos7 紧急模式恢复root密码

公司一台centos7系统,忘记root密码了,需要你快速把root密码修改为123456,找回root身份。
首先重启,按↑↓键,进入如下界面,选择第一项,按下e键进行编辑
在这里插入图片描述
在此界面找到ro这一项,改为rw init=/sysroot/bin/sh
在这里插入图片描述

改完之后,按下Ctrl+X进入紧急模式
原理:启动一个shell环境,系统并没有真正的启动
在这里插入图片描述
emergency [iˈmɜ:dʒənsi] 紧急
换根,修改密码
chroot命令用来在指定的根目录下运行指令
。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置
在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件

在这里插入图片描述
注:如果系统的selinux开启着,则需要执行命令: touch /.autorelabel
以更新系统信息,否则重启之后密码修改不会生效
先退出当前根,reboot重启系统
在这里插入图片描述

版权声明:本文为Rio520原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Rio520/article/details/101743887

智能推荐

spring与redis整合和序列化问题

spring与redis整合 首先用docker下载redis 下载:docker pull redis 运行:docker run -d -p 6379:6379 --name myredis docker.io/redis 连接redis Desktop Manager 然后开始在springboot上开始配置 application.yml: 自动配置好StringRedisTemplate...

CentOS 7配置南大docker镜像

文章目录 CentOS 7配置南大docker镜像 0.帮助页面 1.系统要求 2.卸载旧版本(没有旧版本可跳过) 3.安装方式 4.准备工作 5.可选操作 Stable Test Nightly 6.安装docker引擎 7. (可选)修改配置文件防止与xshell连接冲突 8.启动docker CentOS 7配置南大docker镜像 0.帮助页面 南大docker源:https://mirr...

Qcon演讲纪实:详解如何在实时视频通话中实现AR功能

2018年4月20日-22日,由 infoQ 主办的 Qcon 2018全球软件开发大会在北京如期举行。声网首席 iOS 研发工程师,iOS 端移动应用产品设计和技术架构负责人龚宇华,受邀分享了《基于 ARkit 和 ARcore,在实时视频通话中实现 AR 功能》,在演讲中剖析了 AR 与 VR 差异,ARKit 的工作原理,以及逐步讲解如何基于 ARKit 与声网Agora SDK 创建 AR...

POJ2348 UVa10368 HDU1525 Euclid's Game【博弈】

Euclid's GameTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4106    Accepted Submission(s): 1947 Probl...

使用Breeze.js编写更好的查询

这篇文章是由同行评审Agbonghama柯林斯 。 感谢所有SitePoint的审稿作出SitePoint内容也可以是最好的! 数据量正在迅速发展,他们正在变得越来越复杂,维护。 许多开发人员希望避免由数据问题他们的工作过程中造成的问题和头痛。 一个使我们的工作更轻松的图书馆是Breeze.js 。 在这篇文章中,我们将讨论我们如何能够写出更好的查询与Breeze.js。 但是首先,我们应该知道什...

猜你喜欢

Netty框架构建Nio编程

~~~ 随手点赞,养成习惯 ~~~ 为什么选择Netty框架 Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的。 优点: ① API使用简单,开发门槛低 ②功能强大,预置了多种编解码功能,支持多种主流协议 ③ 定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展; ④性能高,通过与其他业界主流的NIO框架对比,Nett...

【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)

Description Solution 首先我们可以知道两个性质:1、路径u-v和路径v-w可以合并为路径u-w;2、路径u1-v1加路径u2-v2和路径u1-v2加路径u2-v1是等价的(就是起始点和终点可以互换) 那么知道这些性质之后就很好做了。我们只用知道每个点多少次做起点和多少次做终点。 我们设f[i]表示满足i子树的需求i上的值要是多少。 那么枚举i的所有儿子,判断a[i]-f[i],...

【String-easy】541. Reverse String II 反转的元素,有反转个数和间隔

1. 题目原址 https://leetcode.com/problems/reverse-string-ii/ 2. 题目描述 3. 题目大意 给定一个字符串,和字符串的间隔k, 这个k表示每k个数反转一次,然后再间隔k个元素再反转k个元素。 4. 解题思路 只要按照间隔去反转就可以了。然后间隔k个元素不反转是通过让i每次递增 2*k完成的。 5. AC代码 6. 相似题型 【1】344. Re...

【C语言笔记结构体】

我们都知道C语言中变量的类型决定了变量存储占用的空间。当我们要使用一个变量保存年龄时可以将其声明为int类型,当我们要使用一个变量保存某一科目的考试成绩时可以将其声明为float。 那么,当我们要做一个学生信息管理系统时,需要保存学生的姓名、学号、年龄等信息,该怎么做呢? 如当要保存三个学生的信息时, 方法一是: 方法二是: 显然,方法二跟更清晰,因为它把name、num、age都集成在一个模板,...

39. Combination Sum 回溯算法简析

LeetCode传送门     这道题要求给你一组正数 C,然后给你一个目标数 T,让你从那组C中找到加在一起等于 T 的那些组合。     例如:给你 [2,3,6,7] 和 7,则返回 [[2,2,3],[7] ] 。      想解决这个问题前,我们首先引入一个新问题,图(树)的遍历问题。  ...