環境
OS:Windows 10
PC: HP HP Spectre x360
WSL(Windows Subsystem for Linux), Ubuntu
エディター: VScode
発生した問題
Windows上でUbuntuを用いてweb開発を行っています
その時に発生した問題についてなのですが,要約すると
「htmlファイルをエディタで編集すると,勝手にパーミッションが変更されてしまう(権限なし)」
です.
そのため,ファイルを編集後「npm run dev」すると以下のようにパーミッションが拒否されていしまいます.
そのため,いちいち,そのファイルをchmod 644 [ファイル名]する必要があります.
またdistフォルダを削除すると上手く実行することができます.
この解決方法が検討がつかず困っているのですが,どうすれば解決できるでしょうか?
質問に対する回答
エディタはlinux側からではなくwindows側から起動させて,ファイルを開き編集しています.
編集したファイルはfooter.vueです
パーミッションは画像のようになります.
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
2
ベストアンサー
WSL上のファイルやディレクトリをWindows(つまりWindows上のアプリ)から直接操作することはサポートされていません。Windows上のエディタを使用したい場合は、Windows上の通常の領域でファイルの作成や編集を行い、"/mnt/c"経由でアクセスしてください。
WSL File System Support – Windows Subsystem for Linux
なぜ、そうなるのかは、上のブログに書いています。適当にななめ読みしただけですが、ざっくりに解説します。
VolFsはWindowsから触るべからず。
まず、WindowsとLinuxではファイルシステムの考え方が全く異なります。Cygwinなどは無理矢理Windows上でLinuxっぽく動作させていましたが、かなり制限がある方法でした。WSLの目的は、通常のLinuxをWindows上で動かすことですので、無理矢理解釈する程度ではうまくいきません。そこで、WSL側でシステムコールをするときに使われるVFSに対して、通常のLinuxファイルシステムを提供するVolFsを用意しました(他に、DrvFs(後述)やTmpFs、ProcFs等があるようです)。
VolFsは通常のLinux用ファイルシステム、いってみればext4やBtrfsで見られるようなファイルシステムを提供します。これらはNTFSにはない機能、モード(NTFSのACLと異なる形式)、inode、所有グループ、POSXIなシンボリックリンク、POSIXな名前付きパイプ、":"や"?"等が含まれるファイル名、大文字小文字の完全な区別等々が含まれます。こうすることで、通常のLinuxと同じように処理をすることができます。
といっても、VolFs用にディスクのパーティションを区切ってフォーマットするとか、仮想ディスクのような物を用意するとかはしませんでした。そのようにした場合、容量が固定化されたり、無駄な空き領域が出来たり、二段階アクセスにより遅くなったりと問題が出るからです。そこで、VolFsはNTFS上にある領域をそのままバックエンドとして使うことにしました。ファイルデータ自体はそのまま置くことができますし、使えない文字はエスケープして別名にするなどで対応します。そして、モードや所有グループなどはNTFSの拡張ファイル属性(EA、Extended file attribute, xattr)に書き込むようにしたのです。
通常のファイルのように置くようにしたため、Windows上からも通常のファイルとして扱えるように見えるかも知れません。しかし、(特殊なファイル操作をしない限り)これらの拡張ファイル属性は見えませんし、編集もしません。そのため、Windows上からファイルを操作すると、モードなどの情報が書かれた拡張ファイル属性の情報が吹き飛び、Linuxからはモードなどが不明なファイルとなってしまうと言うことです。
このように、VolFsはNTFSをバックエンドとして使っているだけであり、ファイルとして見えるからと言って、操作しても良いというわけではありません。
Windowsとのやり取りはDrvFsを使え!
これではあまりにも不便と言うことで、MicrosoftはDrvFsという別のファイルシステムを用意しました。これは、通常のNTFS領域、つまりはCドライブをマウントするという物です。こちらは拡張ファイル属性を使わず、NTFSのACLからモード等を決定づけてるという手段をとっています(Windows 10 1803以降、参考: Chmod/Chown WSL Improvements – Windows Command Line Tools For Developers)。
言ってしまえば、CygwinやMSYSなどが取っていた方法に近いです。所有者やモードなどの情報はPOSIXに準拠する動作ではありません。他にもLinuxファイルシステムとしては色々と制限があるのですが、データのやり取りをするという点では、十分とも言えます。この領域のファイルはLinuxとWindowsのどちらからアクセスして変更等を行っても、その動作がサポートされています。
投稿2018/05/19 01:32
編集2018/05/26 03:37総合スコア21707
1
https://int128.hatenablog.com/entry/2018/03/26/235159
http://www.mattgreer.org/articles/wsl-chicken-and-egg-problem/
VSCodeをlinux側って実行していますか?
それとも、windows 側で実行していますか?
また変更されたファイルの実行権限はどうなっていますか?
ls -lの出力があると幸いです。
投稿2018/05/17 22:35
総合スコア8558
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
0
格納されているフォルダのパーミッションを777にしてみる。
投稿2018/05/18 11:47
総合スコア86794
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
【Laradock】workspaceとプロジェクトの`python3 --version`が違う
回答2
クリップ0
更新
2022/11/06
意見交換
受付中
HDD、何故遅いものと速いものがあるのか、そして仮想メモリ、増設すべきかしないか?
回答4
クリップ0
更新
2023/05/24
Q&A
解決済
Python 配列の要素番号順に辞書を並び替えたい
回答2
クリップ0
更新
2023/05/29
Q&A
解決済
spring bootで新規登録機能を作成したい。
回答1
クリップ0
更新
2023/06/02
Q&A
受付中
二値化した白黒画像の色を変換したい
回答2
クリップ0
更新
2023/06/06
Q&A
解決済
Uriの中身(存在)チェックのやり方について
回答2
クリップ0
更新
2023/05/26
Q&A
解決済
VBAでウェブサイトのテーブルの1要素をクリックする方法をご教示ください。
回答1
クリップ0
更新
2023/06/06
Q&A
解決済
.Net Frameworkでの開発について
回答1
クリップ1
更新
2023/06/02
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2018/05/26 03:35