我们创建了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
- 查看用户所属的组
一个用户可以属于多个组,但是会有主组和附加组之分
groups 用户名称:显示用户所在的用户组(包括主组和附加组)
id 用户名称:显示用户的id,gid表示所属的主组 ,groups表示所有的组(包括主组和附加组)
- 把已有用户添加到用户组或者从用户组删除。
注意删除的时候只能删除附加组,不能删除用户的主组,如果要修改用户的主组,需要其他命令。
添加
gpasswd -a 用户名 组名
删除
gpasswd -d 用户名 组名
- 修改组信息
修改组名称
groupmod -n newname oldname
修改组Id
group -g ngid gname
- 临时修改主组
如果一个用户属于多个用户组,但是他在组级别的权限是和他的主组一样的。当需要使用其他附加组的权限的时候,需要临时切换一下用户的主组,使用另一个组的权限进行操作
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
- 修改用户信息
修改用户名称
usernod -l newname oldname
修改用户附加组
usermod -G groupName username
这里注意,如果之前用户属于多个用户组(附加组),使用usermod -G修改之后,会把之前的附加组都删除,只保留这一个
- 删除用户
使用-r,把用户目录页一起删除
userdel -r 用户名