Linux 用户管理

目录

一、用户与用户组的概念

1、为什么要做用户与用户组管理

用户和用户组管理,就是添加用户和用户组,针对每个用户设置不同的密码。
问题:大家平时的笔记本电脑,会设置多个账户吗?为什么?
服务器要添加多账户的作用
针对不同用户分配不同的权限,不同权限可以限制用户可以访问到的系统资源 提高系统的安全性 帮助系统管理员对使用系统的用户进行跟踪

2、Linux的用户及用户组

①Linux的多用户多任务

Linux 系统是一个多用户多任务的操作系统,所谓多用户多任务,是指支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
例如:
小明所在的运维团队一共有四个人,分别有大毛,二毛,三毛,大毛负责网站,他的账户叫wangzhan, 二毛负责数据库,他的账户叫shujuku。
在同一时间,大毛和二毛都可以登录这台服务器,大毛可以查询网站的日志,二毛可以处理数据库的问题,他们之间互不影响。
由于我们设置了权限,大毛只能访问网站的日志,无法访问数据库;二毛可以处理数据库问题,但是不能访问网站的日志。这就实现了我们的多用户多任务的运行机制。

②什么是用户

任何一个运维人员想要登录服务器,都必须先申请一个账号,然后以这个账号的身份进入系统,就像我们前面说的wangzhan这个账号。 每个账号都拥有一个唯一的用户名和各自的密码,用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录

③什么是用户组

用户组是具有相同特征用户的逻辑集合,简单来说,就是具有相同****权限的用户的集合。 例如:人事部有20名员工,他们都需要访问一个文件夹,如果我们给这20个用户的账号分别设置权限,这样太麻烦了,所以我们会建立一个用户组叫HR,对这个组设置权限,将这20个用户加入这个组就可以了。

④用户和用户组的关系

A 一个用户可以属于一个用户组,具有此用户组的权限
HR组可以访问/hrfile的文件夹,当user01属于HR组,那么user01就可以访问/hrfile这个文件夹
B 一个用户可以属于多个用户组,此时具有多个组的共同权限
HR可以访问/hrfile的文件夹,运维可以访问/yunweifile的文件夹,当user01同时属于HR组和运维组,那么user01可以访问 /hrfile和/yunweifile
C 多个用户可以属于一个用户组,多个用户都具有此用户组的权限。
主组:指用户创建时默认所属的组,每个用户的主组只能有一个。创建用户时会同时创建一个和用户名相同的组
例如:添加用户xiaoming,在建立用户 xiaoming 的同时,就会建立 xiaoming 组作为 xiaoming 用户的初始组。
附加组:每个用户只能有一个主组,除主组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。 每个用户的附加组可以有多个,而且用户可以有这些附加组的权限。
通常用户和用户组的管理,包含以下工作:
☆ 用户组的管理
☆ 用户账号的添加、删除、修改以及用户密码的管理
注意三个文件:
☆ /etc/passwd 用户配置文件,存储用户的基本信息
☆ /etc/group 存储用户组的信息
☆ /etc/shadow 存储用户的密码信息

二、用户和用户组管理

1、用户组管理

用户组的管理包括用户组的添加、删除和修改。
为什么要建立用户组
前面我们说过,人事部有20名员工,我们要建立一个组,叫 hr,这样就不用分别给20个员工设置权限了。

① 用户组添加

命令:groupadd
作用:添加组
语法:# groupadd [参数选项 选项值] 用户组名
选项:-g:设置用户组ID 数字,如果不指定,则默认从1000 之后递增(1-999系统组)

用法一:groupadd 组名
示例代码:
#groupadd hr
含义:新建一个组叫做hr

提示:linux下我们执行完命令,有时候会没有任何提示,直接回到#提示符,这种状态表明,命令执行成功,没有报错。“没有消息就是最好的消息”
存储用户组信息的文件:/etc/group
使用cat命令,查看/etc/group文件,我们可以看到如下图所示:
/etc/group文件结构:

wheel : x : 10 : itheima
用户组名 : 密码(占位符) : 用户组ID : 这个组包含的用户(附属组)

特别说明:
1) 密码位x代表占位符,用户组可以设置密码,但是大部分情况下不需要设置
2)组内用户名:表示附加组是该组的用户名称。例如: wheel组(组ID10),是itheima账户的附加组,所以itheima这个账户,就显示在这里。 itheima组(组ID1000),是itheima账户的主组, 所以itheima这个账户就不显示在最后。
3)wheel组
只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效

