web-dev-qa-db-ja.com

Samba、Apache、SVN。権限を正しく取得する

私は2台のマシンを使用しています。

  1. Windowsクライアント(開発マシン)
  2. Linux Webサーバー(Ubuntu)

Linuxサーバーに、Apache、Samba、SVNをインストールしました。

WindowsからWebファイルにアクセスできるように、htdocs /ディレクトリにマップするSamba共有を作成しました。

以下は私のワークフローを示しています。

  1. Linuxサーバーのコマンドラインから、リモートサーバーからローカルLinuxサーバーのhtdocsディレクトリにWebプロジェクトの作業コピーをチェックアウトします。
  2. Windowsマシンでは、(sambaを使用して)これらのファイルにアクセスし、エディターで編集して、Webブラウザーでテストします。
  3. Linuxマシンに戻り、作業をリモートサーバーにチェックインします。

私が抱えている問題は、現在、Sambaを介してWindowsボックス上のファイルを編集できるようにするには、ファイルの所有者をnobody(Apacheユーザー)に変更し、SHARE権限を使用するようにSamba共有を設定する必要があることです。

SVNを使用してコミットや更新などを行おうとすると、Linuxユーザーが「誰も」ではなく、そうするための権限がないため、できません。そのため、rootになってSVN [コマンド]を実行し、すべてのファイルを「nobody」に戻して、Windowsで編集できないようにする必要があります。

私ができるようにしたいのは、ローカルのLinuxユーザーがWebファイルを所有することです。これにより、SVNコマンドが機能し、Windows(samba経由)でもこの同じユーザーを使用できるようになります。

これを機能させるにはどうすればよいですか?WindowsユーザーとLinuxユーザーを一致させる方法はありますか?

5
Camsoft

ファイルとディレクトリをグループが所有するようにします。グループは Apacheは として実行されます。ディレクトリを作成します [〜#〜] sgid [〜#〜]

chgrp -R group1 /path/to/htdocs
find  /path/to/htdocs -type d -exec chmod 2775 {} \;

このグループをSAMBA共有の下で指定します。これは、force group=group1で実行できます。

このグループのメンバーを使用して、SAMBAに対して認証するユーザーを作成します。このユーザーは、SAMBAの共有内のvalid usersおよびwrite list内で指定してください。これにより、SVNにコミットすることもできます。

また、smb.conf内でcreate mask=0664directory mask=2775を指定します。これにより、作成時に適切なアクセス許可が設定されます。ファイルがApacheと同じユーザーによって所有されている場合は、両方の設定で最後のビットを0に設定できます。

すべてが一貫して適用される場合、機能に悪影響を与えることなく、必要なすべてのアクションを実行できるはずです。

4
Warner

ワーナー、この答えは私にとって命の恩人でした。私が知らなかったことを追加する1つのことは、誰かがコマンドラインからSVN更新を実行したいかどうかを考慮する必要があるということでした。 http://svnbook.red-bean.com/en/1.1/ch06s05.html を参照してください。これについて説明しています。

0
user51893