我的代码的来源都属于unix组group1
:
> ls -l *c
-rw-r--r-- 1 user1 group1 4976 Nov 9 13:42 commands.c
-rw-r--r-- 1 user1 group1 2347 Nov 9 13:42 env_list.c
-rw-r--r-- 1 user1 group1 2468 Nov 9 13:42 job_list.c
-rw-r--r-- 1 user1 group1 4453 Nov 9 13:42 jobs.c
-rw-r--r-- 1 user1 group1 3278 Nov 9 13:42 smash.c
-rw-r--r-- 1 user1 group1 2151 Nov 9 13:42 variable.c
gcc
属于group2
:
> ls -l gcc
-rwxrwsr-x 1 toolsusr group2 72 Dec 30 2008 /usr/intel/pkgs/gcc/4.3.2/bin//gcc
出于某种原因,当我编译时,所有目标都被标记为属于group2
。但是,当我编译类似的项目时,目标仍然在group1
。
如何控制生成文件的组(以及我使用它时的任何其他权限)?
我正在使用gcc 4.3.2和这个版本的Linux:x86-64_linux_2.6.5_ImageSLES9SP3-3
答案 0 :(得分:1)
gcc
不关心文件的所有权。如果您需要修改生成的文件的所有权或权限,那么您应该在makefile中这样做。
答案 1 :(得分:1)
查看您正在编译的目录的 stick bit 。如果设置,它将使写入该目录的所有文件与该目录本身具有相同的组。如果未设置,则它们将具有正在写入文件的用户的默认组(运行gcc的用户)。 你可以使用
chmod +t dir
将粘滞位添加到目录。
<强>注释强>:
这不是粘性位,而是setguid位:
chmod +s dir
答案 2 :(得分:0)
对于用户/组更新,请将其放在makefile中(尽管除非您是root用户或者以不同用户身份运行cp
之类的操作,否则无法更改用户)。
对于rwx
权限,请在运行uname
之前运行gcc
。