0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu再起動後SSDがアンマウントされ、PythonファイルがPermissionErrorで実行できなくなった人へ

Last updated at Posted at 2024-12-18

Ubuntu再起動後SSDがアンマウントされ、Pythonファイルが上手くいかなくなった人へ


問題の状態

発生したエラー

Ubuntuを再起動後、外付けSSDをマウントしたものの、PythonスクリプトがPermissionErrorで動かなくなりました。

PermissionError: [Errno 13] Permission denied

状況

  • OS: Ubuntu
  • 環境: スマホからVPN経由でSSH操作中、RebootかけたらSSDがアンマウントされていたので、単純にmountコマンドでマウントし、このSSD内のPythonファイルを実行したところ、このPythonファイルは読み込み、書き込みプログラムを組み込んでいたことから、「書き込み出来ないよっ」というpythonからのパーミッションエラーが発生した。
  • SSDの状態: NTFS または ExFATファイルシステム
  • 症状:
    • SSDに書き込もうとするとPermission deniedが出る
    • ディレクトリの所有者がrootになっていて、私のユーザー(masarina)では書き込めない

再起動する前は普通に動いていたのに…!なぜ…。


解決までの道のり

  1. マウント状態を確認
    マウントポイントの状態がどうなっているのかをチェック。

    mount | grep /media/masarina/AItoKB_mac放
    

    出力例:

    /dev/sdc1 on /media/masarina/AItoKB_mac放 type exfat (rw,relatime,...)
    
  2. 掴んでいるプロセスを特定
    誰かがこのSSDを掴んでいるのか確認します。

    sudo fuser -m /media/masarina/AItoKB_mac放
    

    → 出力例:

    /media/masarina/AItoKB_mac放: 2280c 3370c
    
  3. 掴んでいるプロセスを強制終了
    もう遠慮なく終了させる。

    sudo fuser -km /media/masarina/AItoKB_mac放
    
  4. 強制アンマウント
    ちゃんとアンマウントできるか試します。

    sudo umount -f /media/masarina/AItoKB_mac放
    
  5. 正しい権限で再マウント
    ExFAT用のマウントコマンドを使います(NTFSの場合も対応可能)。

    sudo mount -t exfat -o rw,uid=masarina,gid=masarina /dev/sdc1 /media/masarina/AItoKB_mac放
    
  6. 所有者と権限を設定
    自分のユーザーで書き込めるように設定。

    sudo chown -R masarina:masarina /media/masarina/AItoKB_mac放
    sudo chmod -R 755 /media/masarina/AItoKB_mac放
    

最終的な解決策(Bashスクリプト)

同じ手順を毎回やるのは面倒すぎるので、シェルスクリプトにまとめました!
これを使えば一発で解決できます。

ファイル名: fix_mount.sh

#!/bin/bash

# マウントポイントとデバイス
MOUNT_POINT="/media/masarina/AItoKB_mac放"
DEVICE="/dev/sdc1"

# 1. 掴んでいるプロセスを確認して終了
echo ">>> 確認中: マウントポイントを掴んでいるプロセス..."
sudo fuser -m $MOUNT_POINT
if [ $? -eq 0 ]; then
    echo ">>> プロセスを強制終了します..."
    sudo fuser -km $MOUNT_POINT
else
    echo ">>> プロセスはありません。"
fi

# 2. 強制アンマウント
echo ">>> 強制的にアンマウントします..."
sudo umount -f $MOUNT_POINT

# 3. 再マウント(ExFATボリューム用)
echo ">>> 再マウントします..."
sudo mount -t exfat -o rw,uid=masarina,gid=masarina $DEVICE $MOUNT_POINT

# 4. 所有者と権限の設定
echo ">>> 権限と所有者を修正します..."
sudo chown -R masarina:masarina $MOUNT_POINT
sudo chmod -R 755 $MOUNT_POINT

# 5. 状態確認
echo ">>> 最終確認: マウント状態"
mount | grep $MOUNT_POINT
echo ">>> 完了しました!"

実行手順

  1. スクリプトを保存します。

    nano fix_mount.sh
    

    内容を貼り付けて保存(Ctrl + OEnterCtrl + X)。

  2. 実行権限を与えます。

    chmod +x fix_mount.sh
    
  3. スクリプトを実行!

    sudo ./fix_mount.sh
    

がんばった分、ちゃんとゆっくり休んでねっ!
おしまいっ♡

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?