② 用户组修改

命令:groupmod
语法:# groupmod [选项 选项值] 用户组名
选项:-g :gid缩写,设置一个自定义的用户组ID 数字
-n :name缩写,设置新的用户组的名称
示例代码:修改hr用户组,将组ID改成1100,将名称改为bjhr

用法一:groupmod -g 新的组ID -n 新的组ID 原有组ID
示例代码:
#groupmod -g 1100 -n bjhr hr
含义:将hr组的组ID改成1100,组名改成bjhr

③ 用户组删除

命令:groupdel
语法:# groupdel 用户组名
案例:删除bjhr组

用法一:groupdel 组名
示例代码:
#groupdel bjhr
含义:将bjhr组删除

2、用户管理

用户的管理涉及用户的添加、删除和修改。
与用户相关的文件:/etc/passwd

①useradd添加用户

命令:useradd
作用:添加用户
语法:# useradd [选项 选项的值] … 用户名
选项:-g:表示指定用户的用户主(主要)组,选项值可以是用户组ID,也可以是组名
-G:表示指定用户的用户附加(额外)组,选项值可以是用户组ID,也可以是组名
-u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-c:comment,添加注释(选择是否添加)
-s:指定用户登入后所使用的shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可以设置为/sbin/nologin (重要)
-d:指定用户登入时的启始目录(家目录位置)
-n:取消建立以用户名称为名的群组(了解)
当我新建一个账户叫user01, 同时,系统会自动建立一个组也叫user01

用法一:useradd 用户名
示例代码:
#useradd zhangsan
含义:创建用户zhangsan,不带任何选项。

注意:不用任何参数,创建用户,系统会默认执行以下操作:
1)在 /etc/passwd 文件中创建一行关于zhangsan用户的数据2)在 /etc/shadow 文件中新增了一行关于zhangsan 密码的数据3)在 /etc/group 文件中创建一行与用户名相同的组,例如zhangsan4)在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息,例如zhangsan5)自动创建用户的家目录,默认在/home下,与用户名同名
验证是否成功:
1)使用tail文件查看/etc/passwd文件
2)使用tail文件查看/etc/group文件
3)验证是否存在家目录(在Centos 下创建好用户之后随之产生一个同名家目录)

②etc/passwd存储用户信息的文件

使用vim命令打开/etc/passwd文件,如下图所示:

root : x : 0 : 0 : root : /root : /bin/bash
用户名 : 密码 : 用户ID : 用户组ID : 注释 : 家目录 : 解释器shell

用户名:登录linux时使用的用户名密码:此密码位置一般情况都是"x",表示密码的占位,真实密码存储在/etc/shadow用户ID:用户的识别符,每个用户都有唯一的UID【-u】用户组ID:该用户所属的主组ID;【-g】
注释:解释该用户是做什么用的;【-c】家目录:用户登录进入系统之后默认的位置;【-d】解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机器语言,传递给内核处理;如果解释器是==/bin/bash 表示用户可以登录到系统==,/sbin/nologin表示该用户不能登录到系统【-s】
下面我们来看一下对于useradd参数的使用
企业场景1:
公司新员工lisi,属于gzhr部门,用户ID1200,不允许登录系统
创建用户lisi,默认lisi属于自己同名的主组,让lisi 属于附加组gzhr,用户ID 1200,注释为"hruser lisi",解释器为/sbin/nologin

用法二:useradd -G 附加组名 -u 用户ID -s /sbin/nologin -c "shuser lisi" 用户名
示例代码:
#useradd -G gzhr -u 1200 -s /sbin/nologin -c "gzuser lisi" lisi
含义:创建用户lisi,不带任何选项。
gzhr行的含义:在gzhr的组里(组id 是1002)有一个组内用户lisi(lisi 的附加组就是1002,附加组的名字是gzhr)。
如果需要为一个用户指定多个附加组,只需要将多个附加组的id 通过英文逗号“,”分割即可。
例如-G 500,501,502

① 主组只能有1 个(类似于亲生父母只有一对),附加组可以多个,也可以没有附加组(类似于认干爹干妈,可以有也可以没有,也可以有多个)
② 主组必须有
③ 后期将权限管理的时候,关于文档的属组指的是主组(了解)

③id查看用户信息

