現象
・npm install パッケージ名コマンドで 「operation not permitted, futime」エラー(パーミッションエラー=権限不足)が出た。
・create-react-app でも同じエラー「operation not permitted」になってcreateできない。
原因切り分け
・他のコマンド(例えばmv)でも権限不足で更新日時のupdateができなかった。
・nodeが原因というよりOSの問題。ファイル作成時に権限が不足しているのが原因のようだ。
試したこと
・chmod -R 777 Linuxユーザ名 フォルダ名
→ 改善せず。フォルダもファイルも所有者がrootのままで Linuxユーザの所有にならない。
解決
・cat /etc/passwd | grep Linuxユーザ名 でユーザID(uid)を確認 → 1000だった
・cat /etc/group | grep Linuxユーザ名 でグループID(gid)を確認 → 1000だった
・sudo vim /etc/fstab して「 uid=1000,gid=1000」を記述して、unmount → mount -a でマウントしなおして解決。
→ 所有者もグループも(rootではなく)Linuxユーザになった。
詳細
Linux(fedora30)に外付けしたHDD(NTFSフォーマット)上に cd して
npm install パッケージ名 コマンドを叩くも
「operation not permitted, futime」エラー(パーミッションエラー=権限不足)。
外付けHDDのマウント状況を見てみる。
$ ll /media/ | grep WD30EZRX
所有者がroot 、グループもroot になってしまっている。これを普段使うユーザー(ここではfedora)に変えてやる必要があるわけだ。
fstab書き換え前
UUID=123456FD7D81E885 /media/WD30EZRX ntfs-3g defaults,nofail,iocharset=utf8,umask=000 0 0
普段ユーザーのuid(ユーザーID)とgid(グループID)を調べる
$ cat /etc/passwd | grep ユーザーID
$ cat /etc/group | grep グループID
uidは1000、gidも1000 と分かった。
バックアップを取ってからfstabを編集する。
$ sudo cp /etc/fstab /etc/fstab_20220130
$ sudo vim /etc/fstab
fstab書き換え後
UUID=123456FD7D81E885 /media/WD30EZRX ntfs-3g defaults,nofail,iocharset=utf8,umask=000,uid=1000,gid=1000 0 0
マウントし直す
$ sudo umount /media/WD30EZRX
$ sudo mount -a /media/WD30EZRX
uidもgidも普段ユーザーfedoraになった。これでpermissionエラーが消える。素晴らしい。めっちゃ苦労した。