OpenBSDでは、ユーザーのgitリポジトリにユーザーのcrontabを保存できますか?

OpenBSDでは、ユーザーのgitリポジトリにユーザーのcrontabを保存できますか?

OpenBSDのオンと使用cronそしてcrontab、保存できるかどうかcrontab(5)ユーザー数git同じユーザーのためのリポジトリ?

このようなタスクを実行する正しい方法は何ですか?

(正しい方向に答えるためにバイナリを再コンパイルし、良いセキュリティパラダイムに違反する必要はありませんが、システムの特定の権限を変更することに反対するものではありません。)

ベストアンサー1

すべてのユーザーのcrontabはディレクトリに保存されます。ユーザーはディレクトリに直接アクセスできず、特権コマンドを使用する必要がありますcrontab

バージョン管理に実際のcrontabファイルを保存する代わりにコミットフックcrontab最新バージョンをプッシュするには実行してください。

crontab "$HOSTNAME.crontab"

最も簡単なフックはフックですpost-commitgit rev-parse --abbrev-ref HEAD現在の分岐検索を実行しますgit show --format=format: --name-status HEAD

#!/bin/sh
commit=$(git rev-parse HEAD)
branch=$(git rev-parse --name-status "$commit")
git show --format=format: --name-status "$commit" |
while read -r status filename; do
  if [ "$branch" = "master" ] &&
     [ "$status" = "A" -o "$status" = "M" ] &&
     [ "$filename" = "crontabs/$HOSTNAME.crontab" ]; then
    crontab "$filename"
  fi
done

これはマージやリベースを処理せず、crontab失敗した場合は履歴に何も登録しません。これには若干のパラダイム衝突があります。 gitには基本的に複数のブランチがありますが、特定の時間に特定のシステムでは1つのcrontabしかないからです。ロバスト性を高めるために、ライブcrontab専用ブランチを持ち、作業ブランチのcrontabファイルを変更した場合は、そのブランチにマージすることをお勧めします。

おすすめ記事