前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第六章 用户和组

第六章 用户和组

作者头像
晓天
发布2019-07-04 14:17:14
8740
发布2019-07-04 14:17:14
举报

第六章 用户和组

6.1 用户管理

6.1.1 用户创建

其实在真生的生产环境中(即实际的项目运行环境)中,管理员操控Linux系统,并不都是使用root用户的,为了项目的安全与稳定,一般操控者都是使用普通用户登录系统的,所以在Linux关于用户的管理与配置还是使用比较多的,下面我们来详细介绍一下。

首先是用户的创建命令:useradd,其实Linux中useradd与adduser命令功能相同,只不过我们更习惯于使用useradd。示例如下:

useradd zhang ---新建用户

passwd zhang ---为新用户设置密码。

注:仅root管理员有权给其他用户设置密码

passwd ---设置当前用户自己的密码

6.1.2 用户配置文件

用户创建成功后,即可使用,而且重启后仍然存在。按照之前我们讲过的配置文件的思想,既然是重启后仍可用的,必定在系统中会有相应的配置文件做记录。记录用户信息的配置文件是:/etc/passed。我们可以vi看一下

vi /etc/passwd , 可见,里面内容较多,仔细观察会发现文件中是针对一个用户,一行文字描述,每个用户会有7列信息,之间用:分隔,这7列表示的意义是:

第一列:用户名

第二列:密码列,但有专用的密码配置文件记录密码,所以用x填充

第三列:用户ID,简称UID,UID由16bit的二进制组成,范围:0-65535

规律:0-99 系统用户 100-999 软件用户 1000以上 自定义用户

第四列:用户所在私有组ID,简称GID。大小范围、使用规律同UID

第五列:用户属性,如:电话、邮箱、住址等等,一般空着

第六列:用户家目录

第七列:用户登录后默认启用的shell

其中,第四列提到的私有组概念,我们会在下一节介绍,这里可以暂时人为是用户所在组的ID号。

这七列信息,日常使用会比较频繁,所以建议读者能够完全记住,可以独立写出。

结合之前所学的字符处理,我们可以灵活的进行用户信息的处理:

awk -F ":" '{print $1}' /etc/passwd ---仅显示用户名

awk -F ":" '($3>=1000){print $1,$3}' /etc/passwd ---显示自定义用户

第二列的密码列,Linux中有专用的密码配置文件,这个文件是:/etc/shadow,我们也可以vi查看一下其内容。里面也分很多的列:

用户名: 用户登录到系统时使用的名字,而且是惟一的

口令: 即密码,存放加密的口令

最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间

最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令

最小时间间隔:再次修改口令之间的最小天数

警告时间: 从系统开始警告到口令正式失效的天数

不活动时间:口令过期少天后,该账号被禁用

失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算

标志: 未使用

由于密码配置文件中的时间计算比较麻烦,所以关于这个文件中的各列,我们可以了解其功能,不必太过严苛的记忆。

6.1.3 用户锁、解锁

用户加锁即禁用账户,则用户将不可登录。可以有两种方式实现:

方式一:锁密码

passwd -l zhang ---锁用户

passwd -u zhang ---解锁

方式二:锁用户名

usermod -L zhang ---锁用户

usermod -U zhang ---解锁

有心的读者可能会问,usermod –L 是锁用户,为什么会是大写L呢?其实按照Linux的命令规律,一般参数都是小写,既然用到了大写,说明小写l有其他功能。具体小写l其实是用户改名的功能:

usermod -l lisi zhang ---格式:-l 后面 先写新名,再写旧名

改完名的用户,可以vi /etc/passwd查看下,其实除了名字变了,其他UID、家目录等信息仍没变,所以改名功能对用户使用影响不大,使用率并不多。

另外,Linux中为了方便用户登录,还支持免密登录:

passwd -d zhang ---删除密码,即免密登录,实验可见无需密码即可登入系统

passwd zhang ---重新设置密码,即解除免密登录

