メインコンテンツへスキップ

Linux環境で外付けHDD, SSD上でchmod +xしてもbashスクリプト等を実行した際に'Permission Denied'と権限エラーになる場合の対処法

··729 文字·2 分·
Linux fstab HDD SSD
著者
Admin
目次

動機&対処前の状況
#

外付けSSDを購入して容量増設した際、chown& chmodで適切に所有権と権限を設定(ls -lrxが付いているのを確認)したがbash script等を実行しようとすると’Permission Denied’となってしまっていた。

原因
#

あくまで今回のケースの場合です。 まずls -lで適切な権限が付いていることを確認してください。

fstab(sudo mountとかを実行した際に読まれる設定ファイル)内で権限エラーがでるssdの設定を見ると

cat /etc/fstab

/dev/nvme1n1p1      /media/ssd2      ext4          user,auto,rw        0 2 

となっていた。

これの何がまずいかと言うと、userを指定するとユーザーが自由にマウントできるようになるがnoexecが自動的にセットされてしまうのでexecを明示的に与える必要があった。

以下、情報ソース。

man fstab | grep user

       user
           allow a user to mount

man mount | grep user

       user
           Allow an ordinary user to mount the filesystem. The name of the mounting user is written to the mtab file (or to the private
           libmount file in /run/mount on systems without a regular mtab) so that this same user can unmount the filesystem again. This option
           implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line user,exec,dev,suid).

対処法
#

sudo blkidで該当のUUIDかマウントポイント(/dev/xxx)をコピーしてsudo umount の後に貼り付けて実行してアンマウントする。

target is busyと出たらどこかでファイル等を開いていたりするので閉じて再実行。
umountからでなくても環境によってはファイラ、ディスクツール等からアンマウントできたりする。

アンマウントできたら/etc/fstab を編集する。

自分の場合は

/dev/nvme1n1p1      /media/ssd2      ext4          user,exec,auto,rw        0 2 

execを明示的につけてuserで非明示的にセットされたnoexecを上書きしておいた。

編集内容をcat /etc/fstabで確認したら再度マウント(sudo mount or 環境のGUIから)して無事に問題解決した。

以上。

Related

ブログの更新頻度を落とすことにした
··168 文字·1 分
ブログ運用 日記 学習
駄菓子を久しぶりに購入した
··1909 文字·4 分
食品レビュー 日記 駄菓子屋
衝動的な寄り道。
[黒蝶] One Night Heaven ~赤と黒の人々に捧ぐオマージュ~
··439 文字·1 分
VisualNovel エロゲ One Night Heaven One Night Heaven ~赤と黒の人々に捧ぐオマージュ~ 旧作品 電波ゲー 黒蝶(Dotman)