命令:id
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
语法1:# id 默认显示当前执行该命令的用户的基本信息
语法2:# id 用户名, 显示指定用户的基本信息
如何验证以上信息是否正确?
答:验证用户信息:通过文件/etc/passwd,验证用户组信息:通过文件/etc/group

④usermod修改用户

命令:usermod(user modify)
语法:# usermod [选项 选项的值] … 用户名
作用:修改用户的各种属性
选项:-g:表示指定用户的用户主组,选项的值可以是用户组的ID,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock
-c<备注>:修改用户帐号的备注文字
-d<登入目录>:修改用户登入时的目录
-s:修改用户登入后所使用的shell
企业场景2:
公司员工wangwu,属于shhr部门,现在要休产假,产假期间,暂时停止她登陆电脑的权限,同时原来属于gzhr部门的员工lisi,负责wangwu的工作,所以,需要把lisi加入到shhr的组,同时,修改lisi的账户注释为“gzhr shhr user”
对于wangwu用户,我们要执行锁定和解锁操作
对于lisi用户,我们要将lisi加入到shhr的附加组,同时修改lisi账户的注释

用法一:usermod -L 王五账户名
示例代码:
#usermod -L wangwu
含义:将王五账户暂时锁定

用法二:usermod -U 王五账户名
示例代码:
#usermod -U wangwu
含义:将王五账户解锁
用法三:usermod -G 组名 -c “注释内容” 李四用户账号
示例代码:
#usermod -G shhr -c "shhr user" lisi
含义:将李四的账户加入shhr组,并修改注释内容为shhr user

⑤passwd修改用户密码

Linux 不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
命令:passwd
语法:# passwd 用户名 【如果不指定用户名则修改自己的密码】
作用:修改用户密码
企业场景3:
王五产假休完回到公司上班,需要将王五的账户解锁,在使用usermod -U解锁时,我们看到一个错误信息如下:
usermod: unlocking the user’s password would result in a passwordless account.
解锁这个账户,将导致一个没有密码的账户,因为之前王五的账户没有密码。这时候,我们就需要使用passwd命令,给王五的账户设置一个密码

用法一:passwd 账户名
示例代码:
#passwd wangwu
含义:为wangwu账户设置密码
注意:
    当密码过于简单时,系统会提示这是一个不好的密码,因为它太简单了,但是我们仍然可以坚持使用这个密码。
    在我们输入密码时,屏幕不会有任何显示。
    密码需要输入两次,请确保两次输入的密码是一样的。

示例代码:设置wangwu的用户密码

⑥认识/etc/shadow文件

由于 /etc/passwd文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了shadow文件中。
/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。
与用户密码相关的文件:/etc/shadow
为用户设置密码之后,会自动在/etc/shadow文件中进行体现,使用vim编辑器打开:
第一列为用户名,例如zhangsan
后面是加密后的密码,就是$开头的字符串
如果显示为!!,则表示这个用户没有设置密码。
由以上截图所知,zhangsan,lisi是没有设置密码的。wangwu我们刚刚设置了密码,所以显示为一个加密的字符创
任务:新建一个账户叫ityunwei
新建第二个账户叫shichang
给ityunwei账户设置一个密码
进入shadow文件,观察两个账户的区别

⑦su切换用户

在设置用户密码之后就可以使用此账号进行登录系统了,如果系统处于已登录状态,则可以使用su命令进行切换用户。
为了系统安全,企业中通常不会允许root用户直接登录计算机,但是工作需要,我们又需要使用root权限,这时候,我们就可以先使用一个普通用户登录计算机,再通过su命令切换到root权限。
命令:su
语法:# su [-] 账号
作用:切换用户

用法一:su 用户名
示例代码:
#su root
含义:切换到root权限

注意:
a. 从root 往普通用户切换不需要密码,但是反之则需要root 密码;
b. 切换用户之后前后的工作路径是不变的,添加了选项[-]会自动切换到用户的家;
c. 普通用户没有办法访问root 用户家目录,但是反之则可以;

启用wheel组设置(了解)
步骤1:使用vim编辑器 打开/etc/pam.d/su文件
步骤2:编辑文件,去掉auth required pam_wheel.so use_uid这一行前面的#,使这一行配置生效
步骤3:下面是去掉#后的状态
步骤4:保存退出 :wq
这时,只有在wheel组内的用户才可以su到root

⑧userdel删除用户

