今天我们就来看看在 linux系统中重要的一个部分,那就是用户( user)和用户组(group)以及如何来管理用户(user)和用户组(group)。
先来了解一些用户(user)和用户组(group)有相关知识

什么是多用户多任务

我们知道,Linux是一个多用户、多任务的操作系统。那么什么是多用户多任务呢?
单用户、多任务:我登陆系统后,我可以在写BLOG的同时听音乐、聊天等等。
多用户、多任务:多个用户登陆到一台机子上,做不同的事。
细心的朋友一定会想,如果一个系统上,登陆了多个用户,那么系统的安全性是不是降低了,会不会泄露个人的隐私。哈哈,这一点您可以放心,Linux系统早就为我们想好了,只要你管理的好,这些就不是问题了。
既然Linux系统是个多用户多任务的操作系统,那么,系统是如何来识别这些用户的呢?这些用户权限是如何分配的呢?其实,Linux系统中,用户的识别是通过UID来识别的,这个UID就如同我们的×××一样,是一组不可重复的数字,系统根据这个UID来区分用户的角色。
 

Linux系统的用户角色

root用户:系统唯一一个用户,可以登录系统并操作系统任何文件和命令,拥有最高权限;
系统用户:这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以自己增加这类用户;
普通用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员根据实际需要自行添加的;
如果说,我想为系统增加很多用户,而这些用户的权限都是一样的,这些相同的权限设置会不会不方便?当然不是,我们可以使用用户组。
用户组(group)就是具有相同特征的用户(user)的集合体。他是通过GID来识别的。
我们可以把这些具有相同特性的用户规划到一个组里面,这样管理起来是不是就方便了很多。
我们也可以把用户和用户组比喻成我们的家庭一样。家庭成员就相当于用户,而这个家就相当于一个组。家庭成员具有一些相同的权限。如进入家门,看电视等等。但家庭成员之间还是有个人隐私的,如个人日记等等。这些是家庭其他成员所没有的权限。那么这个家庭之外的,我们都称为其他(other)。

用户(user)和用户组(group)相关的配置文件

Linux系统上面的用户是如何登陆到计算机并取得shell的环境来工作呢?当你输入账号密码后,系统帮你处理了哪些事情呢?
你可以这样理解
用户在计算机前面利用tty1~tty7的终端机提供的login接口,并输入账号与密码后才能够登入。也可以通过SSH进行远程登陆。
当输入账号密码时,系统会先查找/etc/passwd里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的UID与GID(在/etc/group中)读出来,另外,该账号的家目录与shell也一并读出。然后进入/etc/shadow里面,找出对应的账号与UID,然后核对一下你刚刚输入的密码与里面的密码是否相符,如果一切都没有问题,那么就能登陆系统了。
有些人可能会问了,你是怎么知道系统会查找哪些文件的呢?下面我们对这些文件来个解析,我想大家就会明白了。
与用户(user)相关的配置文件
/etc/passwd    用户(user)的配置文件;
这个文件是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中,不过需要特别留意的是,里面很多账号本来就是系统正常运作所必须要的,我们可以简称他为系统账号, 例如 bin, daemon, adm, nobody 等等。这个就是文章开头说的系统帐户类。这个文件里面,每一行使用“:”分隔开,共有七个栏位
这个文件格式如下
passwd
注:
1、UID为0就表示管理员ROOT,他有最高的权限。如果你想把某个用户调整成系统的管理员ROOT的时候,可以直接把这个用户的UID改成0。所以说,系统的超级管理员不一定只有ROOT。但还是不建议把其他的用户UID改成0哦!
2、系统默认把UID从1~499做为系统的帐户使用。这主要是出于安全方面的考虑,系统上的服务,应尽可能的拥有较小的限制运行,而且这些帐户应该是不能登陆系统(/sbin/nologin)的。
在这个系统帐户中,还分
1~99:由Linux系统自行建立的系统账号;
100~499:若用户有系统账号需求时,可以使用的账号UID。
3、UID从500~65535是一般用户所使用的UID,其实现在系统最多能提供的UID为2的32次方-1(4294967295)个。
/etc/shadow 用户(user)影子密码文件;
这个文件也和passwd的格式差不多,也是用“:”分隔,只是代表的意义稍有不同。
showd
这个文件的格式如下
注:
1、因为这个文件的特殊性(是放置密码的地方),所以他的权限只有一个R权限(权限的问题,我们后面再来学习,这里先了解)。
2、在密码栏前面加上个!或*,通过改变密码字段长度,就会让密码暂时失效了,也就是说,禁止了某个用户的登陆权限了。
3、在 RHEL6中,加密的算法和以前的版本也不一样了,加密后的字段长度也增加了很多。
4、计算某个日期的累加天数,我们可以通过echo $(($(date –date="2011/01/06" +%s)/86400+1))来计算。其中2011/01/06就是想计算的日期,86400为每一天的秒数,%s为1970/01/01 以来的累积总秒数,加上1表示补齐1970/01/01当天。
说了这么多,大家可能还是很模糊,没有关系,我们再来看一下例子。
shadow_example
14980是:2011/01/06
第一和第二个字段:用户名和密码这个我相信大家都明白,只是大家可能会怀疑,密码全不会被翻译成明文,这一点放心,因为相同的密码,经过系统加密后的密码也是不一样的。所以说,由密码反推回明码那不是一件容易的事。
第三个字段14980:表示的是最近一次更改密码的日期2011/01/06
第四个字段3:能够再次修改密码的时间是3天以后,也就是说2011/01/09前,opser不能修改自己的密码。
如果说用户要改自己的密码,那么就会出现下面的提示
You must wait longer to change your password
passwd: Authentication token manipulation error

