Есть ли способ отслеживать, что удаляет исполняемый флаг из файла?

У меня есть набор git-крюков, которые постоянно удаляют свой исполняемый флаг. Я совершенно не понимаю, что это может сделать, но пока что единственное, что я нашел, которое может немного смягчить проблему, – это иметь chmod +x ~/.git_template/hooks/* в моем файле .bashrc (почти всегда, когда я перезагрузил компьютер). Если не ставить это в моей функции PS1 у меня заканчиваются идеи, и мне интересно, есть ли что-нибудь, что связано с моей конкретной настройкой, которая может быть причиной этого, или я могу узнать, какой процесс вызывает это.

Все мои репозитории git создаются на основе шаблона ~/.git_template который просто содержит символическую ссылку на каталог крючков, который я использую (поэтому они все используют современные версии). Хотя это может быть не совсем прямолинейно, я ничего не вижу в этом, что должно вызывать такое (откровенно) непонятное поведение.

Edit: На самом деле, я заметил, что с добавлением нового крючка ( post-checkout ), что все крючки имеют разрешение на выполнение, удаляются каждый раз, когда выполняется этот крюк (по крайней мере, до сих пор). На всякий случай это может быть актуально, я вложу полный git-крючок здесь:

 #!/usr/bin/env node var spawn = require('child_process').spawn; var providedArguments = process.argv.slice(2) var previousHead = providedArguments[0]; var newHead = providedArguments[1]; var changed = false; var git = spawn('git', ['diff', previousHead, newHead, '--stat', '--', 'package.json']); git.stdout.on('data', function(data) { changed = true; }); git.on('exit', function() { if (changed) { console.log('package.json changed. Running npm install'); spawn('npm', ['install'], { stdio: 'inherit' }); } }); 

  • Список файлов, к которым обращается приложение
  • binary может запускаться только при запуске после создания символической ссылки на него
  • Как найти файл, соответствующий трубе, открытому процессом?
  • Как сохранить только четыре строки в моем файле в сценариях оболочки?
  • Самый быстрый способ прочитать последнюю строку в шаблоне нескольких файлов с тем же расширением
  • write () игнорирует права доступа к файлам
  • Восстановить права доступа к системному файлу
  • Объединение двух файлов
  • One Solution collect form web for “Есть ли способ отслеживать, что удаляет исполняемый флаг из файла?”

    Я бы запускал strace -fo strace.log или эквивалент вашей системы, если не Linux (например, truss на Solaris, tusc на HP / UX, dtruss на OS / X …) в команде, которая (в конце концов) вызывает этот хук.

    Затем в strace.log вы сможете увидеть, что делает chmod() (или fchmod() или fchmodat() …), и следуйте за потоком execve() s, чтобы узнать, что вызвало разрешения файлов на быть изменен.

    Interesting Posts

    Дисковый диск WD «спины» исчезает, исчезает

    Privoxy / VPN / удаленный прокси

    Нужна помощь в расшифровке скрипта bash

    Почтовый клиент Linux, который может запускать скрипт PHP для анализа полученного сообщения электронной почты

    Предоставление разрешений с использованием rysnc

    Как рекламировать услугу на порту

    Удаленный рабочий стол (KDE) через обратный туннель SSH

    Помимо /etc/rc.conf, какие другие файлы конфигурации управляют системными службами во время загрузки?

    Экран автоматического масштабирования KDE после входа в систему с подключенным монитором HiDPI или нет

    Расширить прокручиваемое содержимое gnu-screen?

    Оптимальный способ установки и чтения переменных

    Сохранение исходного кода из Интернета

    изменить цвет `echo` для конкретной строки в сценарии оболочки в Linux?

    Последний сортировать по Linux

    Как получить доступ к данным календаря Evolution из командной строки?

    Linux и Unix - лучшая ОС в мире.