文章首发于【博客园-陈树义】,请尊重原创保留原文链接。

在Linux系统里,有两个系统文件与用户组密切相关,它们分别是:/etc/group/etc/gshadow

  • /etc/group:存储了用户组信息。

文件每条记录遵循着相同的格式:组名:组密码位:GID:组成员列表。例如mail用户组的GID是12,组成员有mail、postfix。

  • /etc/gshadow:存储了用户组的密码信息。

每一行都遵循着相同的格式:组名:组密码:用户组管理员账号:组成员列表。例如mail用户组的用户管理员,组密码隐藏了,没有组管理员,成员有mail/postfix两位成员。

创建用户组

groupadd -g 888 frontend

创建frontend用户组,并指定用户组ID。常用groupadd参数参考下表:

参数 描述
-f 如果组已经存在则成功退出
-g 为新组使用 GID
-h 显示此帮助信息并推出
-K 不使用 /etc/login.defs 中的默认值
-o 允许创建有重复 GID 的组
-p 为新组使用此加密过的密码
-r 创建一个系统账户
-R chroot 到的目录

文章首发于【博客园-陈树义】,请尊重原创保留原文链接。

删除用户组

groupdel frontend

删除frontend用户组

修改用户组信息

groupmod -n backend frontend 

将用户组名从frontend改为backend。

设置组密码

gpasswd backend

用gpasswd可以为backend用户组设置组密码。

用户组成员管理

gpasswd -a zhangsan backend 

上面的命令把zhangsan加入到backend用户组中。更多gpasswd命令可选参数参考下表:

参数 描述
-a 添加用户到用户组
-d 从有用户组中删除用户
-A 设置用户组管理员
-r 删除用户组密码
-R 禁止用户加入该组

查看用户隶属的组

groups zhangsan

上面的命令查看zhangsan隶属于哪一些用户组。

用户自主加入用户组

gpasswd是通过管理员将成员加入用户组,用户如果知道了组密码,也可以自己加入用户组。

newgrp backend

上面的命令将当前用户加入backend用户组,根据提示输入组密码即可。

其他配置

文件 描述
/etc/login.defs 设置useradd命令的缺省警告时间、最长有效时间等信息等。
/etc/default/useradd 设置useradd命令的缺省home目录,使用的shell等。
/etc/motd 存放登录成功之后的提示信息。
/etc/issue 存放登录的提示信息。只要你尝试登录,它就会提示这个文件中的信息,一般存放一些欢迎信息。

文章首发于【博客园-陈树义】,请尊重原创保留原文链接。

Linux学习总结(十三)—— CentOS用户组管理:创建用户组、修改用户组、删除用户组的更多相关文章

  1. [转帖]Linux学习笔记之rpm包管理功能全解

    Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...

  2. Oracle触发器原理、创建、修改、删除

    本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...

  3. 基于SpringBoot从零构建博客网站 - 新增创建、修改、删除专栏功能

    守望博客是支持创建专栏的功能,即可以将一系列相关的文章归档到专栏中,方便用户管理和查阅文章.这里主要讲解专栏的创建.修改和删除功能,至于专栏还涉及其它的功能,例如关注专栏等后续会穿插着介绍. 1.创建 ...

  4. Java连接Jira,创建、修改、删除工单信息

    还不了解Jira是什么的同学可以看一下这篇文章:https://www.cnblogs.com/wgblog-code/p/11750767.html 本篇文章主要介绍如何使用Java操作Jira,包 ...

  5. Java——Java连接Jira,创建、修改、删除工单信息

    还不了解Jira是什么的同学可以看一下这篇文章:https://www.cnblogs.com/wgblog-code/p/11750767.html 本篇文章主要介绍如何使用Java操作Jira,包 ...

  6. oracle 11g 如何创建、修改、删除list-list组合分区

    Oracle11g在分区方面做了很大的提高,不但新增了4种复合分区类型,还增加了虚拟列分区.系统分区.INTERVAL分区等功能. 9i开始,Oracle就包括了2种复合分区,RANGE-HASH和R ...

  7. MySQL:创建、修改和删除表

    其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...

  8. SQLite 入门教程(二)创建、修改、删除表 (转)

    转于 SQLite 入门教程(二)创建.修改.删除表 一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 ...

  9. SQL Server索引进阶:第十二级,创建,修改,删除

    在第十级中我们看到了索引的内部结构,在第十一级中我们看到了平衡树结构潜在的负面影响:索引碎片.有了索引内部结构的知识,我们可以检查在执行数据定义语句和数据操作语句的时候,都发生了什么.在本级中我们介绍 ...

  10. hive -- 分区,分桶(创建,修改,删除)

    hive -- 分区,分桶(创建,修改,删除) 分区: 静态创建分区: 1. 数据: john doe 10000.0 mary smith 8000.0 todd jones 7000.0 boss ...

随机推荐

  1. JavaWeb 后端 <十一> 之 DBUtils 框架 (基本使用 结果集 事务处理 对表读取)

    一.数据库操作框架 1.ORM:Object Relation Mapping Hibernate:非常流行 JPA:Java Persistent API.ORM标准 MyBatis:2010年开始 ...

  2. ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示

    环境说明 1. windows server 2012 R2 64位 2. log4net.ElasticSearch 3. kibana-5.5.0-windows-x86.zip 架构说明 数据采 ...

  3. 常见MD5加密解密值及免费解密网站

    常用的MD5解密 MD5(admin,16)    = 7a57a5a743  MD5(admin,16)    = 7a57a5a743894a0e  MD5(admin888,16) = 469e ...

  4. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  5. promise异步编程的原理

    一.起源 JavaScript中的异步由来已久,不论是定时函数,事件处理函数还是ajax异步加载都是异步编程的一种形式,我们现在以nodejs中异步读取文件为例来编写一个传统意义的异步函数: var ...

  6. bzoj2120: 数颜色 [莫队][分块]

    Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...

  7. 关于frameset的一些小总结

    如果我们在一个页面需要由多个子页面一同组成,那么我们可以通过frameset标签来嵌套别的页面 例如 这样的页面布局的思路是: 1,先将页面分为上下两部分也就是 A B 2,再将B部分分为左右两部分 ...

  8. 【JAVASCRIPT】React学习-JSX 语法

    摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 JSX 语法 1. 定义 JSX 是javascript + xml 的合集,我们可以将javascript 与 ht ...

  9. jsp变量的使用规则

    jsp是一种弱类型的交而不能语音,虽然看似没有像强类型语言那么多的代码规范,但是在实际使用的过程当中依然有不少的问题.下面就简单的梳理一下. 1.首先,jsp是一种弱类型的脚本语言,变量在使用之前无需 ...

  10. 前端程序员经常忽视的一个JavaScript面试题

    在网上找到一个有关JavaScript的面试题,特整理如下: function Foo() { getName = function () { alert (1); }; return this; } ...