すべてのgitコマンドでgitがsudoを要求しないようにするにはどうすればよいですか


10

/var/wwwWebアプリのクローンを保存するディレクトリを作成しました。最初にGitHubからアプリをクローンしたときは、sudoを使用する必要があり、実行するたびにsudoが必要ですgit pull。これが原因で問題が発生しています。たとえば、私のsshキーが一致していません。そのため、を実行するときは、git pullsshではなくHTTPSを使用し、アプリをプルして更新するたびにユーザー名とパスワードを手動で入力する必要があります。gitを使用するたびにsudoを使用する必要がないように、これを構成するにはどうすればよいですか?

回答:


12

ここではいくつかのことが行われています。

  • するとsudo git checkout ...、これらすべてのファイルはrootユーザーとrootグループによって所有されます。標準のアクセス許可では、これらのファイルを後で変更するにはrootになる必要があります。

  • /var/www/デフォルトではwww-dataグループが所有しています。ユーザーのデフォルトではないもの。

書き込む最も簡単な方法/var/www/、ユーザーをwww-dataグループに追加することです。もちろん、ユーザーが所有するようにディレクトリを変更することもできますが、それらをプリエンプトしない場合、これはいくつかの厄介な影響を与える可能性があります。

www-dataグループにユーザーを追加した後、再度ログインする必要があります。

具体的には、ルートが所有するデータの現在の混乱を修正する必要があります。ルートとして削除(および再チェックアウト)することもできますが、保存していない作業がある場合は、すべてをユーザーに戻すほうが簡単です。次の例は非常に面倒で、私たちが話していることは/ var / www /内の唯一のものであることを前提としています。

sudo chown -R www-data: /var/www/

わかりsudo git checkoutました。別のディレクトリに移動して、/ var / wwwディレクトリにアプリをデプロイした方がよいでしょうか?そもそも、プロジェクトを最初にvarディレクトリにチェックアウトするのはよくないことだとどこかで読んだだけです。1人がホームディレクトリにプロジェクトをチェックアウトすることを勧めました
Scott

2
rootとしてのgitの実行を停止するのが最適です。それを目指してください。rootとして実行したままにする計画は、すでに失敗しています。ウェブディレクトリにチェックアウトすることについてあなたが言っていることは正しいです-あなたの.gitディレクトリへのアクセスを人々に与えることは彼らにあなたが人々にアクセスさせたくないものへのアクセスを与えることができますが、.git/問題全体を軽減するディレクトリへのアクセスを防ぐことができます
オリ

ホストされていないもの(.gitを含む)が入るウェブサイトの保持ディレクトリがあり、その中にApacheにホストするように指示するpublic /ディレクトリがある他の許容可能なディレクトリ構造もあります。1つのWebサイトを/ var / www /に維持するという考え方は非常に古くからあります。
オリ

推奨されるディレクトリ構造はありますか?基本的に、私は自分のチェックアウトを持っており、それを.tgzにバンドルする必要があります。そして、それをノードアプリケーションに解凍する必要があります。ちなみに流星アプリです。私はこれらの3つの別々のフォルダ/ファイルを保存する場所を種類混乱のだ
スコット

@Scott私はこれと同じ問題に遭遇しました。リポジトリ内の後続のサブコマンド(私の場合)はgitを呼び出し、他のリポジトリのクローンを作成しようとします。あなたが述べたようにSSHキーを再調整する解決策は、sudoを使用せずにプロセスを開始することでした。このQ&Aとスレッドのディスカッションの多くは、おそらく壁にぶつかる回避策です。
ジョーダンステファネッリ

0

フォルダのオーナーを変更しますか?wwwフォルダーを/ home / usernameに移動しました。/etc/apache2/sites-enabled/000-defaultの場所を変更できます


だからそれは私が私のクローンを保存しているディレクトリと関係がありますか?
スコット

はい、正確に。デフォルトで/var/wwwは書き込みできません。
Joyfulgrind 2013

0

私はこの答えには少し遅れますが、リポジトリをhttpsからsshに変更する必要があるたびにパスワードを入力しないようにすることがわかりました。

Github.comヘルプセクションから:

git remote set-urlコマンドは、既存のリモートリポジトリURLを変更します。

ターミナルを開きます。

現在の作業ディレクトリをローカルプロジェクトに変更します。

変更するリモートの名前を取得するために、既存のリモートをリストします。

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

git remote set-urlコマンドを使用して、リモートのURLをHTTPSからSSHに変更します。

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

リモートURLが変更されたことを確認します。

git remote -v

#新しいリモートURLを確認

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.