今天呢,我们来聊一聊关于用户和组的管理指令。
一、用户和组的概念
对于我们的计算机而言,它是不记录名字的,只记录数字,所以,就给每一个用户排了编号,这个编号我们就称之为用户ID。大家都知道,linux系统下,拥有最高权限的用户就是root(超级管理员)了,所以root(超级管理员)的ID就是0,排在了最前面,以彰显它的地位。在我们的linux centos7系统中,系统用户(进程)的ID号是1-999,普通用户的ID号是从1000开始的,在我们创建用户时,系统会自动分配一个ID号,当然我们也可以自己指定,至于如何指定,在下文中小编会给大家介绍的。
关于组,组就是把若干个用户放在其中,这样一来,就更加方便我们对成员的管理,比如:把公司里一个部门的成员放在一个组里,直接把权限设置到组,这样,这个部门的人都可以访问到他们需要访问的文件,会比一个一个设置快捷方便很多。
二、用户和组的主要配置文件
用户和组的配置文件有很多,主要的文件就是下面的这四个:
1、/etc/passwd:该文件中存储的是用户及其属性信息,包括名称、UID、主组ID等等。
2、/etc/group:顾名思义,这个文件中存储的就是组及其属性信息啦。
3、/etc/shadow:该文件存储的是用户密码及其相关属性。
4、/etc/gshadow:该文件存储的是组密码及其相关属性。
每个文件的具体内容和用法稍后我们也会提到。
三、四大主要文件的格式
1、/etc/passwd
在linux系统中,想要了解一个文件最简单的方法就是用man啦。
上图就是man出来的结果,红色方块圈出来的就是格式信息啦~我们用cat查看一下/etc/passwd的具体信息,下图就是root具体信息的截图。
图中可以看出,每一部分内容是由":"分隔开来的,每一部分的意思就是上一张图中用红色方块框起来的部分,分别如下:
登录用户名:密码:UID:GID:用户全名或注解:用户家目录:默认的登陆shell。
2、/etc/group
同理,我们用man查看一下:
同样的,我们来看一下具体的显示:
分别如下:组名:密码:GID号:组成员列表
在这里,需要说明的是:组成员列表显示的是将该组作为辅助组的成员列表。(很重要很重要很重要!!!)那么问题来了,如果我们将组成员列表中的某用户主组更改为这个组,还会显示吗?我们就用gentoo这个用户来试一下:
从图中,我们可以看出,当成员先把改组当做辅助组,再转成主要组时,显示内容是不变的~
3、/etc/shadow
我们来man一下该指令:
接下来我们看一下root用户的具体信息:
每一块的具体说明,在上一张图中已经标示过了。
在这里,我们要介绍一个命令——chage
Chage -l username显示帐户的密码信息
-d 指定密码的上次修改时间(yyyy-mm-dd)
-d 0 则强制用户下次登录时必须修改密码
-E 指定账户的过期时间
-I 密码过期之后多少天帐户过期
-m 设置最小存活时间
-M 设置最大存活时间
-W 设置密码过期前的提醒时间
chage username交互式修改用户的密码策略
可能有人会问,什么是交互式修改用户的密码呢?下面我们就来演示一下:
当我们输入chage weichen指令后,就会依次弹出图中信息,我们挨个填一下就好。这样是不是很方便呢~修改过后我们来查询一下weichen的信息:
图中我们可以看出,已经按照我们设定的修改过啦~
4、/etc/gshadow
Gshadow一共显示四部分信息,同样以root为例:
分别为:组名:组密码位:管理员:组成员
一样的,该处显示的组成员也是将该组作为辅助组的成员列表。
上图中我们可以看出,组密码位和管理员都是空的,那么如何设置呢?
设置组密码: gpasswd groupname
关于管理员,我们要说的命令会详细一些:
任命管理员 gpasswd -A xiaoqiao,luren admin
撤消所有管理员 gpasswd -A "" admin
gpasswd -a libai admin往组中增加用户
gpasswd -d libai admin将用户从组中删除
gpasswd -r admin删除组密码
gpasswd -R admin限制非辅助组用户可以通过newgrp admin获取主组权限。当前密码被删除替换为!
gpasswd -M redhat,libai admin设置辅助组的成员列表。
重点来了!管理员只能由root来任命或者撤销,可以同时有多名一起,中间用","隔开。身为管理员,当然有不一样的权力啦:管理员可以修改组密码,同时也可以将用户从该组(辅助组)当中添加或者删除!
四、用户和组的管理命令
千呼万唤使出来,我们终于说到了最重要的部分。
1、用户管理命令:
(1)用户创建之useradd
useradd
-u uid username 创建用户时指定uid(如不指定则Centos:500-60000, Centos7: 1000-60000)
-o -u uid username 创建用户时指定uid(可以与已存在用户的uid相同)
-g groupname username 创建用户时指定主组为某个已存在的组。(将不会再创建与用户同名的组)
-c ... username 创建用户时指定描述信息。相当于chfn ... username
-d path username 指定用户的家目录(确保指定的家目录所在的上级目录要存在,且家目录本身不能存在)
-s /sbin/nologin username指定用户的默认shell
-G group1[,group2] username指定用户的辅助组
-N username 设置用户的主要组为默认组(users,uid=100)
-r username 创建系统用户
-p 密码 创建用户时设置密码
(2)用户属性修改之usermod
usermod
-u newuid username 修改用户的UID
-o -u newuid username 修改用户的uid(可以与已存在用户的uid相同)
-aG 加组名,可以追加辅助组而不用覆盖之前的组
-G "" username 或 usermod -G primarygroup username 清空用户所有的辅助组
-g groupname username 修改用户的主组
-s /sbin/nologin username修改用户的默认shell
-c ... username 修改用户时指定描述信息。相当于chfn ... username
-d /.../path username 修改用户的家目录(不会创建,只修改/etc/passwd当中的家目录信息)
-m -d /.../path username修改用户的家目录信息,并将家目录移动到目的目录并改名。
-l newname oldname 修改用户名
-L 给用户/etc/shadow中的密码位加!使用户被锁定
-U 把!拿掉。
-e yyyy-mm-dd 设置一个帐户过期时间
-f days 指定密码过期之后多少天帐户过期
(3)删除用户之userdel
Userdel的用法很简单,后面加上用户名即可。需要说明的一点是,如果你想在删除用户的时候,连同他的家目录和邮件等信息一同删除,则需要加上-r,如图所示:
这样过就可以把用户李白的所有信息都删除了。
(4)查看用户信息之ID
id username 查看每一用户的信息
id –u 查看当前登录用户的UID
id –un 查看当前登录用户的用户名
id –g 查看当前登录用户的GID
id –gn 查看当前登录用户的主组名字
(5)切换用户之su
su (switch user)
su username 非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - username 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
-c 'command' 以用户的身份执行命令而不登录
2、组管理命令
(1)创建组之groupadd
groupadd -g gid groupname 创建指定gid的组
-r groupname 创建系统组
(2)修改组属性之groupmod
groupmod
-n newgrpname oldgrpname 修改组名
-g newgid groupname 修改gid
(3)删除组之groupdel
groupdel groupname 删除组
(4)更改及查看组成员之groupmems
groupmems -g admin -a libai (仅能一次加一个用户到组中)
groupmems -g admin -d libai 将指定成员从组中删除
groupmems -g admin -l 列出指定组的成员列表(辅助组)
groupmems -g admin -p 清空指定组的所有成员(辅助组)。
以上,就是我对用户和组管理的小结,如有不足之处,还请大家多多指教诺~