Как я могу контролировать разрешения файлов, сгенерированных gcc в Linux? - PullRequest
0 голосов
/ 09 ноября 2010

Все исходники моего кода принадлежат группе 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 ]

1 голос
/ 09 ноября 2010

Взгляните на флеш-бит каталога, в который вы компилируете. Если установлено, все файлы, записанные в этот каталог, будут иметь ту же группу самого каталога.Если он не установлен, у них будет группа по умолчанию для пользователя, который пишет файл (пользователя, который запустил gcc).Вы можете использовать

chmod +t dir

, чтобы добавить бит закрепления в каталог.

Комментарий :

Это не бит, а скорее бит setguid:

chmod +s dir
1 голос
/ 09 ноября 2010

gcc не заботится о владении файлами. Если вам нужно изменить владельца или права доступа к сгенерированным файлам, то вы должны сделать это в вашем make-файле.

0 голосов
/ 09 ноября 2010

Для обновлений пользователей / групп, поместите его в свой make-файл (хотя невозможно изменить пользователя, если вы не являетесь пользователем root или не запускаете что-то вроде cp как другой пользователь).

Для разрешений rwx запустите uname перед запуском gcc.

...