web-dev-qa-db-ja.com

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

Webアプリのクローンを格納するディレクトリ/var/wwwを作成しました。最初にgithubからアプリをクローンしたとき、Sudoを使用する必要があり、git pullを実行するたびにSudoが必要になりました。このため、いくつかの問題に直面しています。たとえば、私のsshキーが一致していません。したがって、git pullを実行するときは、sshの代わりにhttpsを使用し、アプリをプルおよび更新するたびにユーザー名とパスワードを手動で入力する必要があります。 gitを使用するたびにSudoを使用する必要がないように、これを構成するにはどうすればよいですか?

10
Scott

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

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

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

/var/www/で記述する最も簡単な方法は、単に ユーザーをwww-dataグループに追加する です。もちろん、ディレクトリをユーザーが所有するように変更することはできますが、これを先取りしていない場合、これは厄介なノックオン効果を持つ可能性があります。

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

具体的には、現在所有している大量のルート所有データを修正する必要があります。ルートとして削除(および再チェックアウト)することもできますが、保存していない作業がある場合は、すべてをユーザーに戻す方が簡単です。次の例は非常に怠zyであり、/ var/www /にあるのは私たちが話していることだけであると想定しています。

Sudo chown -R www-data: /var/www/
12
Oli

フム、フォルダの所有者を変更しますか? wwwフォルダーを/ home/usernameに移動しました。その場所は/ etc/Apache2/sites-enabled/000-defaultで変更できます

0
michel

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

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

Gitremote 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 [email protected]:USERNAME/REPOSITORY.git

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

git remote -v

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

Origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
Origin  [email protected]:USERNAME/REPOSITORY.git (Push)
0
jonnyjandles