「デュアルブート」の版間の差分

Notion-MW
Notion-MW
 
(同じ利用者による、間の2版が非表示)
79行目: 79行目:


Windowsに挙動を近づけるための他のオプションとしては<strong>inherit</strong>というのもあり、これは新規作成時に上位フォルダの権限を継承するものである。しかし、これは<u>所有者を継承するオプションではない</u>(そして、所有者が違えばまともに継承もされない)。
Windowsに挙動を近づけるための他のオプションとしては<strong>inherit</strong>というのもあり、これは新規作成時に上位フォルダの権限を継承するものである。しかし、これは<u>所有者を継承するオプションではない</u>(そして、所有者が違えばまともに継承もされない)。
* [https://github.com/tuxera/ntfs-3g/issues/90 https&#58;//github.com/tuxera/ntfs&#45;3g/issues/90] では、UserMappingがなくても所有者が継承されるようになるパッチが示されているが、これを使うとpermissionsは動かなくなる(chmodなどが使えない)。自力で変えようとしてみたが、うまくいかなかった。


以上のことから、Windowsの一般ユーザーフォルダの内容などをLinuxから良い感じに(Windows側の権限設定を汚染せずに)使えるようにするには、明示的なUserMappingが事実上必須であることがわかる。
以上のことから、Windowsの一般ユーザーフォルダの内容などをLinuxから良い感じに(Windows側の権限設定を汚染せずに)使えるようにするには、明示的なUserMappingが事実上必須であることがわかる。
84行目: 86行目:
一方で、Administrator所有・全ユーザー閲覧可能(あるいは不可能)、といった、Windows側の全ての一般ユーザーに対して共通のアクセス権を適用する設定であれば、UserMappingを使用しなくても簡単に設定が可能である。個人用PCかつ、画像・動画などのメディアファイルやLinuxでしか使用しない大きめのソフトウェアを入れておく用途であれば、こちらで問題ないだろう。
一方で、Administrator所有・全ユーザー閲覧可能(あるいは不可能)、といった、Windows側の全ての一般ユーザーに対して共通のアクセス権を適用する設定であれば、UserMappingを使用しなくても簡単に設定が可能である。個人用PCかつ、画像・動画などのメディアファイルやLinuxでしか使用しない大きめのソフトウェアを入れておく用途であれば、こちらで問題ないだろう。


Linux側で別ユーザーの所有に見せたい場合は、上記のS&#45;1&#45;5&#45;21&#45;3141592653&#45;589793238&#45;462643383&#45;10000のようなSIDが見えてしまう状態でもよければ(かつ、権限設定にも問題がなければ)それでもいいし、下記のbindfsと併用する方法もある。いずれにしても、Linux側で全員が読み取り・書き込み・実行が可能なファイルは、Linux側での親フォルダの権限によらず、Windows側では(パスさえわかれば)対応する権限でアクセスができてしまうということに注意が必要である。
Linux側で別ユーザーの所有に見せたい場合は、上記のS&#45;1&#45;5&#45;21&#45;3141592653&#45;589793238&#45;462643383&#45;10000のようなSIDが見えてしまう状態でもよければ(かつ、権限設定にも問題がなければ)それでもいいし、下記のbindfsと併用する方法もある。いずれにしても、Linux側で全員が読み取り・書き込み・実行が可能なファイルは、Linux側での親フォルダの権限によらず、Windows側では(パスさえわかれば)対応する権限でアクセスができてしまうということに注意が必要である。一応、パス名をランダムなものにするという対策は考えられそうではある。


また、Windowsではファイルの新規作成時には必ず実行権限が付加されるので、Linux側でそれを見た場合も実行可能になる(実行権限を外すと.exeなどが実行できなくなる)。従って、GitのレポジトリのフォルダをWindows/Linux間で共用するようなことをすると、Windows側では実行権限無しで(これがデフォルトであるため)コミットされたファイルがLinux側では実行権限有りに見えるため差分が出てしまうといったことが発生する。これはUserMappingでも解決はできないので、Gitリポジトリのあるフォルダを共用するのは不可能である。
また、Windowsではファイルの新規作成時には必ず実行権限が付加されるので、Linux側でそれを見た場合も実行可能になる(実行権限を外すと.exeなどが実行できなくなる)。従って、GitのレポジトリのフォルダをWindows/Linux間で共用するようなことをすると、Windows側では実行権限無しで(これがデフォルトであるため)コミットされたファイルがLinux側では実行権限有りに見えるため差分が出てしまうといったことが発生する。これはUserMappingでも解決はできないので、Gitリポジトリのあるフォルダを共用するのは不可能である。


結局、後述のbindfsと組み合わせると、以下のようにするのが良さそう。
<ul>
<li><p>大元のntfsパーティションは、permissionsでマウント。UserMappingを使ってもよい。</p></li>
<li><p>Linux側でパーミッションを変更できる必要がなく、Windows側と共用したいものについては、bindfsで再マウントし、create&#45;with&#45;perms&#61;a+rwxによってWindows側でアクセスに制約が出ないようにする。</p>
<ul>
<li><p>より完全なオプションとしては、以下のような感じ?</p>
<syntaxhighlight lang="javascript">map=root/myname:@root/@myname,perms=a+rwx,create-with-perms=a+rwx,chown-ignore,chgrp-ignore,chmod-ignore</syntaxhighlight></li></ul>
</li>
<li><p>Gitのようにパーミッションを変更できる必要があるものは、改めてこれも別のbindfsとして再マウントする。この場合、Windows側からはアクセスの問題が生じる可能性があるので、とりあえず内容だけ確認したいときに見られればいいという状況で使うのがいいだろう。</p></li>
<li><p>あるいはbindfsを1つにまとめてcreate&#45;with&#45;perms&#61;+rw(xは指定しない)にするのもいけるかもしれないが、本当にうまくいくかどうか…</p></li>
<li><p>設定例</p></li></ul>
<syntaxhighlight lang="javascript">UUID=109B0ED0109B0ED0 /media/localdisk ntfs-3g permissions,nofail 0 0
UUID=040CAEB80CAEA460 /media/cdrive ntfs-3g permissions,nofail,remove_hiberfile 0  0
/media/localdisk /home/useruser/.mnt/localdisk2 fuse.bindfs nofail,map=root/useruser:@root/@useruser,create-with-perms=g-w 0 0
/media/localdisk /home/useruser/.mnt/localdisk fuse.bindfs nofail,map=root/useruser:@root/@useruser,perms=a+rwx,create-with-perms=a+rwx,chown-ignore,chgrp-ignore,chmod-ignore 0 0
/media/cdrive /home/useruser/.mnt/cdrive2 fuse.bindfs nofail,map=root/useruser:@root/@useruser,create-with-perms=g-w 0 0
/media/cdrive /home/useruser/.mnt/cdrive fuse.bindfs nofail,map=root/useruser:@root/@useruser,perms=a+rwx,create-with-perms=a+rwx,chown-ignore,chgrp-ignore,chmod-ignore 0 0</syntaxhighlight>
==== bindfs ====
==== bindfs ====


119行目: 140行目:


従って、ランチャーのフォルダと.minecraft内の両方にmediaというフォルダを作って中にwinという名前でC&#58;\へのジャンクション置くとうまくいく。
従って、ランチャーのフォルダと.minecraft内の両方にmediaというフォルダを作って中にwinという名前でC&#58;\へのジャンクション置くとうまくいく。
ちゃんと設定されていれば、実体フォルダは必ずしもRoaming以下の階層になければならないわけではない。


.minecraftの中にはゲームディレクトリ専用のフォルダを作り、その中にmain, snapshotなど用途に応じたフォルダを作っておくとよい
.minecraftの中にはゲームディレクトリ専用のフォルダを作り、その中にmain, snapshotなど用途に応じたフォルダを作っておくとよい