如何控制linux中gcc生成的文件的权限?

时间:2010-11-09 11:46:25

标签: linux gcc file-permissions

我的代码的来源都属于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

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