2011-10-07 9 views
1

すべての開発者は、sshを使用してステージングサーバーにログインできます。sudoersを使って別のユーザーとして水銀コマンドを実行する方法

ステージングサーバーでhgコマンドを実行すると、更新された/新しいファイルの所有者になります。これらのファイルはユーザー/グループwww-dataが所有する必要があります。

あなたがあれば、我々は、(我々はHGに離れてSVNから移動している)、この設定はSVNのために正常に動作だけでなく、サーバー上でSVNを持って見ることができるように私はこの

Cmnd_Alias WWW_DATA_CMDS = /usr/bin/svn, /usr/bin/hg 

%developers ALL=(www-data) NOPASSWD: WWW_DATA_CMDS 

へのsudoersファイルを編集してみました私たちはSVNコマンドを実行してwww-dataとしてファイルを作成します

Mercurialで同じように動作させるにはどうすればよいですか?

答えて

2

最初に理解してくださいここには魔法はありません Mercurialは、常に実行するユーザーとして、ストーリーの終わりにファイルを作成します。それは他の何かをしようとしません(そして許可を持っていません)。

つまり、sudoを介してのみhgを実行し、既存のファイルのアクセス権が正しいとすれば、ここで必要なものが実行されます。

しかし、これは、ユーザーがsudoなしでhgを実行し、適切な権限を持っていれば、混乱を招くことを意味します。 Mercurialは、Unixのパーミッション・モデルで許可されていることを実行できるようにするためのコンテンツです。

これに対処する3つの方法があります。人々は一貫し

  • 適切つのアカウントにすべてのユーザーをファンネルのmercurial-サーバーのようなラッパーを使用sudoを使用するまで定規で

    • 平手打ちナックルは、グループ、umask、所有権、アクセス許可を設定することで、物事を実際に共有できるようになります。

    この最後の動作は次のとおりです。

    • 皆のumaskがセットされていることを確認し
    • 二グループプロジェクト-FOOに、すべてのユーザXが一致するデフォルト・グループXを(ほとんどの近代的なシステムでは、すでにこれを行う)
    • 全員(とwwwdata)を追加していることを確認してくださいグループは、グループプロジェクトのfoo(chgrpコマンド-Rプロジェクト-fooのfooの/)
    • にするために、プロジェクト内のすべてのファイルは、すべてのファイルがでリード/ライトを作る(umaskを007ではなく、077)
    • セットリード/ライトをマスクしないようにログインそのグループ(chmod -R g + rw foo /)
    • すべてのディレクトリをトラバース可能にし、setgid(find foo/-type d | xargs chmod g + sx)

    これにより、ユーザーがプロジェクトにファイルを作成するたびに、グループ内の他のすべてのユーザーに対して読み取り/書き込みが行われます。

  • +0

    私はmercurial-serverを試してみるつもりです。それがうまくいかない場合は、ポイント3で提案した許可設定を行います。 – evilsee

    関連する問題