質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Linux

    3656questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Ubuntu

    1331questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • Windows Subsystem for Linux

    4questions

WSL(Windows Subsystem for Linux)におけるパーミッションの問題

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 646

minwinmin

score 4

 環境

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です
パーミッションは画像のようになります.
permission

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+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/26 12:35

    raccyさん,非常に丁寧な説明ありがとうございます!
    やっと理解することができ,問題が解決しました!
    本当にありがとうございます!

    キャンセル

+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/18 20:24

    質問を更新しました.

    キャンセル

  • 2018/05/18 21:09

    https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

    今でも同じかは不明ですが、シェアフォルダを作成して、linux側でシンボリックリンクをはる運用はいかがでしょう?

    windowsとlinuxのファイルシステムが大きく異なることが問題だと思います。

    linux側でvscodeを入れられる可能性もありますが。

    キャンセル

0

格納されているフォルダのパーミッションを777にしてみる。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3656questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Ubuntu

    1331questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • Windows Subsystem for Linux

    4questions