用户和组 之 增删改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户和组 之 增删改相关的知识,希望对你有一定的参考价值。
要对计算机系统进行相关的操作,就需要有账号,如果很多账号需要对同一文件具有相同的操作权限,那么这个时候就涉及到组的概念了,我们可以将不同的账号加入同一组中,使得该组的所有账号拥有相同的操作权限。日常的linux运维中,就需要对账号和组进行管理,本文就用户和组的增删改操作进行探讨。
用户和组的关系
用户和用户组的对应关系有:一对一、一对多、多对一和多对多;下图展示了这种关系:
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。
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 表示用户组ID
HOME = /HOME 表示家目录的位置
INACTIVE = -1 表示是否启用帐号过期停权,-1表示不启用。
EXPIRE= 表示账号是否启用过期设置 无表示不启用
SHELL = /bin/bash 表示账号使用shell种类
SKEL = /etc/skel 表示账号使用默认文件内容, 可以理解为添加用户的目录默认文件存放位置。也就是说,当用户用useradd添加用户时,用户主目录下的文件都是从这个目录中复制的
CREATE_MAIL_SPOOL=yes 表示是否创建邮箱缓存 yes表示创建
/etc/skel–当系统内增加新用户时,该目录下的所有文件都将被自动复制到该用户的主目录默认时,这些文件中的大部分都是以(.)文件
/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
–l 显示密码策略例子
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系统中用户和组 增 删 改 的相关概念和命令。
本文出自 “自学linux” 博客,请务必保留此出处http://ghbsunny.blog.51cto.com/7759574/1950273
以上是关于用户和组 之 增删改的主要内容,如果未能解决你的问题,请参考以下文章