このセクションの投稿先が正しいかどうかわかりません。そうでない場合は、次の問題をどこに投稿すればよいか教えてください。
私は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 daemon
root として実行されたプロセスはどこに行ったのですか?
$ 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)