除了免密意外,Linux还支持不禁用用户的前提下拒绝用户登录。具体使用如下:

场景:本机安装了某一项服务,如:邮件服务。该服务使用系统账号同时作为服务账号用,则系统登录密码同时是登录服务的密码。所以对于系统来讲存在安全风险,此时需要设置该账号不允许登录系统,但可以登录服务:

vi /etc/passwd ---找到该用户,设施shell为:/sbin/nologin , 即登出、注销shell

6.1.4 用户切换

Linux的命令操作界面中,除了可是使用ALT+F1-F6的终端切换外,也支持直接的用户操作状态切换,使用的命令是:su。格式如下:

su zhang ---切换至zhang用户状态下操作

su --- su后面不加用户名,即su到root状态下,常用语普通用户su到管理员身份下

su - zhang ---有-表示su过去后使用目标用户的环境变量配置,不加-的,表示仍使用原用户的环境变量配置

注:root用户su到其他用户,无需密码验证;但是普通用户间切换或su到root下都需要输入目标用户的密码才可以切换成功

exit ---返回之前用户状态

su命令使用灵活、方便,所以使用率较高,但需要注意的是,su到一个用户后,若要再su到另一用户或返回之前用户,建议先exit返回后再转,因为,每次su都会以目标用户的身份新开一个shell,su的层次过多会对系统资源(cpu、内存)有所浪费。

6.1.5 删除用户

用户的删除对应useradd的拼写结构,很容易联想到userdel,只是删除会有参数上的区别:

userdel zhang ---删除用户,但保留家目录等用户相关文件

userdel -r zhang ---删除用户,并删除所有该用户的相关文件

读者可以依次输入命令验证一下,不加-r参数的目的是,删除用户后,但保留其文件,以防止数据丢失,便于系统后续使用。若确定用户相关文件都是无用文件,即可-r彻底删除。

6.2 组管理

6.2.1 组的分类

Linux中组的概念与windows中的有些区别,除了组可以实现批量用户的管理功能之外,还增加了私有组的概念。

私有组:又称用户的主组,英文为primary group

Linux中规定,一个用户必须属于且只能属于一个私有组

新建用户时,若没有特殊指定,Linux系统会自动创建一个与该用

户同名的组,作为其私有组。 一个私有组,可以包含多个用户。

私有组不可删除。

标准组:又称附属组。

一般意义上用于多用户管理的组。用户可以属于一个或多个标准

组,也可以不属于任何标准组,同样,标准组中可以有或无用

户。标准组可删除。

其实私有组的概念我们可以认为是一个人出生后的家庭,我们每个人出生后都会直接属于一个家庭,即是私有组的意思。而上学或工作后,进入了班级或单位,受班级或单位制度的限制,即标准组。而我们平时在工作中,一般多使用标准组,对于私有组使用较少,但必须知道私有组的存在和原理。

6.2.2 组管理命令

首先,我们先来看一下组的创建:

groupadd zu11 ---新建组

与创建用户类似,组创建后,系统中也有专用的配置文件做组的记录。

vi /etc/group ---编辑组配置文件

可见里面会有四列信息显示:

组名:组密码,用x填充:组ID,即GID:标准组成员

值得注意的是,第四列中显示的是该组的标准组成员,所以很多如root组,后面没有显示任何用户,因为root用户是root组的私有组成员。

下面来介绍下组中用户的添加与删除

gpasswd -a zhang zu11 ---用户加入标准组

id zhang ---查看用户的id及组的相关信息

gpasswd -d zhang zu11 ---组中删除用户

另外,我们可以思考下,如果用户zhang加入到zu11中,是否以zhang用户的身份登录后可以给该组加入新成员呢?答案是不可以的,也就是说,即便是组中成员也不可以随意向组中加入新成员。因为,在Linux中只有组的管理员才有权限加入、删除成员。

gpasswd -A zhang zu11

--- -A指定组的管理员,只有组管理员才有权限给组加入、删除用户

gpasswd -A root zu11

