昨日Linux MintからUbuntuに乗り換えたのですが、その際にNTFSフォーマットの外付けSSDに必要なデータをコピーし、Ubuntuインストール後それらのファイルをUbuntuにコピーしました。
しかし、ターミナルをいじっているとそれらのNTFSフォーマットのドライブからコピーしてきたファイルだけ表示される色がおかしいことに気づきました。
ちなみに普通のファイルやディレクトリは正常に表示されます。
(※ この記事で、"モード"と言っているものは"アクセス権限"とも呼ばれます。モードがわかりにくかったらアクセス権限と置き換えてお読みください。)
原因
NTFS形式は"読み取り可能"と"実行可能"の区別を持っておらず、Linux上のファイルをNTFSフォーマットのところへと持っていくと自動的にモードがパーティションマウント時のオプションのモードになるようで、そのマウント時のモードがデフォルで777だったと考えられます。それによりモードが777になるせいでこのようになったのだと思います。
実際モードを見てみるとNTFSフォーマットのドライブからコピーしてきたファイルやフォルダはすべて同じモード(777)です。
解決方法
linuxではモードは通常、ディレクトリは755, ファイルは644 に設定されています。
なので、元々あった本来のモードの復活は無理でも、デフォルトのモードにすることでほとんどのディレクトリやファイルは問題ないと思います。
以下のコマンドを叩くことで /path/to/base/dir 以下 の全ディレクトリのモードを755にします。
find /path/to/base/dir -type d -exec chmod 755 {} +
ファイルは644にします。
find /path/to/base/dir -type f -exec chmod 644 {} +
これで以下のように正しくモードが変更されました。
最後に
こんなことになるならLinux MintからUbuntuに以降する作業の前にext4にフォーマットしておくんだった...
マウントオプションで permissions
という値を追加するとNTFSでフォーマットでモードを保持できるようになります。
値を追加したあとは、一度アンマウントしてもう一度マウントするとchmodでの権限の変更と変更後の権限の維持ができるようになっていると思います。
追記 (2019/10/30)
モードも勿論変更しなくてはいけないが, それと同時に所有者とグループを変更しないといけない
chown -R user:group /path/to/base/dir