热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用户和组之增删改

1概述要对计算机系统进行相关的操作,就需要有账号,如果很多账号需要对同一文件具有相同的操作权限,那么这个时候就涉及到组的概念了,我们可以将不同的账号加入同一组中,使得该组的所有账号拥

1 概述  

要对计算机系统进行相关的操作,就需要有账号,如果很多账号需要对同一文件具有相同的操作权限,那么这个时候就涉及到组的概念了,我们可以将不同的账号加入同一组中,使得该组的所有账号拥有相同的操作权限。日常的linux运维中,就需要对账号和组进行管理,本文就用户和组的增删改操作进行探讨。

2 用户和组的关系

用户和用户组的对应关系有:一对一、一对多、多对一和多对多;下图展示了这种关系:

一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。

一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。

多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。

多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。

id概念

linux中,一般情况下用户和组都会分配到一个专有的id,这个id也可以在创建时手动自动,系统对账号的管理是由id决定的,而非id对应的名称或者是组名。比如同一id,名称更改后,这个id的所拥有的权限还是一样的,但是同一名称,将id调整后,所拥有的权限可能是不一样的,比如讲普通用户的uid调整为0,那么用户将获得和root一样的权限。简单来说,进程所能够访问资源的权限取决于进程的运行者的身份,而id就是所谓的身份。

在CentOS 6x 以及老版本 和 CentOS 7x里有在系统id的分配上有了变更

Linux用户: Username/UID

管理员:root, 0

普通用户:1-65535

系统用户:1-499, 1-999(CentOS7)  对守护进程获取资源进行权限分配

登录用户: 500+, 1000+(CentOS7)

Linux组:Groupname/GID

管理员组:root, 0

普通组:

系统组:1-499, 1-999(CENTOS7)

普通组:500+, 1000+(CENTOS7)

在linux的组里,还分为主要组和附加组。一个用户必须属于一个,且仅有一个的主要组,但是一个用户可以同时加入多个附加组里。

默认情况下,主要组是和用户是同名的,而且主要组也是仅包含一个用户,这样的组也叫私有组

配置文件

Linux用户和组的主要配置文件有如下四个:

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

格式:账号:密码:UID:GID:描述:家目录:shell

描述:是关于账号的描述,可以通过chfn这个命令来更改描述信息。

这里的UID和GID默认情况下是一致的,但是通过手动指定可以不一致

例子,系centOS6统里有账号UID和GID此时最大值为524,执行以下的语句

groupadd -g 526 hong
useradd terry4
useradd terry5

此时/etc/passwd的结果如下

terry4:x:525:525::/home/terry4:/bin/bash

terry5:x:526:527::/home/terry5:/bin/bash

可以看到,虽然我们没有指定新用户 terry5的GID,但是UID 不等于 GID ,是由于,terry4的GID是525,526已经被hong通过手动方法新建指定了,所以系统默认新生成的GID为527.如果要使得UID 和 GID新建的账号一致,可以通过手动指定。

/etc/group:组及其属性信息

格式:组名:密码:GID:用户列表

用户列表:把该组作为附加组的用户

密码:通过gpasswd设定,指用户输入该密码就可以通过newgrp临时切换到该组,即将该组作为临时的附加组,获取到附加组的相关组的权限,取消密组码后,只有成员才可以通过newgrp命令切换入该组。

/etc/shadow:用户密码及其相关属性

格式:用户名:加密密码:最后一次改密码的时间:密码最小使用时间:密码最长使用时间:密码警告期:密码宽限期:账号过期时间:保留区间

最后一次改密码的时间 和 账号过期时间 都是相对1970年1月1日的天数。

加密密码:格式为$加密方式$盐值$加密后的密码,盐值的作用是保证了加密的强度,这个值是随机数,相同密码在盐值不一样的情况下,加密后的密文是不一样的。

警告期:用户在密码过期前几天,提醒用户更改密码

密码宽限期:用户在密码过期后的几天,可以更改密码,如果还不更改密码,该账户将会被系统锁

/etc/gshadow:组密码及其相关属性

格式:组名:密码:管理者:成员

密码:格式和/etc/shadow里密码格式一样

管理者:指该用户可以将其他用户加入到该组里,通过gpasswd -a添加成员

成员:把该组作为附加组的用户,用逗号隔开不同的用户

新建用户的相关文件

/etc/default/useradd