命令:userdel
语法:# userdel 选项 用户名
作用:删除账户及其对应家目录
选项:-r:表示删除用户的同时,删除其家目录/home下的对应文件夹
注意:已经登录的wangwu用户删除的时候提示删除失败,但是没有登录的lisi 用户可以正常删除,那这个时候想删除wangwu怎么办呢?
解决办法:简单粗暴,kill 对应用户的全部进程
提示:所有跟用户操作的命令(除passwd 外,只能修改自己的密码,即不指定用户名)只
有root 超级管理员有权限执行。
备注:也可以在登录需要删除的用户之后,按下快捷键“ctrl+d”进行对当前用户的注销,随后退回到上一个用户(root)此时就可以对需要删除的用户进行删除操作。
删除账号=>删除家=>删除所属组(主组)

三、管道

1、管道符

管道符:|
作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

2、过滤功能

# ls / | grep “y”
grep 指令用于“过滤”
grep 语法:grep 选项 文件路径/内容

针对上面这个命令说明:
① 以管道作为分界线,前面的命令有个输出,后面需要先输入(缺少查找范围),然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入。
为了便于理解,上述的指令变相实现可以如下:
# ls / > xxx.txt 将ls /的结果保存到xxx.txt文件中
# grep “y” xxx.txt 使用grep指令搜索xxx.txt中的包含y的行

② grep 指令:主要用于过滤
语法:# grep [选项] “搜索关键词” 搜索范围

示例代码:获取/根目录下包含关键字"y"的文件信息

#ll / |grep y

3、特殊功能

通过管道的操作方法来实现less 的等价效果(了解)
例如:源指令是"less xxx.txt"使用管道的话则可以写成:cat xxx.txt | less
之前可以通过less命令查看一个文件,可以# less 路径
现在通过管道还可以:#cat 路径 | less
示例代码:

4、统计功能

问题:请使用学过的命令,来统计某个目录下的文档的总个数?
示例代码:使用Linux命令统计“/”下的文档的个数

示例代码:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息

5、xargs命令扩展

问题:为什么需要xargs命令?
答:之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令。
首先来看一个命令:

find /etc -name "*.conf" | ls -l (错误)
find /etc -name "*.conf" | xargs ls -l (正确)


xargs特别说明:

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

示例代码:多行输入单行输出

示例代码:-n 选项多行输出

xargs作为思考题

四、网络配置

1、ifconfig查看网络信息

命令:ifconfig
作用:获取网卡的相关信息
语法:# ifconfig

用法一:ifconfig
示例代码:
#ifconfig
含义:查看网络信息
注意,我们发现当前ens33看不到IP地址信息,那是因为网卡默认不启动


手动启动网卡连接,我们暂时使用图形化的方式,点击屏幕右上角电源按钮,在弹出菜单选择Connect

点击connect之后,我们会看到显示已连(Connected)

再次使用ifconfig命令,查看网络信息

192.168.81.130
ens33 :是默认的网卡
lo(loop,循环):表示回环网卡
virbr0:虚拟网络接口,因为咱们使用vmware虚拟机安装Centos

2、网卡配置文件位置

Linux的网卡配置文件,存放在/etc/sysconfig/network-scripts目录下,文件名格式为ifcfg-网卡名称

我们可以看到,ifconfig命令中显示我们的网卡叫做ens33,对应的,这里就有一个ifcfg-ens33的文件

2、配置文件详解

使用cat命令,查看ifcfg-ens33文件

3、systemctl查看网卡状态

命令:systemctl
语法:# systemctl status network

用法一:systemctl  status network
示例代码:
#systemctl  status network
含义:查看网络状态,active表示启用的,活动的。

4、systemctl启动/重启/停止网卡

命令:systemctl
语法:# systemctl start/stop/restart network
参数:start启动,restart重启,stop停止

用法一:systemctl start/stop/restart network
示例代码:
#systemctl stop network
含义:停止网卡服务

#systemctl start network
含义:开启网卡服务

#systemctl restart network
含义:重启网卡服务




一、Linux下用户管理

㈠ 用户概念及作用(了解)

用户:指的是Linux操作系统中用于管理系统或者服务的人
一问:管理系统到底在
管理什么

答:Linux下一切皆文件,所以用户管理的是相应的文件
二问:如何管理文件呢?
答:

  1. 文件基本管理,比如文件的创建、删除、复制、查找、打包压缩等;文件的权限增加、减少等;
  2. 文件高级管理,比如程序文件的安装、卸载、配置等。终极目的是对外提供稳定的服务。

