私は使うマネージャーをお待ちくださいさまざまなオペレーティングシステム構成をバージョン管理に適用します。これまでは、ローカルのGitリポジトリを使用して変更を追跡するだけで満足していましたが、突然この機能を最大限に活用していないことに気付きました。別のストレージからデータを取得できるように、/etc
コンピューターは構成をインポートします。
リモートサーバーにベアリポジトリを作成しました(ユーザーのみがgit
そのコンテンツにアクセスできるようにします)。
sudo -u git -H git init --bare ~git/repos/anthony-etc.git
chmod -R 700 ~git/repos/anthony-etc.git/
リモートサーバーのSSHデーモンは、ユーザー(ユーザーを含むgit
)が鍵のみを使用して認証できるように構成されており、個人用の公開鍵をサーバーのユーザーにアップロードしました.authorized_keys
。git
私のローカルコンピュータからリモートストレージとして追加しました。
sudo git remote add origin [email protected]:/home/git/repos/anthony-etc.git/
スーパーユーザーだけがディレクトリ/etc
(サブディレクトリを含む).git
のファイルを変更できるので、すべてのGitコマンドはsudo
。
SSHを使用してプッシュを試みる前に、現在SSH認証エージェントが利用可能であることを確認しました。
$ sudo ssh-add -l
Could not open a connection to your authentication agent.
実行すると、失敗し、root以外のユーザーとしてすでに使用しているSSH認証エージェントと連携するようにsudo
設定できる方法がわかります。sudo
答え1
機能しない理由は、SSH_AUTH_SOCK
コマンドを実行するときにSSHエージェントのUnixドメインソケットファイル名を保存するために使用される変数が環境にないためですsudo
。
このオプションはデフォルトでenv_reset
セキュリティポリシーで有効になっており、多くのGNU / Linuxディストリビューションでは、sudo
設定ファイルに次の行を追加して明示的に作成します。/etc/sudoers
Defaults env_reset
これにより、コマンドが最小環境で実行され、呼び出し側ユーザーのほとんどの環境変数が制限された環境から削除されます。
特定の変数をホワイトリストに登録して環境に保持できます。安全のため、visudo
コマンドを使用してsudoers
構成ファイルを編集します。また/etc/sudoers
、直接変更するのではなく、ディレクトリ内の別々のファイルにカスタム修正を追加しています/etc/sudoers.d/
。これを行うには、sudo visudo -f /etc/sudoers.d/custom
構成に次の行が含まれるように実行します。
Defaults env_keep += "SSH_AUTH_SOCK"
これで実行すると、sudo ssh-add -l
認証ブローカーに接続でき、リモートリポジトリを引き続き更新できることが表示されます。
sudo git push --set-upstream origin master