2

このセクションの投稿先が正しいかどうかわかりません。そうでない場合は、次の問題をどこに投稿すればよいか教えてください。

私は2台のマシンを持つLAN上にいます。1台はGitサーバーとして機能するOS X Yosemiteを搭載し、もう1台はGitクライアントとして機能するUbuntuを実行しているラップトップで、読み取り専用リポジトリにアクセスしますgit://

私はGit Bookを読んでいます。ここでhttps://git-scm.com/book/it/v2/Git-on-the-Server-Git-Daemon、Scott Chacon は次のように述べています。

セキュリティ上の理由から、このデーモンをリポジトリへの読み取り専用権限を持つユーザーとして実行することを強くお勧めします。これは、新しいユーザー git-ro を作成してデーモンを実行することで簡単に実行できます。簡単にするために、Gitosis を実行しているのと同じ git ユーザーとして単純に実行します。

git デーモンを実行するコマンドは次のとおりです。

/usr/bin/git daemon --base-path=/opt/git/ /opt/git/

これで、OS X マシンの現在のユーザー (現在のユーザーも管理者) で問題なくコマンドを美しく実行でき、Git 読み取り専用デーモンが起動しますが、特権のないユーザーとして実行しようとするとすぐにレポへの読み取り専用アクセス権を持っている(私の場合、git-ro本で提案されているようにユーザー)、git daemon不平を言って起動しません:

$ /usr/bin/git daemon \
    --user=git-ro --group=git-ro \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
fatal: cannot drop privileges

OS X の Terminal.app でコマンドを実行していますが、まだ起動時に開始するように git デーモンを設定していません。cannot drop privilegesリポジトリへの読み取り専用権限を持つ特権のないユーザーでデーモンを解決して実行するにはどうすればよいですか?

注目してくれてありがとう!

編集: ここhttp://git.661346.n2.nabble.com/regression-quot-96b9e0e3-config-treat-user-and-xdg-config-permission-problems-as-errors-quot-busted-n-td7582202 .html#d1365658927000-296コマンドを実行しているHOMEディレクトリに問題があるようですね。もしそうなら、私は自分の場合どのように行動すべきですか?

編集 2: sudo で実行されたコマンドは次のとおりです。

$ sudo git daemon --reuseaddr --user=git-ro --group=git-ro --base-path=/opt/git/ /opt/git/

デーモンが起動しますが、3 つのプロセスが実行されており、そのうちの 2 つがルートとして実行されています。

$ ps aux | grep "git-ro"
git-ro           1477   0.0  0.0  2471332   1424 s000  S+    7:34PM   0:00.01 git-daemon --reuseaddr --user=git-ro --group=git-ro --base-path=/opt/git/ /opt/git/
root             1476   0.0  0.0  2464108   1608 s000  S+    7:34PM   0:00.01 git daemon daemon --reuseaddr --user=git-ro --group=git-ro --base-path=/opt/git/ /opt/git/
root             1475   0.0  0.1  2452612   2612 s000  S+    7:34PM   0:00.01 sudo git daemon --reuseaddr --user=git-ro --group=git-ro --base-path=/opt/git/ /opt/git/

デーモンがまだ 2 つのプロセスで root として実行されているのはなぜですか? それは予想される動作ですか、それともさらに改善する必要がありますか?

編集 3: さらに、lsofポート 9418 でリッスンしているものを実行して確認するgit-roと、同じ pid で保持されている 2 つの行が表示されるのはなぜですか? そんなことがあるものか?git daemonroot として実行されたプロセスはどこに行ったのですか?

$ sudo lsof -i :9418
COMMAND    PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
git-daemo 1477 git-ro    5u  IPv4 0xce9b2f57e8d5af93      0t0  TCP *:git (LISTEN)
git-daemo 1477 git-ro    6u  IPv6 0xce9b2f57e60cacc3      0t0  TCP *:git (LISTEN)
4

1 に答える 1