㈡ 用户的分类

1、超级用户

  • 超级用户,也叫管理员,root。该用户(root)具有所有权限,UID=0并且绝对只能是0。

2、系统用户

  • 系统用户,也叫程序用户。一般都是由程序创建,用于程序或者服务运行时候的身份。
  • 默认不允许登录系统。1<=UID<=499
  • 比如后面要学的web服务的管理用户apache,文件共享ftp服务的管理用户ftp等注意:Centos7/RHEL7中,系统用户UID范围:1<=UID<=999

3、普通用户

  • 普通用户,一般都是由管理员创建,用于对系统进行有限的管理维护操作。
  • 默认可以登录系统。500<=UID<=60000注意:Centos7/RHEL7中,普通用户UID范围:1000<=UID<=60000

特别说明

  1. 用户指的是操作系统上管理系统或服务的人,是人,就有相关的属性信息
  2. 用户的属性信息包括但不限于,如:==家目录、唯一身份标识(UID)、所属组(GID)==等
  3. 今天我们讨论的用户指的是普通用户,即由管理员创建的用户

㈢ 用户的基本管理(掌握)

1、创建用户(useradd)

(1) 基本语法和选项
useradd [选项] 用户名
常用选项:
-u	指定用户uid,唯一标识,必须唯一	
-g	指定用户的默认组(主组)
-G	指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d	指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s	指定用户默认shell

查看系统支持的shell(命令解释器)
[root@localhost Desktop]# cat /etc/shells 
/bin/sh				系统默认解释器bash的软链接
/bin/bash			系统默认的解释器
/sbin/nologin		不能登录操作系统,也叫非交互式shell
/bin/dash			兼容shell脚本不好,Ubuntu 6.10默认是Dash Shell
/bin/tcsh			其他shell
/bin/csh				其他shell
(2) 举例说明
① 创建默认用户
创建一个用户stu1
[root@localhost Desktop]# useradd stu1
查看用户信息
[root@localhost Desktop]# id stu1
uid=501(stu1) gid=501(stu1) groups=501(stu1)

注意:当创建一个默认用户时,系统会给该用户以下东西,以stu1为例说明

