下面我们来看看group有关登录文件内容,跟查看用户登录文件一样:
- [huang@myhost/etc]$ vim ./group
-
root:x:0:root
-
audio:x:92:huang
-
huang:x:1000:huang
- ## 部分内容省略 ##
查看第四行有关“huang”这行:
第一字段: huang 表示huang用户组;
第二字段: x 表示用户组密码,一般用户组是不设置密码的,如果设置密码,密码放置在文件/etc
/gshadow里;
第三字段: 1000 表示huang用户组的GID;
第四字段: huang 这个是表示属于用户组huang的用户,如果有多个用户,直接在后天添加,中间以逗号隔开。
Note:细心的朋友可能会看到,用户huang同时属于audio和huang两个组,也就是说,一个用户可以属于多个组,并且身具多个用户组的权限。就像现实中的人一样,一个人可能同时属于两个或者更多家庭的成员。
下面来看看存放用户组密码的文件:/etc/gshadow
- [huang@myhost/etc]$ sudo gedit ./gshadow
-
root:::root
-
bin:::root,bin,daemon
-
daemon:::root,bin,daemon
-
sys:::root,bin
-
adm:::root,daemon
-
audio:::huang
-
storage:x::hal
-
huang:!::huang
-
test:!::
- ## 部分内容省略 ##
同样,我们来分析上面每行四个字段(:)的具体含义:
第一字段: huang 用户组名称;
第二字段: ! 有感叹号表示该用户组不能使用密码来登录系统,在创建改group时,没有设置密码;
第三字段: 空 用户组管理员账号;
第四字段: 空 属于用户组的所有用户账号;
Note:用户huang属于audio用户组,是配置ALSA声卡时设置的.
- [huang@myhost/~]$ sudo grep huang /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:huang:x:1000:1000::/home/huang:/bin/bash
-
/etc/shadow:huang::15225:0:99999:7:::
-
/etc/group:audio:x:92:huang
-
/etc/group:huang:x:1000:huang
-
/etc/gshadow:audio:::huang
-
/etc/gshadow:huang:!::huang
上面第一行命令就是要在:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow中找到所有包含'huang'的行。
返回值的前两行内容,请参看本博客《Linux学习笔记之用户登录》博文,里面有详细介绍,不再赘述。
需要强调一下的是:用户 huang ,UID = 1000 并且 GID = 1000 ,这里的GID为初始GID,即用户huang登录系统后,他便获得的GID(=1000).这样就不会导致混乱,因为用户huang既属于huang组,又属于audio组,那在用户huang登录的时候到底是属于huang组,属于audio组还是都属于呢?用户huang新建的文件GID是那个呢??
通常情况,在不知道某个用户属于那个或者那些组时,可以用groups命令来产看:
- [huang@myhost/~]$ groups
-
audio huang
说明:用户huang 同时属于两个group,分别是:audio和huang.书上说第一个(audio)为有效用户组,但是实际情况并非如此,请看下面简单测试:
- [huang@myhost/work]$ touch ./test
-
[huang@myhost/work]$ ls -al
-
total 16
-
drwxr-xr-x 4 huang huang 4096 Sep 10 02:26 .
-
drwx------ 30 huang huang 4096 Sep 10 02:08 ..
-
-rw-r--r-- 1 huang huang 0 Sep 10 02:26 test
- ## 部分无关内容省略 ##
用命令touch新建文件test,发现test所属用户组为huang,并非audio.下面用命令newgrp改变所属的有效用户组:
- [huang@myhost/work]$ newgrp audio
-
[huang@myhost/work]$ groups
-
audio huang
-
[huang@myhost/work]$ touch ./test2
-
[huang@myhost/work]$ ls -al
-
drwxr-xr-x 4 huang huang 4096 Sep 10 02:29 .
-
drwx------ 30 huang huang 4096 Sep 10 02:08 ..
-
-rw-r--r-- 1 huang huang 0 Sep 10 02:26 test
-
-rw-r--r-- 1 huang audio 0 Sep 10 02:29 test2
查看test2文件属性,可以清楚的看到test2文件所属用户组为audio。而且无论在使用newgrp命令前后,用groups查看用户所属用户组的排列顺序并没有发生改变,因此书上的这点论断值得商榷。
用exit命令推出改变有效用户组后,用touch新建文件,然后查看文件属性,所属用户组变回原来的huang。
当然查看某个用户UID及group属性时,可以用id命令来直接查看。当要查看登录用户自己属性时,直接输入id即可,例如:
- [huang@myhost/~]$ id
-
uid=1000(huang) gid=1000(huang) groups=1000(huang),92(audio)
查看其他用户UID和GID,用:id+[username],例如查看root的UID和GID:
- [huang@myhost/~]$ id root
-
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)
下面看一个添加用户组的命令-- groupadd:
- [huang@myhost/etc]$ sudo groupadd [-参数] 组名称
- [huang@myhost/etc]$ sudo groupadd [-参数]
-
[-f] 强制添加用户组,即使该用户组已经曾在;
-
[-g] 后天跟gid
-
[-o] 后可以接非唯一的gid,可以允许添加非唯一的gid到系统中;
-
[-p] 同usermod的[-p]选项;
-
[-r] 添加系统用户组;
下面看看一些简单的例子:
- [huang@myhost/etc]$ sudo groupadd -g 1290 gtest
-
[huang@myhost/etc]$ sudo grep 'gtest' /etc/group /etc/gshadow
-
/etc/group:gtest:x:1290:
-
/etc/gshadow:gtest:!::
-
[huang@myhost/etc]$ sudo groupmod -g 1291 gtest
-
[huang@myhost/etc]$ sudo grep 'gtest' /etc/group /etc/gshadow
-
/etc/group:gtest:x:1291:
-
/etc/gshadow:gtest:!::
-
[huang@myhost/etc]$ sudo groupadd -r stest
-
[huang@myhost/etc]$ sudo grep 'stest' /etc/group /etc/gshadow
-
/etc/group:stest:x:578:
-
/etc/gshadow:stest:!::
-
-
[huang@myhost/etc]$ sudo groupdel stest
-
[huang@myhost/etc]$ sudo grep 'stest' /etc/group /etc/gshadow
-
[huang@myhost/etc]$
以groupadd新增加的用户组默认都不能带password登录的,也就是说都是私有用户组,无法使用newgrp来登录;
阅读(1437) | 评论(0) | 转发(2) |