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

发布于 2024-10-01 20:50:59 字数 799 浏览 4 评论 0原文

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

The sources for my code all belong to the unix group 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 belongs to group2:

> ls -l gcc
-rwxrwsr-x  1 toolsusr group2 72 Dec 30  2008 /usr/intel/pkgs/gcc/4.3.2/bin//gcc

For some reason, when I compile, all of the targets are marked as belonging to group2. However, when I compile a similar project, the targets remain under group1.

How can I control the group (and while I'm at it, any other permissions) of the generated files?

I am using gcc 4.3.2 and this version of Linux: x86-64_linux_2.6.5_ImageSLES9SP3-3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

生来就爱笑 2024-10-08 20:50:59

查看正在编译的目录的粘着位。如果设置,它将使得写入该目录的所有文件都具有该目录本身的相同组。如果未设置,它们将拥有正在写入文件的用户的默认组(运行 gcc 的用户)。
您可以使用

chmod +t dir

将粘滞位添加到目录中。

注释

这不是粘性位,而是setguid位:

chmod +s dir

Take a look at the stick bit of the directory you are compiling in. If set, it will make all of the files written to that directory have the same group of the directory itself. If it is not set, they will have the default group of the user who is writing the file (the user who ran gcc).
You can use

chmod +t dir

to add the sticky bit to a directory.

Comment:

It's not the sticky bit, but rather the setguid bit:

chmod +s dir
遇到 2024-10-08 20:50:59

gcc 不关心文件的所有权。如果您需要修改生成文件的所有权或权限,那么您应该在 makefile 中执行此操作。

gcc doesn't concern itself with ownership of the files. If you need to modify the ownership or permissions of the generated files then you should do so in your makefile.

不知所踪 2024-10-08 20:50:59

对于用户/组更新,将其放入 makefile 中(尽管不可能更改用户,除非您是 root 或以其他用户身份运行诸如 cp 之类的内容)。

对于 rwx 权限,请在运行 gcc 之前运行 uname

For user/group updates, put it in your makefile (although it is impossible to change the user unless you are root or you run something like cp as a different user).

For rwx permissions, run uname before running gcc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文