10- Linux的用户和用户组

10- Linux的用户和用户组_第1张图片
用户权限

我们创建了3个用户 cxf、zhouyang、zy
这3个用户都分别在/home下面有自己对应的家目录(创建用户的时候系统自动创建的)

这个3个家目录的权限和所有者都是是 drwx --- ---
以cxf为例

  d[rwx][---][---] 14  cxf   cxf

解释:d表示这个文件的类型是 目录(directory)
rwx --- --- 后面的这个每三个分一组,表示 文件所有者,所有者所在的组的其他用户,其他组用户 对这个文件拥有的权限
[rwx] 表示文件所有有这拥有 读(read)写(write)执行(x)的权限
[---] 表示和这个用户同组的其他用户没有 读写执行的权限(root用户除外)
[---] 表示其他组的用户没有读写执行的权限(root用户除外)
第一个cxf 表示 这个文件属于cxf用户
第二个cxf 表示 属于cxf组

所以当 当前用户 zhouyang 要进入/home/cxf的时候会提示Permission denied


用户和用户组

首先linux的所有用户必须属于一个用户组,不能独立于组外

当我们使用

useradd test
passwd test

创建一个用户,并给它设置密码,系统会自动创建一个test用户组,并把test用户加入到其中。

我们也可以使用

useradd test1 -g zhouyang  或者 useradd test1 -g 1000
passwd test1

新建一个用户,并把它加入到zhouyang这个已经存在的用户组中,zhouyang是这个用户组的名称,也可以使用gid(用户组Id)

查看用户组

在linux中所有的用户组存放在文件/etc/group中

root:x:0
mail:x:12:postfix
polkitd:x:997:
cgred:x:996:
abrt:x:173:
unbound:x:995:
tss:x:59:
libstoragemgmt:x:994:
rpc:x:32:
tcpdump:x:72:
zhouyang:x:1000:
cxf:x:1001:
zy:x:1002:

上面只是这个文件的一部分
可以看到上面有我们比较熟悉的root,和我们自己创建的用户组
这个文件的结构是
组名称:口令:组Id:组内成员

其中口令为X表示 没有设置口令
组内成员 :(使用gpasswd添加的用户会显示在这里)可以省略,具体的组内成员需要到/etc/passwd中查询

关于用户组的一些操作
  • 创建hello用户组,并制定gid为1010
    0 表示管理员(root)
    1 - 500 表示系统用户
    501 - 65535 表示普通用户
groupadd hello -g 1010,如果省略-g,则系统自动生成gid

  • 删除用户组,如果用户组内还有用户则不能删除
groupdel hello
  • 查看用户所属的组

一个用户可以属于多个组,但是会有主组和附加组之分

10- Linux的用户和用户组_第2张图片
groups 用户名称:显示用户所在的用户组(包括主组和附加组)

id 用户名称:显示用户的id,gid表示所属的主组 ,groups表示所有的组(包括主组和附加组)

  • 把已有用户添加到用户组或者从用户组删除。

注意删除的时候只能删除附加组,不能删除用户的主组,如果要修改用户的主组,需要其他命令。

添加
gpasswd -a 用户名 组名

删除
gpasswd -d 用户名 组名

10- Linux的用户和用户组_第3张图片
  • 修改组信息
修改组名称
groupmod -n newname oldname

修改组Id
group -g ngid gname

image.png
  • 临时修改主组

如果一个用户属于多个用户组,但是他在组级别的权限是和他的主组一样的。当需要使用其他附加组的权限的时候,需要临时切换一下用户的主组,使用另一个组的权限进行操作

10- Linux的用户和用户组_第4张图片
newgrp 组名称

在上面图片中可以看到,当前用户test的主组为zhouyang,当使用newgrp之后主组变成了newzy
当退出这个用户之后,主组又变回了zhouyang

用户

更具上面的我们知道 用户和用户组之间是多对多的关系,一个用户可以属于多个用户组,一个用户组也可以包含多个用户,Linux中存储用户和用户组之间关系的文件是/etc/passwd

avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zhouyang:x:1000:1000:zhouyang:/home/zhouyang:/bin/bash
cxf:x:1001:1001::/home/cxf:/bin/bash
zy:x:1002:1009::/home/zy:/bin/bash
test:x:1003:1000::/home/test:/bin/bash
test1:x:1004:1000::/home/test1:/bin/bash

用户名称:用户密码占位:用户Id:主组gid::用户家目录:用户默认shell
用户的密码文件存放在/etc/shadow中,
可以使用 man 5 shadow 和 man 5 passwd 查看这个两个文件的说明

用户的一些操作命令
  • 添加用户
可以通过-g指定用户所属的用户组,如果不指定,则系统自动使用这个用户名创建一个用户组,然后把这个用户加入到其中
useradd test123 -g zhouyang

给用户指定密码
passwd test123
10- Linux的用户和用户组_第5张图片
  • 修改用户信息
修改用户名称
usernod -l newname oldname

修改用户附加组
usermod -G groupName username

这里注意,如果之前用户属于多个用户组(附加组),使用usermod -G修改之后,会把之前的附加组都删除,只保留这一个


10- Linux的用户和用户组_第6张图片
  • 删除用户
使用-r,把用户目录页一起删除
userdel -r 用户名

你可能感兴趣的:(10- Linux的用户和用户组)