1)用户的UID(唯一标识)		501(系统自动分配)
2)用户的默认组(主组)	  stu1组,默认跟该用户的用户名一致;组ID(501),默认和用户UID一致
3)用户的家目录				/home/stu1
4)拷贝相应的文件到用户的家里
[root@localhost Desktop]# su - stu1
[stu1@localhost ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla
② 根据需求创建用户
1. 创建用户stu2,但是不能登录操作系统
注意:-s	指定用户的默认shell,/sbin/nologin表示不能登录系统,也叫非交互
[root@localhost Desktop]# useradd -s /sbin/nologin stu2
验证:
[root@localhost Desktop]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
切换用户失败,说明该用户不能登录系统
[root@localhost Desktop]# su - stu2
This account is currently not available.

2. 创建用户stu2,同时指定该用户的家目录为/rhome/stu2
注意:-d	指定用户的家目录,前提该用户家目录的上一级目录/rhome必须存在

[root@localhost Desktop]# mkdir /rhome
[root@localhost Desktop]# useradd -d /rhome/stu2 stu2
[root@localhost Desktop]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
说明:指定stu2家目录/rhome/stu2时,只需要/rhome存在即可,系统会默认在/rhome下创建stu2目录
③ 保存用户信息的文件
1. 用户信息保存文件/etc/passwd
了解相关配置文件内容,可以通过求man文档解决,即 man 5 passwd

以冒号:分割为7列,如下:
account  -->  stu1 	用户名称
password -->  x    	密码,将密码单独存放在另外一个文件中
UID      --> 501  	用户ID
GID      --> 501  	组ID
GECOS    --> 			用户自定义,描述说明
directory --> 			/home/stu1  用户的家目录
shell    --> 		/bin/bash用户的默认shell,其中/sbin/nologin表示非交互,不能登录系统

2. 用户密码信息保存文件/etc/shadow
了解相关配置文件内容,可以通过求man文档解决,即 man 5 shadow

以冒号:分隔为9列,如下:
login name
登录的用户名
encrypted password
加密后的密码;!!表示空密码,没有设置密码
date of last password change
最后一次更改密码的天数(距离1970年的1月1日到现在的天数)
minimum password age
密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码
maximum password age
密码的最大生存周期;如果30表示每隔30天需要更新一次密码
password warning period		密码过期前几天发出警告;7表示过期前7天开始警告 
password inactivity period
密码的宽限期;如果3表示允许密码过期3天,3天内还能登录系统,但是要求修改密码。3天后(密码过期3天后账户被封锁,需要联系管理员)
account expiration date
账户过期的时间,账户过期的用户不能登录;密码过期用户不能用原来的密码登录。以1970年1月1日算起。
reserved field
保留
④ 更改用户的账号信息(chage)[扩展]
chage  --help
-d		修改用户最后一次更改密码的时间
-m		修改密码的最小存活期(几天后才能修改密码)
-M		修改密码的最大存活期(每隔多少天更新一次密码)
-W		修改密码过期前警告(过期前几天发出警告)
-I		修改允许密码过期几天
-E		修改账户过期时间
-l		列出账户的信息
举例说明:
查看用户账号的相关信息命令:chage -l stu1
[root@localhost Desktop]# chage -l stu1
Last password change				: Mar 04, 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

修改用户账号的过期时间:2019-03-10过期
[root@localhost Desktop]# chage -E '2019-03-10' stu1
[root@localhost Desktop]# chage -l stu1
Last password change				: Mar 04, 2019
Password expires					: never
Password inactive					: never
Account expires					: Mar 10, 2019
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
修改用户账号的过期时间为10天以后:
[root@localhost Desktop]# chage -E $(date +%F -d '+10days') stu1

案例:设置mysql用户60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息

chage -M 60 -m 7 -W 7 mysql

案例:强制新建用户test第一次登陆时修改密码

chage -d 0 test

2、用户密码设置(passwd)

passwd 用户名		表示给指定用户修改密码
passwd 直接回车		表示给当前用户修改密码

[root@localhost Desktop]# passwd stu1
Changing password for user stu1.
New password: 密码不显示
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: 密码不显示
passwd: all authentication tokens updated successfully.
说明:
1.管理员root可以给任何用户修改密码
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范

3、修改用户信息(usermod)

① 基本语法选项
usermod [选项] 用户名
常用选项:
-u	指定用户uid,唯一标识,必须唯一	
-g	指定用户的默认组(主组)
-G	指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d	指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s	指定用户默认shell
② 举例说明
1. 修改用户stu1的uid为505
[root@localhost tmp]# id stu1
uid=501(stu1) gid=501(stu1) groups=501(stu1)
[root@localhost tmp]# usermod -u 505 stu1
[root@localhost tmp]# id stu1
uid=505(stu1) gid=501(stu1) groups=501(stu1)

2. 修改stu1用户的家目录为/rhome/redhat/stu1,默认为/home/stu1
[root@localhost tmp]# su - stu1
[stu1@localhost ~]$ pwd
/home/stu1
1) 创建新的家目录/rhome/redhat/stu1
[root@localhost tmp]# mkdir /rhome/redhat/stu1 -p
注意:新的家目录必须全部存在!!!
2) 修改stu1的家为新家/rhome/redhat/stu1
[root@localhost tmp]# usermod -d /rhome/redhat/stu1 stu1
[root@localhost tmp]# su - stu1
-bash-4.1$ pwd
/rhome/redhat/stu1
3) 拷贝家具(相关的配置文件)到新家里
[root@localhost tmp]# cp -a /etc/skel/. /rhome/redhat/stu1/
4) 再次查看
[root@localhost tmp]# su - stu1
[stu1@localhost ~]$

思考:是否可以直接在修改家目录时将原来家目录里的文件一起拷贝过去呢?

4、删除用户(userdel)

① 基本语法选项
userdel [选项] 用户名
常用选项:
-r	删除用户并且移除其家目录和邮箱
-f	强制删除正在登录的用户
② 举例说明
说明:
创建完用户后,家目录默认在/home/用户名下;用户的邮箱在/var/spool/mail/用户名
1. 删除user01用户以及家目录
[root@localhost tmp]# userdel -r user01
[root@localhost tmp]# id user01
id: user01: No such user

2.强制删除一个正在登录的用户
[root@localhost tmp]# userdel stu1
userdel: user stu1 is currently used by process 6052	说明该用户正在登录
[root@localhost tmp]# userdel -f stu1	强制删除

3. 只删除用户user02,不删除其家目录
[root@localhost tmp]# userdel user02

