Полномочия являются вредителем.
В основном необходимо удостовериться, что все те разработчики могут записать во все в мерзавце repo.
Пропустите вниз к Решению Новой волны для превосходящего метода предоставления, что группа разработчиков пишет возможность.
При помещении всех разработчиков в особенно созданную группу можно, в принципе, просто сделать:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Затем изменитесь umask
для пользователей к 002
, так, чтобы новые файлы были созданы с перезаписываемыми группой полномочиями.
Проблемами с этим является легион; если Вы находитесь на дистрибутиве, который принимает a umask
из 022
(такие как наличие общего users
группа, которая включает всех по умолчанию), это может открыть проблемы безопасности в другом месте. И рано или поздно, что-то собирается завинтить Вашу тщательно созданную схему полномочий, помещая repo неисправное, пока Вы не добираетесь root
доступ и ремонтирует его (т.е. повторное выполнение вышеупомянутых команд).
Отличное решение — хотя менее хорошо понято, и который требует немного большей поддержки ОС/инструмента — состоит в том, чтобы использовать расширенные атрибуты POSIX. Я только приехал в эту область справедливо недавно, таким образом, мое знание здесь не является столь горячим, как это могло быть. Но в основном, расширенный ACL является способностью установить полномочия на больше, чем просто 3 слота по умолчанию (user/group/other).
Так еще раз создайте свою группу, затем работайте:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
Это настраивает расширенный ACL для группы так, чтобы элементы группы могли читать/писать/получать доступ, любые файлы уже там (первая строка); затем, также скажите всем существующим каталогам, что новые файлы должны иметь этот тот же примененный ACL (вторая строка).
Надежда, которая получает Вас на Вашем пути.
Можно присоединить к процессу с помощью GDB и идентификатора процесса и затем выйти эти call
команда с exit(0)
как аргумент.
call
позволяет Вам вызывать функции в рамках под управлением программы. Вызов exit(0)
выходы с кодом возврата 0.
gdb -p <process name>
....
.... Gdb output clipped
(gdb) call exit(0)
Program exited normally.
Как короткий инструмент:
gdb --batch --eval-command 'call exit(0)' --pid <process id>
Нет. Когда оболочка ловит SIGCHLD
, она безусловно устанавливает возвращаемое значение соответственно на ненулевое значение, таким образом, это потребовало бы модификации или сценария или оболочки.
Я m, не уверенный, но это выйдет с 0, если какой-либо из перечисленных сигналов будет получен. Вы могли выполнить другие действия включая вызывание функции, и т.д.
#!/bin/bash
trap 'exit 0' SIGINT SIGQUIT SIGTERM
Немного hacky пути, но..
можно создать обертку к процессу, переопределив Обработчик SIGCHLD. Например:
#!/bin/bash
set -o monitor
trap 'exit(0)' CHLD
/some/dir/yourcommand
После этого можно сделать сценарий, выполняющий эту обертку вместо процесса путем помещения его ранее в $PATH и переименования к тому же имени.