/etc/skel/*

/etc/login.defs

etc/default/useradd  文件的内容,提示useradd default file,创建用户时使用的默认文件

GROUP = 100    //表示用户组IDHOME = /HOME   //表示家目录的位置INACTIVE = -1    //表示是否启用帐号过期停权,-1表示不启用。EXPIRE=      //表示账号是否启用过期设置无表示不启用SHELL = /bin/bash   //表示账号使用shell种类SKEL = /etc/skel   //表示账号使用默认文件内容, 可以理解为添加用户的目录默认文件存放位置。也就是说,当用户用useradd添加用户时,该目录下的所有文件都将被自动复制到该用户的主目录默认时,这些文件中的大部分都是以(.)文件CREATE_MAIL_SPOOL=yes   //  表示是否创建邮箱缓存yes表示创建

/etc/login.defs文件定义了与/etc/passwd和/etc/shadow配套的用户限制设定。这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误。

用户和组管理命令

用户管理命令

useradd:添加用户

userdel:删除账号

usermod:修改使用者账号

组帐号维护命令

groupadd:添加组

groupdel:删除群组

groupmod:修改群组

下面我们通过增,删,改的顺序依次介绍

增加 用户

useradd[options] LOGIN

-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs

-o 配合-u 选项,不检查UID的唯一性

-g GID:指明用户所属基本组,可为组名,也可以GID

-c "COMMENT":用户的注释信息

-d HOME_DIR:以指定的路径(不存在)为家目录

-s SHELL: 指明用户的默认shell程序

可用列表在/etc/shells文件中

-G GROUP1[,GROUP2,...]:为用户指明附加组,组须事先存在

-N 不创建私用组做主组,使用users组做主组

-r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000

例子:

useradd -c "test terry6" -d /home/terry6 -G terry3 terry6

表示增加用户terry6,描述为 test terry6,指定用户的家目录为/home/terry6,并增加附加组为terry3

增加 组

groupadd[OPTION]... group_name

-g GID: 指明GID号;[GID_MIN, GID_MAX]

-r: 创建系统组:CentOS 6: ID<500,CentOS 7: ID<1000

例子

groupadd -g 528 terry7

表示增加组terry7,并指定GID 为528

删除 用户

userdel[OPTION]... login

-r: 删除使用者账号及相关文档,如用户的家目录及邮箱的目录,反正,如果没有-r,则只删除账号,相关文档没删掉

例子

userdel -r terry6

表示删掉terry6,并且把terry6家目录及邮箱的目录都删掉

删除 组

groupdel

groupdel GROUP

例子

groupdel terry3

表示删掉了terry3这个群主,但是terry3这个账号还是存在,如果有任何一个群组的使用者在线上的话就不能移除该群组。如terry3还是用户terry3的主组,最好先用命令usermod -g移除用户terry3使用者后再移除群组。注意,userdel删除用户的同时把用户的主组也删掉了。

修改 用户

usermod[OPTION] login

-u UID: 新UID

-g GID: 新主组

-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

-s SHELL:新的默认SHELL

-c 'COMMENT':新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

-l login_name: 新的名字;

-L: lock指定用户,在/etc/shadow 密码栏的增加!

-U: unlock指定用户,将/etc/shadow 密码栏的! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期

-f INACTIVE: 设定非活动期限

例子

usermod -s /bin/bash -d /home/terry7 -e 2017-09-30 terry8

表示把terry8 的账号的shell设置为/bin/bash,家目录修改为/home/terry7,过期日期设置为2017-09-30

修改 组

groupmod[OPTION]... group

-n group_name: 新名字

-g GID: 新的GID

例子

groupmod -n terry3n -g 523 terry3

表示把terry3的组名改成terry3n,GID改为523

除了以上的两个命令对用户和组进行修改外,以下的命令也可以修改相关的属性

pwck:检查账号的信息,比如账号没有家目录,或者没有密码,就会报异常

grpck:检查组信息,比如同一组在/etc/group和/etc/gshadow的成员中不一致,就会报异常

修改密码

passwd[OPTIONS] UserName: 修改指定用户的密码,仅root用户权限,普通用户也可以通过passwd: 修改自己的密码

常用选项:

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-n mindays: 指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-iinactivedays:非活动期限

--stdin:从标准输入接收用户密码

echo "PASSWORD" | passwd--stdinUSERNAME

修改用户密码策略

chage[OPTION]... LOGIN

-d LAST_DAY

-E --expiredateEXPIRE_DATE

-I --inactive INACTIVE

-m --mindaysMIN_DAYS

-M --maxdaysMAX_DAYS

-W --warndaysWARN_DAYS

Cl 显示密码策略

例子

chage-d 0 tom 下一次tom登录强制重设密码

gpasswd[OPTION] GROUP

-a user: 将user添加至指定组中

-d user: 从指定组中移除用户user

-A user1,user2,...: 设置有管理权限的用户列表

newgrp命令:临时切换主组,如果用户本不属于此组,则需要组密码

groupmems[options] [action]

options:

-g, --group groupname更改为指定组(只有root)

Actions:

-a, --add username 指定用户加入组

-d, --delete username 从组中删除用户

-p, --purge 从组中清除所有成员

-l, --list 显示组成员列表

例子

groupmems -g tom -p

表示清除组tom的成员列表

groups [OPTION].[USERNAME]... 查看用户所属组列表

以上就是关于linux系统中用户和组 增 删 改 的相关概念和命令。


本文出自 “阳光运维” 博客,请务必保留此出处http://ghbsunny.blog.51cto.com/7759574/1955014


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
为佐殿回来而读书的天使
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有