用户和组的基本概念
默认情况下一个用户会拥有一个同名的私有组,比如我们用ls -l 时候会经常看到某个文件所属的用户和组是相同的就是这个原因。一个用户可以加入多个组,但是同一时间只有一个是有效组,有效组的概念可以在创建文件的时候体现出,当前用户创建一个文件的所属组就是当前的有效组,有效组可以切换。下面就这几个部方面详细说明。
用户和组的数据结构
- /etc/passwd 用户表
- /etc/shadow 用户密码表
- /etc/group 群组表
- /etc/gshadow 群组密码
这三个表里面都是用英文冒号":"分隔各个字段。只介绍几个重要字段。序号表示第几个字段。
/etc/passwd 中的字段中重要的有 1.账号名称;3.UID;4.GID;6.家目录;7.shell。
/etc/group 中的重要字段有 1.组名;3.GID;4.加入此组的其他账号
用户管理基本命令
创建用户useradd
[root@VM_0_10_centos ~]# useradd laotie
[root@VM_0_10_centos ~]# ll /home
total 8
drwx------ 4 elastic elastic 4096 Jan 21 21:01 elastic
drwx------ 2 laotie laotie 4096 Jan 23 18:15 laotie
[root@VM_0_10_centos ~]# grep laotie /etc/passwd /etc/shadow /etc/group
/etc/passwd:laotie:x:1001:1001::/home/laotie:/bin/bash
/etc/shadow:laotie:!!:17919:0:99999:7:::
/etc/group:laotie:x:1001:
基础用法直接输入要创建的用户名就可以创建一个新用户了。实际上CentOS做了四件事:
- 在 /etc/passwd 里面建立一行与帐号相关的资料,包括建立 UID/GID/家目录等;
- 在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
- 在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
- 在 /home 底下建立一个与帐号同名的目录作为使用者家目录,且权限为 700
大家可以看到上面创建的用户UID是1001,这个与UID和GID的预留规则有关
- 0 root
- 1~999 系统账号。其中又可以区分为两块。1~200是系统建立的。201~999可以由使用者自行创建。
- 1000~2^32-1 给普通使用者,所以我们上面创建的用户的UID是1001。另一个用户elastic是1000。
useradd还有很多额外参数,可以创建系统账号,也可以指定用户的UID和初始加入的组。
用户信息修改usermod、用户删除userdel
群组管理基本命令
创建群组groupadd
[root@VM_0_10_centos ~]# groupadd -r www-exe
[root@VM_0_10_centos ~]# grep www-exe /etc/group /etc/gshadow
/etc/group:www-exe:x:992:
/etc/gshadow:www-exe:!::
这里有个-r参数,表示创建系统组,useradd也有同样的参数,表示创建系统账号。
群组修改groupmod、群组删除groupdel
群组管理gpasswd
可以设置群组的管理员,可以将某个用户在群组加入或删除。下面实例是将laotie这个用户加入www-exe组中。groups命令用以查看用户所属的群组,返回的第一个群组是该用户当前的有效群组。
[root@VM_0_10_centos ~]# groups laotie
laotie : laotie
[root@VM_0_10_centos ~]# gpasswd -a laotie www-exe
Adding user laotie to group www-exe
[root@VM_0_10_centos ~]# groups laotie
laotie : laotie www-exe
切换有效群组newgrp
前面说过用户可以有多个组,但是只有一个有效组,怎么切换呢。用newgrp命令,这个命令有点类似su,你可以把他理解为重新开启了一个终端并使用指定群组。
原本的环境(laotie,laotie)
------------------> -------->
newgrp www-exe ↓ ↑ exit
---------------------->
新环境(laotie,www-exe)
[laotie@VM_0_10_centos ~]$ groups
laotie www-exe #有效群组是laotie
[laotie@VM_0_10_centos ~]$ touch test1
[laotie@VM_0_10_centos ~]$ ll
total 0
-rw-rw-r-- 1 laotie laotie 0 Jan 23 19:37 test1
[laotie@VM_0_10_centos ~]$ newgrp www-exe
[laotie@VM_0_10_centos ~]$ touch touch2
[laotie@VM_0_10_centos ~]$ ll
total 0
-rw-rw-r-- 1 laotie laotie 0 Jan 23 19:37 test1
-rw-r--r-- 1 laotie www-exe 0 Jan 23 19:38 touch2 #现在有效群组是www-exe,所以创建文件的组是www-exe
[laotie@VM_0_10_centos ~]$ groups
www-exe laotie
[laotie@VM_0_10_centos ~]$ exit
exit #退出newgrp,恢复原有的群组
[laotie@VM_0_10_centos ~]$ groups
laotie www-exe