--- 再次指定组管理员,是替换关系,即原管理员被撤权

gpasswd -A root,zhang zu11 --- 设置多个管理员

这里需要注意的是,再次指定组管理员的话,之前管理员是会被撤销的,而且组的管理员设置后,是无法查看到的,我们只能做好操作记录,以便后期管理。

除了gpasswd命令,usermod命令也可以设置用户的标准组、私有组,不过与gpasswd还是有很大区别的:

usermod -G zu22 zhang --- -G 替换用户的标准组,

但此命令将用户加入到指定的标准组后,会从其他标准组中退出。也就是说,假设用户zhang之前已在zu11中,则执行上述命令后,zhang会加入zu22,但同时也会从zu11中退出。

usermod -g zu11 zhang --- -g 替换用户的私有组

最后,来看一下组的删除:

groupdel zu11 ---删除组,前提:该组不是私有组

到此,我们知道用户创建后会有UID、GID、家目录、SHELL等属性的设置,那么在创建用户时,我们其实是可以直接指定这些参数,无需使用系统默认设置的,如下:

useradd -u 1100 -g zu11 -G zu22 -d /mnt/lisi -s /bin/bash lisi

参数介绍:-u UID -g 私有组 -G 标准组 -d 家目录 -s shell

综上所述,我们可以总结得到,新建用户后会产生关系的相关文件是:/etc/passwd /etc/shadow /etc/group /home/家目录 $HOME/ 环境变量配置文件。

6.3 sudo授权

6.3.1 挂载光盘

在讲sudo授权前,为了能够方便案例演示,我们先来简单介绍一下Linux中光盘的挂载使用。

首先,我们先在虚拟机的中光驱中放入光盘:右键 虚拟机标签 ,选“设置”=>找到光驱,指定光盘镜像=>上侧点中:已连接=>确定

我们知道,光盘类似于磁盘分区,都是存储类设备,所以我们必须挂载后才可以使用,而Linux系统安装完毕后,已经为我们准备好了媒体的挂载点:/media,所以我们可以以root用户登录到虚拟机中,直接输入如下命令:

mount /dev/cdrom /media ---挂载光驱, /dev/cdrom 光驱设备

umount /media ---卸载光驱

6.3.2 sudo授权

学会了光盘的挂载,我们可以试着切换到普通用户身份下,试着挂载光驱看看,会报如下错误:

原因是在Linux中,很多命令普通用户是无权使用的,但是如果我们想允许特定的用户执行某些系统命令,该怎么办呢?这就需要用到sodu授权了

我们首先切换回root用户下:su root

visodu ---打开sudo编辑界面,注意:此命令中没有空格,是连续书写的。

其中会找到 root ALL=(ALL) ALL 这一行。这一行是允许root用户在任何主机(包括本机)上执行所有命令,在其下面一行写入就可以。

格式:用户 主机名=(以哪个用户的身份) 命令的绝对路径

注:命令绝对路径可以使用whereis查看到

示例:zhang centos7-1=(root) /usr/bin/mount,/usr/bin/umount

解释:给zhang授权,允许zhang在centos7-1主机上以root的身份执行mount、umount命令

好了,到此保存退出即可。其实用visudo命令其实就是编辑的/etc/sudoers配置文件。

下面切换到普通用户下做验证:

su zhang

sudo mount /dev/cdrom /media ---使用sudo执行命令,会提示输

入zhang的密码,验证成功后命

令执行成功

再有,我们也可以把多个命令设置成为命令别名,即把多个命令加入到一个命令集合中,以便多次授权给用户使用,具体如下:

visudo ---写入

Cmnd_Alias GUAZAI=/usr/bin/mount,/usr/bin/umount

---设定命令别名,即把多个命令组成一个命令集,注:别名必须大写

zhang CentOS7-1=GUAZAI ---给用户授权,注:是否写(root)皆可

%zu11 CentOS7-1=(root) GUAZAI

--- %给组授权,则组中成员允许使用sudo执行命令

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档