私はgitoliteにプッシュするなどの方法でDebianサーバーを維持したいと思います。
問題は、gitoliteをrootまたは外部からシステムへのシェルアクセス権を持つユーザーとして実行しないでください。ただし、フックとトリガーでetckeeperと対話するにはgitoliteが必要です(たとえば、外部ユーザーがgit操作を実行する前に、作業ツリーに保留中のすべての変更をコミットしてデフォルトのgitoliteリポジトリにプッシュすることを確認してください)。代わりにルートアクセスが必要です。
何か知りたい安全でシンプルでエレガンスこの問題を解決する方法。
明らかに多くのソリューションが可能ですが、私はLinuxシステムの管理に精通していないので、インスピレーションを探しています。私が考えた考えられる解決策は次のとおりです。
2人の異なるユーザーといくつかのメッセージングシステム(生産者/消費者またはデーモン)を使用して、gitoliteはrootユーザーが実行するように1つのタスクを残します。 (特に終了コードを待つ必要があるため、すべてのコマンドを実行できるシェルスクリプトであるgit Hookの高度な機能に比べて非常に複雑に見えます。)
setuidを使用しますか?この作業のために設計されているようですが、注意深く読んでみると危険に見え、シェルスクリプトをあまりサポートしていないようです。
誰もが正しい方向に私を指すことができますか?
修正する:この質問に対する答えを私が直接見つけて、以下に答えを投稿するようになりました。他の解決策/考察を歓迎します...
ベストアンサー1
私は次のタイトルのガイドを見つけました。ジトライトとetckeeperしかし、それは私によってテストされていません。
抜粋
多くのLinuxシステムの変更を追跡するために、/ etcのすべての変更を追跡するetckeeperをインストールしました。パッケージをインストールすると、自動コミットのための素晴らしい適切なフックが付属しています。
gitリポジトリの変更を維持することに加えて、gitoliteが管理する中央リポジトリにプッシュし始めました。次の手順でetckeeperを設定しました。
ルート
/etc
$ git config –global user.email [email protected] $ git config –global user.name “Configuration Admin” $ git remote add origin [email protected]:machineconf
gitキーを
/root/.ssh
。rootユーザーとして:
$ cd /etc/etckeeper/commit.d $ (echo ‘#!/bin/sh’ ; echo ‘git push origin’) > 99git-push $ chmod +x 99git-push $ git add . $ git commit -m “automatically push commits to backup repository”