root@Lucha:~# useradd test -s /bin/bash -m -d /home/test
#先创建一个名字为test的帐号,由于没有加-g 所以默认的组为test
root@Lucha:~# passwd test
Enter new UNIX password:
Retype new UNIX password:
#更改一下密码
passwd: password updated successfully
#更改成功!
root@Lucha:~# id test
uid=1002(test) gid=1002(test) groups=1002(test)
##查看一下帐号的所属组
可以看出,在Ubuntu9.10中创建一个帐号如果没有指定-g的话默认的组为该用户名。
root@Lucha:~# su - test
test@Lucha:~$ touch TT
test@Lucha:~$ ls -dhl TT
-rw-r--r-- 1 test test 0 2010-03-17 12:56 TT
用test帐号创建一个文件所属组是test,如果想更改默认组,可以用newgrp,不过要先把用户加入想更改的组中。
root@Lucha:~# usermod -G users test
#把test账户加到users组
root@Lucha:~# id test
uid=1002(test) gid=1002(test) groups=1002(test),100(users)
##可以看出虽然已经加入users组,但是默认组还是test
测试一下
root@Lucha:~# su - test
test@Lucha:~$ touch T2
test@Lucha:~$ ls -dhl T2
-rw-r--r-- 1 test test 0 2010-03-17 13:03 T2
test@Lucha:~$
现在让我们改一下test的默认组,用newgrp命令。Test用户自己可以运行这个命令。
test@Lucha:~$ groups #查看自己所在组
test users
test@Lucha:~$ newgrp users #切换为user测试一下:s组
test@Lucha:~$ touch T3
test@Lucha:~$ ls -dhl T3
-rw-r--r-- 1 test users 0 2010-03-17 13:07 T3
可以看出,现在test创建的文件所属组变成了users。但是有个问题,就是用newgrp更改默认组后注销后再登录又会恢复原样,如果想永久修改的话要修改passwd文件,需要root权限。先查看一下/etc/passwd文件:
root@Lucha:~# cat /etc/passwd | grep '^test'
test:x:1002:1002::/home/test:/bin/bash
第一个1002是test的UID,而第二个1002是test的GID,也就是默认组的GID。Test组的GID是1002。再看看 /etc/group:
root@Lucha:~# cat /etc/group | egrep '(^users|^test)'
users:x:100:test
test:x:1002:
可以看到user组里有test用户,但是test组里却没有test用户,那是因为test组是test的默认组(在passwd里已经定义了,当然要是硬要加上去也是可以的)。要想永久更改默认组只需要修改 /etc/passwd和 /etc/group文件,在passwd把test的GID改成100。
更改后的文件:
root@Lucha:~# cat /etc/passwd | grep '^test'
test:x:1002:100::/home/test:/bin/bash
root@Lucha:~# cat /etc/group | egrep '(^users|^test)'
users:x:100: #把原来的test删除了,因为已经是默认组了,不需要了
test:x:1002:test #如果不更改留空的话用户test就不属于test组了,只属于users组
测试一下:
root@Lucha:~# su - test
test@Lucha:~$ touch NEW
test@Lucha:~$ ls -dhl NEW
-rw-r--r-- 1 test users 0 2010-03-17 13:36 NEW
即使重启也有效