JUNのブログ

JUNのブログ

活動記録や技術メモ

Ubuntu NTFS形式のドライブからコピーしてきたファイルのターミナル上での表示を直す

昨日Linux MintからUbuntuに乗り換えたのですが、その際にNTFSフォーマットの外付けSSDに必要なデータをコピーし、Ubuntuインストール後それらのファイルをUbuntuにコピーしました。

しかし、ターミナルをいじっているとそれらのNTFSフォーマットのドライブからコピーしてきたファイルだけ表示される色がおかしいことに気づきました。

f:id:JUN_NETWORKS:20190701030048p:plain

ちなみに普通のファイルやディレクトリは正常に表示されます。

f:id:JUN_NETWORKS:20190701025629p:plain

(※ この記事で、"モード"と言っているものは"アクセス権限"とも呼ばれます。モードがわかりにくかったらアクセス権限と置き換えてお読みください。)

原因

NTFS形式は"読み取り可能"と"実行可能"の区別を持っておらず、Linux上のファイルをNTFSフォーマットのところへと持っていくと自動的にモードがパーティションマウント時のオプションのモードになるようで、そのマウント時のモードがデフォルで777だったと考えられます。それによりモードが777になるせいでこのようになったのだと思います。

実際モードを見てみるとNTFSフォーマットのドライブからコピーしてきたファイルやフォルダはすべて同じモード(777)です。

f:id:JUN_NETWORKS:20190701031053p:plain

解決方法

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 {} +

superuser.com

これで以下のように正しくモードが変更されました。

f:id:JUN_NETWORKS:20190701033629p:plain

最後に

こんなことになるならLinux MintからUbuntuに以降する作業の前にext4にフォーマットしておくんだった...

マウントオプションで permissions という値を追加するとNTFSでフォーマットでモードを保持できるようになります。

f:id:JUN_NETWORKS:20190701042617p:plain

値を追加したあとは、一度アンマウントしてもう一度マウントするとchmodでの権限の変更と変更後の権限の維持ができるようになっていると思います。

追記 (2019/10/30)

モードも勿論変更しなくてはいけないが, それと同時に所有者とグループを変更しないといけない

chown -R user:group /path/to/base/dir

superuser.com