第五个字段30:密码过期日期在30天后(2011/01/06+30=2011/02/06)。也就是说,在2011/02/06这一天密码就过期了。但如果用户在2011/01/09~2011/02/05这期间改过了密码(为什么不是从2011/01/06开始?因为我们限制了3天内不容许修改密码),由于在更改密码的时候,第三个字段也随之改变,那么这个30天也会随之向后推。因为这个数值是参考第三个字段的。
第六个字段7:是密码过期日前的7天会提示用户密码快要过期。
第七个字段5:如果说用户到2011/02/06还是没有修改密码,那么这个密码还没有过期,还有5天的宽限。好就是说,在2011/02/11前还是可能登陆的,但系统会强制你输入旧密码和新密码。如果说到了2011/02/11还是没有修改的话,那么密码就失效了。
第八个字段15005:无论前面如何限制,只要到了15005=14980+25=2011/01/06+25=2011/01/31这一天,这个帐户就无效了。
我想通过上面的说明,大家对这个文件的意义应该很明白了吧!
 
与用户组(group)相关的配置文件
/etc/group 用户组(group)配置文件;
这个文件的格式如下
group
/etc/gshadow 用户组(group)的影子文件;
这个文件的格式如下
gshdow
这两个文件的格式和意义与用户的相关配置文件非常相似,在这里就不做更多的说明了,如果想了解更多,那就可以通过man来自己学习吧。
注:/etc/gshadow这个文件中的密码栏上面是“!”时,表示该用户组不具有用户组管理员。gshadow 最大的功能就是建立用户组管理员。

相关的管理命令汇总

用户管理相关命令
useradd        添加用户
adduser        添加用户
passwd         为用户设置密码
usermod        修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等
用户组管理相关命令
groupadd     添加用户组
groupdel      删除用户组
groupmod    修改用户组信息
groups        显示用户所属的用户组
newgrp       切换到相应用用户组
大家看了这么多的命令,可能会很头晕,其实在日常使用和维护中,我们常用的并不是很多,下面我们就把他们重新拆分组合,让学习变的很容易。

命令的具体使用

 
1、增加新用户、编辑用户与删除用户
相关命令:useradd, passwd, usermod, userdel
新增用户useradd
语法:useradd [options] LOGIN
options有很多(可以用useradd –hlep 或者man useradd查看),我们简单介绍几个。
-d 目录      指定用户主目录,(默认是在/home目录下创建和用户名一样的目录)
-g 用户组   指定用户所属的用户组(主组)
-G 用户组   指定用户所属的附加组(这些组必需事先已经增加过了或者是系统中已经存在)
-s Shell    指定用户的登录Shell
-u UID      指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-c 描述        指定一段注释性描述
-m             使用者目录若不存在则自动建立(默认选项)
我们来看几个实例
实例1,最简单的新增用户
[root@yufei ~]# useradd opser_1
[root@yufei ~]# passwd opser_1
Changing password for user opser_1.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

