linux作为一个多用户系统,其中所有的文件有三个类型的权限:创建者权限·组内用户权限·其他人权限;这三种权限均包含读写执行这三项,同一个文件在以不同的身份访问时所拥有的权限并不一定时一样的;而账号是使用linux时,系统识别你身份的方式;
linux在识别用户的时候并不直接依靠账户,而是依靠ID;账号和ID是呈对应关系的,一个账号至少会对应两个ID,一个UID,一个GID;UID是用户标识符,直接标识出用户的身份,而GID是用户组标识符,用来标识这个账号的”初始用户组”;
既然说账号和ID是呈对应关系的,那么自然有一个文件记录这个对应关系”/etc/password”,查看这个文件就可以获取账号和ID的对应关系,这里我列出/etc/password中的一行
root:x:0:0:root:/root:/bin/bash
每个用户都会有这样一行字符,其中包含七条信息,每条信息之间用分号分隔
1.root,账号名称
2.x,账号密码,既然是密码肯定不会放在这里让你看到,所以用x代替
3.0,UID
4.0,GID,初始用户组;GID和UID类似,如果说一个用户对应一个UID的话,那么一个用户组对应一个GID,用户组的对映关系被记录在/etc/group里边;
5.root,第五位没啥用,就是用做说明的,这里可以对账号做一些注解性的说明
6./root,账号的家目录
7./bin/bash,用户登录之后需要一个shell与系统的内核产生联系,以此为基础才能够实现用户希望实现的功能,以root为例来看,登录之后就会使用/bin/bash这个shell;
这个需要提一下GID,我给GID下的解释是”初始用户组”,比如账号aaa,他的GID是1000,GID=1000的这个用户组就是aaa的初始用户组;假如GID=1000对应的用户组时groupa,现在我想让账号aaa加入GID=1001的groupb怎么办?
这时候要先看一下/etc/group的格式:
root:x:0:
其实与/etc/password相似,/etc/group拥有四个信息
1.root,组名
2.x,密码
3.0,GID
4._这个例子种没有写出来,第四个信息指的是用户组中拥有的账号;
如果我们想把aaa添加到groupb里,其实依靠的就是第四个信息,把aaa写到groupb的第四个信息里就完成了添加;至此,aaa就同时拥有了groupa和groupb两个用户组的功能
“有效用户组”
如果现在使用aaa创建文件(touch),touch之后产生的新文件的用户组属性应该是什么?时groupa还是groupb?这个问题的答案取决于”有效用户组”;
登录某个账号之后使用groups就可以查看当前账号属于那个(那几个)用户组;第一个被列出的就是有效用户组;
“有效用户组”的切换
使用命令newgrp就可以切换有效用户组,但是要保证切换目标支持当前账号;
这个命令的原理是以本账号以另一个shell再次登录,新的shell给予本账号一个新的有效用户组,既然是使用了一个新的shell,那用完还要记得exit退出啊!!!!
