首页 > 代码库 > Ubuntu下的用户和权限(三)
Ubuntu下的用户和权限(三)
七、增删群组相关的命令
同样的我们要先介绍两个重要的设定档:/etc/group和/etc/gshadow,前面那个其实和/etc/passwd一样,而后者就是群组的密码表了。先看看长啥样:
root:x:0:
adm:x:4:m,syslog
m:x:1000:
这是截取的/etc/group的一部分,每行被冒号分成四段,第一段是群组名;第二段是密码; 第三段是gid;第四段就是该组下面的成员了。
我们看到root和m群组第四段是空的,而adm群组的第四段有两个成员,为什么会有这种区别呢?原来每个用户加入的群组分为主要群组和次要群组,主要群组是指用户账户刚建立的时候绑定的那个群组,只要看一下/etc/passwd里面的第四段就可以知道该用户的主要群组是哪个,来看用户m的信息 m:x:1000:1000:m,,,:/home/m:/bin/bash 显然用户m的主要群组是m。那么每个账户的名字是不会出现在/etc/group中主要群组的第四段的,因为在某种程度上这是不言而喻或默认的;若某个用户出现在第四段了,那意味着该群组不是其主要群组。
还有一个概念叫有效群组,虽然一个用户可以加入多个群组并拥有相应权限,但这是针对已经存在的档案或目录而言。若果某用户要新建一个文件或目录,那它属于该用户的哪个群组呢?答案是有效群组,即此时该用户所在的那个组。我们知道某一时刻,一个用户只能在一个组内活动,即使他拥有其他群组的权限。打个比方,一个领导管理三个部门即拥有三个群组的权限,但是每个时刻他只能坐在某一个特定部门的办公室,却不能分身同时坐在三个办公室,即使他拥有另外两个办公室的进入权。
用groups命令可以查看当前用户所属的所有群组,其中第一个就是该用户的有效群组。用newgrp命令可以切换有效群组,类似领导要去另一个办公室。然后又是默认情况,即某用户一登陆linux时,有效群组是哪个呢?类似于每天领导第一个去的办公室是哪个?答案是上面的主要群组,在这里它被称为初始群组,但无论哪个名字,说的都是/etc/passwd的第四段那个群组。
root:*::
daemon:*::
m:!::
这是截取的/etc/gshadow的一部分,每行也是被冒号分成四段,分别是群组名、密码、群组管理员、成员。密码段若是!或*,则表示改组无法登入,即无法用newgrp切换。
增加群组命令
groupadd -g/r groupname -g后面跟gid,加上-r 表示建立的是系统群组,即/etc/gshadow的第二栏会变成星号或叹号。
修改群组命令 :groupmod 类似与usermod,即——groupmod [-g gid] [-n group_name]
删除群组命令:groupdel groupname ,但是这个命令有些要注意的地方,因为某些情况下会失败,原因是还有用户的初始群组是该群组,所以要先解除这种绑定,即修改该用户在/etc/passwd的gid或直接删除该用户。
八、其他命令
1)除了上面的groups可以查看群组的信息外,还有一个id命令,可以查看更多信息,直接在终端输入id就好,不必加参数。
2)passwd命令 passwd [-lunxwS] username
-l :将 username 这个账号的密码锁住 (lock),在 /etc/shadow 内的密码栏修订~
-u :将 -l 的 lock 解开!
-n :后面接天数 (数字) ,最短天数;亦即是 /etc/shadow 内的第四栏;
-x :后面接天数 (数字) ,最长天数;亦即是 /etc/shadow 内的第五栏;
-w :后面接天数 (数字) ,警告天数;亦即是 /etc/shadow 内的第六栏;
-S :显示目前这个 username 的相关信息。