注:如果设置的密码过于简单的话,系统会给出上面的提示,其实密码已经设定了。这只是针对root来说的,如果是用户自己设置了过于简单的密码,系统是不会接收的。
[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash

用户和组的ID都是501,家目录和使用的SHELL都给出来了。注意,这两个ID可以是不同的。
[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::

用户的密码和关于密码的一些限制也很明白(不明白看上面的例子)
[root@yufei ~]# grep opser_1 /etc/group /etc/gshadow
/etc/group:opser_1:x:501:
/etc/gshadow:opser_1:!::

我们可以看到,在建立用户的同时,也建立了一个和用户同名的用户组
[root@yufei ~]# ls -a /home/opser_1/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

用户家目录下的内容
[root@yufei ~]# ls -ld /home/opser_1/
drwx——. 4 opser_1 opser_1 4096 Jan  7 14:41 /home/opser_1/

注:关于文件权限,我们会在后面的课程中讲到,这里可以先了解
实例2,新增用户,并设置UID、组以及附加组并指定一个不可登陆的SHELL
[root@yufei ~]# groupadd -g 600 opser.org
[root@yufei ~]# groupadd user_group
[root@yufei ~]# tail -n 4 /etc/group
yufei:x:500:
opser_1:x:501:
opser.org:x:600:
user_group:x:601:

我们看到,增加的第一个opser.org用户组的时候,我限制了他的GID是600,而第二个没有限制就变成了601了。
[root@yufei ~]# useradd -g user_group -G opser.org -u 580 -s /sbin/nologin opser_2
[root@yufei ~]# passwd opser_2
Changing password for user opser_2.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

我对增加的用户opser_2做了一些限制,而且也对他设置了与opser_1一样的密码(其实这个密码设置了也没有什么用,因为我后面限制了他所使用的SHELL是/sbin/nologin,同样是无法登陆系统),我们来对比
opser_1与opser_2这两个用户的相关文件
[root@yufei ~]# tail -n 2 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash
opser_2:x:580:601::/home/opser_2:/sbin/nologin
[root@yufei ~]# tail -n 2 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::
opser_2:$6$VZTnZmFj$hayn6ycBCy9Mnfpwi13pAUOquwOVTmC/NiUuBViMnCp4PhowNBeYuFsYZGe3flfYhH2GVJhimbDF5o9pn6E5h0:14981:0:99999:7:::
[root@yufei ~]# tail -n 2 /etc/group
opser.org:x:600:opser_2
user_group:x:601:

注:
1、opser_1和opser_2这两个用户虽然密码都是一样,但经过加密后,在shadow中显示的依然是不同的。
2、opser_2这个用户的UID和GID不再是用系统默认的,而是我们指定的。
3、opser_2他的主组的GID是601,也就是user_gruop,同时在opser.org这个组中,也有opser_2这个成员。
4、opser_2这个用户虽然指定了SHELL,但这个SHELL是个特殊的SHELL,是不能登陆系统的。这个(/sbin/nologin)SHELL一般是在增加系统帐户的时候常用。
5、在建立用户的时候会以最后建立的用户UID为参考。如opser_2的UID是580,那么再建立一个用户的时候,就变成581了,而502~579这些就没有用户在使用,那么我想从503开始的话,要怎么来实现?可以通过加上-r参数或者是自己指定。
关于其他的参数,请各位看官自己看帮助来研究。
和用户相关的其他调用文件
通过上面的两个例子,有没有朋友会有这样的疑问,在增加用户的时候,家目录里面的文件是从哪里来的?UID和GID参考了什么?还有shell是根据什么来的?
想知道这些问题,可以用man useradd来查看,你会发现,在这个帮助文件中,会有FILES那一段,除了我们上一节讲的四个文件外,还有
/etc/default/useradd
           Default values for account creation.
/etc/skel/
           Directory containing default files.
/etc/login.defs
           Shadow password suite configuration.
看到了上面的这三个文件的说明,上面的问题是不是已经找到答案了!
想看看是如何规划的,那么就打开文件看看吧。
/etc/default/useradd 通过useradd 添加用户时的规则文件
[root@yufei ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100                #主组的GID也是从100开始的
HOME=/home                #把用户的家目录建在/home中,这个目录也可以自己设定
INACTIVE=-1                #是否启用密码过期后是否会失效,-1表示密码永远不会失效。如10,则代表过期10天后才失效。
EXPIRE=                    #帐号终止日期,不设置表示不启用
SHELL=/bin/bash            #所用SHELL的类型
SKEL=/etc/skel            #用户家目录里面文件的参照位置。也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
CREATE_MAIL_SPOOL=yes    #创建用户的邮件池。相当于一个用户的邮箱
/etc/skel/ 增加用户时候,用户家目录下的文件来源。此目录下的文件都是隐藏文件。
[root@yufei ~]# ls -la /etc/skel/
total 36
drwxr-xr-x.  4 root root  4096 Dec 15 22:41 .
drwxr-xr-x. 96 root root 12288 Jan  7 13:40 ..
-rw-r–r–.  1 root root    18 Jun 22  2010 .bash_logout
-rw-r–r–.  1 root root   176 Jun 22  2010 .bash_profile
-rw-r–r–.  1 root root   124 Jun 22  2010 .bashrc
drwxr-xr-x.  2 root root  4096 Jul 14 23:55 .gnome2
drwxr-xr-x.  4 root root  4096 Dec 15 22:35 .mozilla
/etc/login.defs 创建用户时的一些规划。比如创建用户时,是否需要家目录,UID和GID的范围,用户的期限等等。
[root@yufei ~]# vim /etc/login.defs
MAIL_DIR        /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS   99999        #用户的密码不过期最多的天数
PASS_MIN_DAYS   0            #密码修改之间最小的天数
PASS_MIN_LEN    5            #密码最小长度
PASS_WARN_AGE   7            #警告时间
UID_MIN                   500    #UID从500开始
UID_MAX                 60000    #最大UID为60000
GID_MIN                   500    #GID从500开始
GID_MAX                 60000    #最大GID为60000
CREATE_HOME     yes            #是否创用户家目录
UMASK           077            #创建用户家目录时候的默认权限限制
USERGROUPS_ENAB yes            #用userdel删除用户的时候,如果这个主组中没有其他用户,那么也把这个组给删除
ENCRYPT_METHOD SHA512        #用户密码的加密方式为SHA512
通过上面的讲解,我想你已经深入了解了在 linux系统中增加用户的过程了吧,这个过程就是:
在 /etc/passwd 里面建立一行与账号相关的数据,包括建立 UID/GID/家目录等;
在 /etc/shadow 里面将此账号的密码相关参数填入,但是尚未有密码;
在 /etc/group 里面加入一个与账号名称一模一样的组名;
在 /home 底下建立一个与账号同名的目录作为用户家目录,且权限为 700
从/etc/skel/中COPY相应的文件到用户的家目录
最后通过passwd命令,把密码加密后写到/etc/shadow中
用户密码设置
上面我们着重讲了用户创建,没有太多的讲用户的密码设置。
其实在Linux系统中,命令的作用就是改配置文件,而这个passwd命令就是把密码加密后写入/etc/shadow(二栏)中,我们也知道这个文件中的栏位有9栏,那么其它栏要如何通过passwd这个命令来改呢?
看帮助吧
passwd –help
格式:passwd [OPTION...] <accountName>
-l :是Lock的意思,会将 /etc/shadow 第二栏最前面加上”!”使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件的大部分信息
-n :后面接天数,shadow的第4字段,不可修改密码天数
-x :后面接天数,shadow的第5字段,多长时间内必须要修改密码
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-i :后面接日期,shadow 的第7字段,密码失效日期
这些大家自己来实验吧,我除了密码用passwd设置外,其它的相关限制,我更习惯直接在/etc/shadow中修改。
还有一个和passwd相似的命令,那就是chage大家也是自己研究吧!
在这里顺便也说一个技巧,就是我们常常会遇到这样一种情况:比如我下载了某个应用,但这个应该是人家集成好的,这时候别人会给你一个默认的用户和密码,第一次登陆的时候,只有重新设置密码后才登陆。其实这个功能的实现,就是改我们shadow中的第三栏,把这个数值改成0就OK了!有兴趣的朋友可以试试。
编辑用户usermod
新增用户已经搞定,但要是对用户的相关信息进行一下修改,除了通过改文件外,还有没有其他的方法了?当然有啊,命令啊,命令的最终目的也是改配置文件。那么下面就来看看如何通过usermod来修改用户的相关0信息。
[root@yufei ~]# usermod -h
Usage: usermod [options] LOGIN
-c :后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d :后面接账号的家目录,即修改/etc/passwd的第六栏
-e :后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f :后面接天数,修改shadow的第七栏
-g :后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G :后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group
-a :与 -G 合用,可增加附加群组的支持而非设定
-l :后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s :后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u :后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L :暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U :将/etc/shadow 密码栏的“!”去掉
其实,这个usermod和useradd的用法非常相似,只是增加了用户锁定与解锁。
我们看几个例子
修改用户的说明信息
[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash
[root@yufei ~]# usermod -c “opser.org exmple” opser_1
[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501:opser.org exmple:/home/opser_1:/bin/bash
设置用户的过期日期
[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::
[root@yufei ~]# usermod -e “2011-02-01″ opser_1
[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7::15006:

我们就简单的给大家介绍这两个参数,其他的自己研究吧!
删除用户userdel
这个命令很简单,
[root@yufei ~]# userdel -h
Usage: userdel [options] LOGIN
-f :强制删除,包括用户的一切相关内容,这个参数是危险的参数,不建议大家使用。详细说明看MAN
-r :删除用户的家目录和用户的邮件池
其实这个-r参数就是删除用户的相关配置文件中的信息
用户账号/密码相关参数:/etc/passwd, /etc/shadow
用户相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username
不给大家演示了,自己动手实践吧!
注:
1、userdel -r 这个命令使用的时候,一定要确认这个用户的所有数据真的不再使用了。
2、建议在使用这个命令之前,查找出这个帐户的所有数据(find / -user username),确认后再进行操作。
2、用户组管理
这他也和上面的用户管理差不多,只是修改的文件(/etc/group, /etc/gshadow)不同
增加用户组groupadd
[root@yufei ~]# groupadd -h
Usage: groupadd [options] GROUP
-g gid :设置用户组,并指定相应的GID
-r :这个参数和我们的useradd -r 是一样的道理
这个命令的使用,我们前面已经涉及到了,也很简单。
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
yufei:x:500:
opser_1:x:501:
opser.org:x:600:
user_group:x:601:
==> /etc/gshadow <==
yufei:!!::
opser_1:!::
opser.org:!::
user_group:!::
[root@yufei ~]# groupadd new_group_1
[root@yufei ~]# groupadd -r new_group_2
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
new_group_2:x:489:
==> /etc/gshadow <==
opser.org:!::
user_group:!::
new_group_1:!::
new_group_2:!::
编辑用户组groupmod
与usermod也是类似的
[root@yufei ~]# groupmod -h
Usage: groupmod [options] GROUP
-g :修改既有的 GID 数字;
-n :修改既有的组名
看个例子
将刚刚上个指令建立的new_group_2名称改为mygroup,GID为666
[root@yufei ~]# groupmod -g 666 -n mygroup new_group_2
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
mygroup:x:666:
==> /etc/gshadow <==
opser.org:!::
user_group:!::
new_group_1:!::
mygroup:!::
注:这个GID建议还是不要随意更改,防止造成系统的GID混乱。
删除用户组groupdel
这个命令更简单,没有任何的参数,后面直接跟上想删除的用户组名
注:不能用groupdel -h 或 groupdel –help来查看帮助,只能用man groupdel
[root@yufei ~]# tail -n 2 /etc/passwd /etc/shadow
==> /etc/passwd <==
yufei:x:500:500:yufei:/home/yufei:/bin/bash
opser_1:x:501:501:opser.org exmple:/home/opser_1:/bin/bash
==> /etc/shadow <==
yufei:$6$VdpG9FMuvcR49tD2$zhfYkufmtPd5jjzYG/lSvErSWPusnrqv52ikQxsRs0sYCBwLOakw8v/cz3nksC6p7l8MhePXC7FCXDhv1YbTM/:14958:0:99999:7:::
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7::15006:
[root@yufei ~]# tail -n 5 /etc/group /etc/gshadow
==> /etc/group <==
opser_1:x:501:
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
mygroup:x:666:
==> /etc/gshadow <==
opser_1:!::
opser.org:!::
user_group:!::
new_group_1:!::
mygroup:!::
我们把前面建立和几个用户组给删除
[root@yufei ~]# groupdel mygroup
[root@yufei ~]# groupdel new_group_1
[root@yufei ~]# groupdel opser.org
[root@yufei ~]# groupdel opser_1
groupdel: cannot remove the primary group of user ‘opser_1′

为什么删除不了opser_1用户组呢?因为这个组里面还有用户。所以在删除用户组前,一定要查看这个组中还有没有成员了。
[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow
==> /etc/group <==
yufei:x:500:
opser_1:x:501:
user_group:x:601:
==> /etc/gshadow <==
yufei:!!::
opser_1:!::
user_group:!::
用户组的管理员设置gpasswd
[root@yufei ~]# gpasswd
Usage: gpasswd [option] GROUP
   :没有参数,设置用户组密码
-a : 增加用户到用户组中
-d :从用户组中删除用户
-r :删除用户组的密码
-M :设置用户组成员(多成员)
-A :设置用户组管理员(列表)
我们来看个例子
先建立两个用户,并为其设置密码
[root@yufei ~]# useradd test_user1
[root@yufei ~]# passwd test_user1
Changing password for user test_user1.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@yufei ~]# useradd test_user2
[root@yufei ~]# passwd test_user2
Changing password for user test_user2.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
查看这两个用户的相关信息
[root@yufei ~]# tail -n 2 /etc/passwd /etc/shadow
==> /etc/passwd <==
test_user1:x:502:502::/home/test_user1:/bin/bash
test_user2:x:503:503::/home/test_user2:/bin/bash
==> /etc/shadow <==
test_user1:$6$EL8UBf7P$gZL3N9GJDL6JhBJnwTZYyiOO8d2zu7Ti9B5eDTP7Hb17AT6Xe4/BuiNVBszO/UoycYIBZZygIH3oA3aKDOSA11:14982:0:99999:7:::
test_user2:$6$tTs0BG90$7LLaUwF9pP/g0h4/IPAwH1x4JE.rSXjYP/wbUq2kxPsXM4/7AaniQdi6G85QIfH6.cspo7OTutqPZblbRUUVT/:14982:0:99999:7:::
查看系统中最后加入的用户组(说法有点牵强)
[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow
==> /etc/group <==
user_group:x:601:
test_user1:x:502:
test_user2:x:503:
==> /etc/gshadow <==
user_group:!::
test_user1:!::
test_user2:!::
把test_user1、test_user2加到user_group组中
[root@yufei ~]# gpasswd -a test_user1 user_group
Adding user test_user1 to group user_group
[root@yufei ~]# gpasswd -a test_user2 user_group
Adding user test_user2 to group user_group
[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow
==> /etc/group <==
user_group:x:601:test_user1,test_user2
test_user1:x:502:
test_user2:x:503:
==> /etc/gshadow <==
user_group:!::test_user1,test_user2
test_user1:!::
test_user2:!::
设置test_user1为user_group组的管理员
[root@yufei ~]# gpasswd -A test_user1 user_group
[root@yufei ~]# tail -n 3  /etc/gshadow
user_group:!:test_user1:test_user1,test_user2
test_user1:!::
test_user2:!::

注:这个用户组的管理员的作用就是,可以像root用户一样来管理用户组中其他成员。
设置user_group的密码
[root@yufei ~]# gpasswd user_group
Changing the password for group user_group
New Password:
Re-enter new password:
[root@yufei ~]# tail -n 3  /etc/gshadow
user_group:$6$2UZWz/O32$vViBQd.Bu8y.RfUbH/9QFYxqN.t31u7r2PztjfysgnKsJ4SUFBvtc1qg7N89bqBRpqUG1fQNno5ij0ja4B/3M1:test_user1:test_user1,test_user2
test_user1:!::
test_user2:!::
切换用户组newgrp
该命令将当前用户切换到相应的用户组
注:前提条件是这个用户组要是该用户的主组或附加组。
自己玩吧
 

0

收藏

renlifeng1

85篇文章,17W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

f92360e227f9d91cdff7ea95120630ef.png
left-qr.jpg

扫一扫,领取大礼包

0

分享
qr-url?url=https%3A%2F%2Fblog.51cto.com%2Frenlifeng%2F638666
renlifeng1
noavatar_middle.gif