㈣ 课堂练习

  • 创建3个普通用户stu1~stu3,要求如下:
    1. stu1默认创建,密码为123
    2. stu2的家目录为/rhome/redhat/stu2,密码为123
    3. stu3用户不能登录操作系统,密码为123
useradd stu1
echo 123|passwd --stdin stu1

mkdir /rhome/redhat -p
useradd -d /rhome/redhat/stu2 stu2
echo 123|passwd --stdin stu2

useradd -s /sbin/nologin stu3
echo 123|passwd --stdin stu3
  • 修改stu2用户的家目录为/home/stu2

usermod -md /home/stu2 stu2

  • 修改stu3用户信息,让其可以登录操作系统

usermod -s /bin/bash stu3

  • 删除stu1~stu3三个用户以及其家目录
userdel -r stu1
...

二、Linux下组管理

㈠ 组和用户的关系(理解)


**核心:**组的目的是为了方便管理用户

  • 用户是操作系统上管理维护系统或服务的人
  • 组是用户的一个属性信息
  • 任何一个用户默认都会有一个主组(默认组)
  • 一个用户除了主组也可以有多个其他组(附加组)

**一问:**用户的主组和附加组到底有啥关系呢?
**答:**用户的主组和附加组半毛钱关系都木有
**二问:**那要这个主组或者附加组有啥用呢?
答:肯定是有用的,组的目的是方便管理用户,用户的目的是管理操作文件,文件就有权限这个属性。

  1. 用户要操作一些文件,文件是由用户创建,不同用户创建的文件的属性信息也就不一样
  2. 文件的属性都有啥呢?比如,文件的创建者,文件属于哪个组,文件大小,文件时间等
  3. 其中,不同用户所创建的文件的属组就是该用户的主组(默认组)
  4. A用户附加组也有可能是其他用户的主组,道理同上(权限章节再细细体会组的作用)

㈡ 组的管理(掌握)

1、创建组(groupadd)

① 基本语法
groupadd [选项] 组名
常用选项:
-g	指定组的GID(编号),默认唯一
② 举例说明
1.创建一个组admin
[root@localhost Desktop]# groupadd admin
2.查看组信息
[root@localhost Desktop]# tail -1 /etc/group
admin:x:506:
说明:关于/etc/group配置文件说明,可以man 5 group找帮助

3.创建一个组sysadmin,指定组的GID为1001
[root@localhost Desktop]# groupadd -g 1001 sysadmin
[root@localhost Desktop]# tail -1 /etc/group
admin:x:506:
sysadmin:x:1001

2、删除组(groupdel)

① 基本语法

groupdel 组名

② 举例说明
[root@localhost Desktop]# groupdel admin
[root@localhost Desktop]# groupdel stu2
groupdel: cannot remove the primary group of user 'stu2'
注意:以上信息说明不能删除属于其他用户的主组

3、组成员管理(gpasswd)

① 基本语法
gpasswd [选项] 组名
常见选项:
-a		添加用户到组
-d		从组中删除成员
-A		指定管理员
-M		指定组成员,可以批量添加用户到组中
-r		删除密码

gpasswd 组名		给组设置密码
② 举例说明
  • 添加用户到组里
1. 创建3个用户user01~user03
2. 将user01添加到sysadmin组里
方法:1:指定user01用户的附加组为sysadmin(站在用户角度)
# usermod -G sysadmin user01
方法2:使用gpasswd命令添加用户到组里
# gpasswd -a user01 sysadmin
-a选项:表示往组里追加用户
# gpasswd -M user02,user03 sysadmin		设置sysadmin组成员为user02,user03
-M选项:表示覆盖设置组成员(会覆盖原来的成员列表)
  • 删除组成员
将user03用户从组sysadmin里移除
# gpasswd -d user03 sysadmin

㈢ 课堂练习

  1. 创建一个admin组,组id为900

groupadd -g 900 admin

  1. 创建一个用户tom,并且admin组作为tom用户的附加组(要求在建立用户的时候就完成),密码为123
useradd tom -G admin
echo 123|passwd --stdin tom
  1. 创建一个用户jack,要求在建立用户之后使用gpasswd把jack加入到admin组,密码为123
useradd jack
gpasswd -a jack admin
  1. 给admin组设定一个默认密码为123 (gpasswd命令)

gpasswd admin

  1. 把tom用户设定为admin组的组管理员(gpasswd命令)
gpasswd -A tom admin
验证:
su - tom
gpasswd -a xxx admin

tail -5 /etc/gshadow
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值