開発環境を希望どおりにセットアップするのに近づいていると思いますが、最後の問題が1つ残っています。私はWindows7 x64ホストでVirtualBoxを実行しており、開発環境はUbuntu12.04ゲスト内にあります。プロジェクトのファイルをホストファイルシステムに保持したい-Ubuntuゲストが実行されていないときにアクセスできるようにするだけでなく、Tortoiseやその他のWindowsベースのツールを使用できるようにする(cough Photoshop )、そしてそれはまた私のバックアップスキームをいくらか楽にします。
そのため、NTFSドライブに「Rails」フォルダーがあります。これは、Ubuntuゲスト用に特別に作成されたユーザーとホストから共有しています。マウントポイントが設定され、資格情報ファイルとオプションを使用してfstab(cifs)にエントリが追加されましたiocharset=utf8,file_mode=0777,dir_mode=0777
これは正常にマウントされ、Ubuntuユーザーはコンテンツに対する読み取りと書き込みの両方のアクセス許可を持っていますが、試してみるとRailsアプリを起動するには、アプリに書き込む必要のあるファイル(ログファイルなど)でアクセス許可エラーが発生します。何が表示されますか?
単に間違った場所を探していたことがわかりました。Windowsホストのアカウントで共有フォルダーに正しいアクセス許可を設定する必要があることを忘れていました。 Read & execute
、Write
、およびList folder contents
のみが含まれていました。ドー! Modify
を追加すると、問題が修正されました。つまり、ばかげた間違いに過ぎませんが、 cifs構文 とfstab
についてもう少し学び、謙虚なユーザーとしてマウントする方法を理解し、マウントポイントを/home/user
フォルダーに配置できるようにしました。 fstabの最終的なマウント文字列は次のようになります(私の値は[トークン]に置き換えられます):
//[server]/[share] /home/[user]/[folder] cifs credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0
したがって、マウント後に共有上のファイルを所有するユーザーとグループにuid
とgid
を設定するだけでよく、他に何もする必要はありません。また、必要なWindowsユーザー資格情報を.configディレクトリの下の別のファイルに配置し、他のユーザーが読み取らないようにchmod 400
を実行しました。
Cifで使用する引数は数百万あり、多くの人がそれらを誤解しているように見えるため、これをすべて理解するのに驚くほど長い時間がかかりました-多くの人がfile_mode
/dir_mode
777の使用を推奨しています(これは私には本当に悪い考えのように聞こえます) 、およびnounix
、noperm
、rw
、iocharset
、noacl
などの不要な引数を使用したコショウ-これを機能させるために必要なものはありません。したがって、私の問題は単純な間違いが原因でしたが、質問(およびこの回答)はここに残しておきます。うまくいけば、誰かがそれが役立つと思うでしょう!
編集:Sambaのcifs実装のバグ 実行する場合は、nobrl
オプションも追加する必要があります共有上のSQLiteデータベース。基本的に、現在のSamba cifs Linuxクライアントは、SQLiteがデータベースファイルをロックする方法を処理できません。優れたソリューションではなく、マルチユーザー環境ではほぼ間違いなく悪い考えですが、私の場合はシングルユーザー共有であり、クライアントと同じマシンでホストされているため(ネットワークの待ち時間はほとんどなくなるはずです)、それと一緒に転がします。
nobrl
バイト範囲ロック要求をサーバーに送信しないでください。これは、cifsスタイルの必須バイト範囲ロックで機能しない特定のアプリケーションに必要です(ほとんどのcifsサーバーは、アドバイザリバイト範囲ロックの要求をまだサポートしていません)。
Fstabエントリは次のようになります。
//[server]/[share] /home/[user]/[folder] cifs nobrl,credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0