【VScode】なぜか自動保存できねえ時の解決法
設定でAfterdelayなどにしてファイルの自動保存機能をつけているVScodeで開発しているときに、
以下のようなエラーが出て、自動が保存ができないような事態の解決法を紹介します
[アクセス権限が不十分です。[Sudo 権限で再試行]を選択してスーパーユーザーとして再試行してください。]
と出ております。
つまり、現在、Sudoユーザーとして、ファイルにアクセスできていない状態なので、
・スーパーユーザーにモードを変える
・ファイル、あるいはフォルダのアクセス権限(パーミッション)を変更する
方法があります。
今回は後者の手段を用いて、このエラーを解決します。
sudo chmod -R 777 ファイルのディレクトリ位置(Ex. /Users/kazuhitoNakayama/Desktop/index.html.erb)
この一行で、全てのユーザーに対してのファイルの実行権限を与えられるので、
上記エラーが解決されます。
解説
chmodとは
👉ファイルやディレクトリのアクセス権限を変更する際に使うコマンドです
(UNIX系のOSで使用できます。Ex.Macなど)
使い方は、chmod [オプション] [与える権限] [対象のファイル、ディレクトリのディレクトリ位置]
オプションは私は普段 「-R」を使ってますが、他にもたくさんあるので
「chmod オプション」とかでお調べください!
777とは
👉先ほどchmod [オプション] [与える権限] [対象のファイル、ディレクトリのディレクトリ位置]
とお伝えしました。
ここでの[与える権限]について説明すると、アクセス権の記法には2種類あり、
・アルファベット
・数字
があります。
アルファベットでの記法
あるフォルダの中に入って「ls -l」をすることで、各ファイルの権限を参照できるので、みてみると、
アルファベットの羅列が見えます。
$ ls -l
drwxr-xr-x 2 user_name group 68 8 30 15:53 css
-rw-r--r-- 1 user_name group 0 8 30 15:53 index.html
それぞれの文字は
r:(read)読み込み権限
w:(write)書き込み権限
x:(execute)実行権限
こんな風に対応しております。
例えば上の、drwxr-xr-xをいかに読むかというと
d/rwx/r-x/r-x
↑こんな風に区切られます。
また、それぞれの区切りの中で、
ディレクトリなのかファイルなのか/所有者に対する権限/グループに対する権限/その他の者に対する権限/
という風に区切られており、それぞれの対象に対して、権限をr・w・xで与えます。
(1文字目に関してはdならば当該ファイルはディレクトリとわかります。-ならばファイルです。)
よって、
d/rwx/r-x/r-xは
ーディレクトリであり
ー自分に対して、読み込み、書き込み、実行の全ての権限が与えられており、
ーグループに対して、読み込み、実行権限が与えられており、
ーその他の者に対して、読み込み、実行権限が与えられています。
数字の記法
シンプルで、上記、r・w・xがそれぞれ数字に変わるだけですね!
r(読み込み権限):4
w(書き込み権限):2
x(実行権限):1
そして今回は3つの数字で権限対象、与える権限を表現します
例えば、731
1つ目の数字:所有者
2つ目の数字:グループ
3つ目の数字:その他の者
という風になっているので、
731は、
所有者は、7=4+2+1なので読み込み、書き込み、実行権限が与えられ、
グループは、3=2+1なので書き込み、実行権限が与えられ、
その他の者は、1なので実行権限が与えられます。
総括
冒頭の振り返りで行くと
sudo chmod -R 777 ファイルのディレクトリ位置(Ex. /Users/kazuhitoNakayama/Desktop/index.html.erb)
これによりindex.html.erbのファイルのパーミッションを、誰でも実行できるようにしたので、自分がファイルを変更してもパーミッションで怒られることがなくなったのです!
パーミッションは自分的に忘れやすい!
必覚!