2016-07-04: 修改 Linux 用户的默认属组

问题

在 Java 中调用一个 linux 的工具, 这个工具会最终生成一些文件供项目使用. 但是发现, 生成的文件属组是 root. 怎么修改?

解决

[test@f78491976251 ~]$ touch a1

## 新生成的文件属组是 root
[test@f78491976251 ~]$ ll a1
-rw-r--r-- 1 test root 0 Jul  4 10:33 a1
## newgrp 可以临时切换到 test 属组
[test@f78491976251 ~]$ newgrp test
[test@f78491976251 ~]$ touch a2
[test@f78491976251 ~]$ ll a2
-rw-rw-r-- 1 test test 0 Jul  4 10:33 a2
## groups 结果的第一个是默认属组
[test2@f78491976251 ~]$ groups
root users test2

newgrp更改默认组后注销后再登录又会恢复原样,如果想永久修改的话要修改passwd文件,需要root权限修改/etc/passwd. passwd 中的数据类似如下:

test:x:1002:1002::/home/test:/bin/bash

第二个1002表示 test 用户的 gid, 如果要修改默认属组, 就要修改这个值

查看/etc/group, 可以看到所属的组

[root@f78491976251 etc]# cat /etc/group|grep test
users:x:100:test
test:x:1001:test

可以看到 test 用户归属于 users 和 test 两个, 但实际上因为默认的是 root 组(在 passwd 中已经定义了, 所以 /etc/group中的 root 组可以没有, 当然加上也没有关系)

2016-07-04 00:0077