exFATなデバイスをファイルシステムにmountするにはroot権限が必要. その前にデバイス自体にアクセスするためにパッケージが必要な場合ありusb

[saber@rockylinux9 ~]$ mkdir usb
[saber@rockylinux9 ~]$ mount /dev/sdb1 ./usb/
mount: /home/saber/usb: must be superuser to use mount.
[saber@rockylinux9 ~]$

sudoとかでroot権限を拝借できれば便利ですが、操作を間違えるとやばい. なのでmount/umountのコマンドだけ拝借させるとかにする.
設定はrootでvisudoコマンドで行います

[root@rockylinux9 ~]# visudo
 :
root    ALL=(ALL)       ALL
saber ALL=(root) NOPASSWD:/usr/bin/mount,/usr/bin/umount
 :
[root@rockylinux9 ~]#

としたうえで

[saber@rockylinux9 ~]$ sudo mount -o uid=$(id -u),gid=$(id -g) /dev/sdb1 /home/saber/usb            <--- /dev/sdb1がexFATの場合
[saber@rockylinux9 ~]$ ls -l usb/
total 13600768
drwxr-xr-x. 2 saber saber    2097152 Mar 31 21:15 '$RECYCLE.BIN'
-rwxr-xr-x. 1 saber saber  709885952 Jul  4  2021  AlmaLinux-8.4-x86_64-boot.iso
-rwxr-xr-x. 1 saber saber 1981808640 Jun  9  2021  AlmaLinux-8.4-x86_64-minimal.iso
-rwxr-xr-x. 1 saber saber 4674615296 Nov 21 00:22  CentOS-5.11-x86_64-bin-DVD-1of2.iso
-rwxr-xr-x. 1 saber saber 4238800896 Nov 21 08:31  CentOS-6.0-x86_64-bin-DVD1.iso
-rwxr-xr-x. 1 saber saber 3991928832 Feb 12  2021  CentOS-6.10-x86_64-bin-DVD1.iso
-rwxr-xr-x. 1 saber saber 2187548672 Feb 12  2021  CentOS-6.10-x86_64-bin-DVD2.iso
-rwxr-xr-x. 1 saber saber  425721856 Feb 12  2021  CentOS-6.10-x86_64-minimal.iso
drwxr-xr-x. 2 saber saber    2097152 Mar 31 20:59 'System Volume Information'
[saber@rockylinux9 ~]$
 
[saber@rockylinux9 ~]$ sudo umount /home/saber/usb

とmountした先のファイルも自分の所有物になる. 使い終わったら「sudo umount /home/saber/usb」とする.
これは「rockylinux8」「centos7」でも同様で、NTFSデバイスでも同様です 「rockylinux9」「rockylinux8」「centos7」いずれでも

他にLinuxなデバイス ext4 や xfs の場合は、所有者情報が載るのでデバイスの中にフォルダを作ってそこを各自のフォルダにするのがいいのかも. NTFSexFATは所有者情報がないに等しい

(初回設定)
[root@rockylinux9 ~]# mkdir /mnt/20230401                           <--数字はデバイスの識別ID. ここでは日付を使ってます. HDDにこのIDを付けるのもいいかも. プロジェクト名でも可
[root@rockylinux9 ~]# mount -t ext4 /dev/sdb1 /mnt/20230401
[root@rockylinux9 ~]# df -lTh /mnt/20230401
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4  5.5T   32K  5.2T   1% /mnt/20230401
 
[root@rockylinux9 ~]# mkdir /mnt/20230401/saber                        <--- デバイスの中にフォルダを作って
[root@rockylinux9 ~]# chown saber. /mnt/20230401/saber                 <--- 所有権を渡してしまう
[root@rockylinux9 ~]# ls -l /mnt/20230401/
total 20
drwx------. 2 root  root  16384 Apr  1 16:02 lost+found
drwxr-xr-x. 2 saber saber  4096 Apr  1 16:05 saber
 
[root@rockylinux9 ~]# umount /mnt/20230401
 
(その上でユーザで操作)
[saber@rockylinux9 ~]$ sudo mount /dev/sdb1 /mnt/20230401/
[saber@rockylinux9 ~]$ ls -l /mnt/20230401/
total 20
drwx------. 2 root  root  16384 Apr  1 16:02 lost+found
drwxr-xr-x. 2 saber saber  4096 Apr  1 16:05 saber
 
[saber@rockylinux9 ~]$ sudo umount /mnt/20230401/

これはext4の他にもxfsにも使えます

sudoを使わないで/etc/fstabの修正で対応してみる

GUIでコンソールからログイン、そしてHDDを差し込むとディスクトップ上にHDDのアイコンが現れて、それはユーザの所有者となっている.
CUIやリモートからのssh接続ではこれを利用できないみたい.

mountのオプションを駆使してsudoなしで外部デバイス(exFAT)をmountしてみる.

まずはmountポイントを作成します. ここでは例としてデバイス毎にポイントを作成して、それをchmod 777にしておく.

[root@rockylinux9 ~]# mkdir /mnt/{sdb,sdc,sdd,sde,sdf}
[root@rockylinux9 ~]# chmod 777 /mnt/{sdb,sdc,sdd,sde,sdf}
[root@rockylinux9 ~]# ls -l /mnt/
total 0
drwxrwxrwx. 2 root root 6 Apr  1 02:45 sdb
drwxrwxrwx. 2 root root 6 Apr  1 02:45 sdc
drwxrwxrwx. 2 root root 6 Apr  1 02:45 sdd
drwxrwxrwx. 2 root root 6 Apr  1 02:45 sde
drwxrwxrwx. 2 root root 6 Apr  1 02:45 sdf
[root@rockylinux9 ~]#

次に、/etc/fstabを修正して、一般ユーザでもmountできるようにします(sudoの権限なしにです). っで、ここが面倒なのですが事前にmountされるデバイス(/dev/sdb1,/dev/sdc1ら)を記載しておきます.
/dev/sdb1なら/mnt/sdbに、/dev/sdc1が来たら/mnt/sdcにというように.

[root@rockylinux9 ~]# vi /etc/fstab
 :
/dev/sdb1 /mnt/sdb exfat noauto,users,owner,group 0 0
/dev/sdc1 /mnt/sdc exfat noauto,users,owner,group 0 0
/dev/sdd1 /mnt/sdd exfat noauto,users,owner,group 0 0
/dev/sde1 /mnt/sde exfat noauto,users,owner,group 0 0
/dev/sdf1 /mnt/sdf exfat noauto,users,owner,group 0 0
 :
[root@rockylinux9 ~]#

このように定義して、usbにHDDを接続して、そのHDDがデバイスとしては何として登録されたかを「/proc/partitions」を見て判断して、もし「/dev/sdb1」なら「mount /mnt/sdb」を実行します

[saber@rockylinux9 ~]$ cat /proc/partitions
major minor  #blocks  name
(略
   8       16 5860522584 sdb
   8       17 5860520960 sdb1
[saber@rockylinux9 ~]$
[saber@rockylinux9 ~]$ mount /mnt/sdb
[saber@rockylinux9 ~]$ ls -l /mnt/sdb/
total 13600768
drwxr-xr-x. 2 saber saber    2097152 Mar 31 21:15 '$RECYCLE.BIN'
-rwxr-xr-x. 1 saber saber  709885952 Jul  4  2021  AlmaLinux-8.4-x86_64-boot.iso
-rwxr-xr-x. 1 saber saber 1981808640 Jun  9  2021  AlmaLinux-8.4-x86_64-minimal.iso
-rwxr-xr-x. 1 saber saber 4674615296 Nov 21 00:22  CentOS-5.11-x86_64-bin-DVD-1of2.iso
-rwxr-xr-x. 1 saber saber 4238800896 Nov 21 08:31  CentOS-6.0-x86_64-bin-DVD1.iso
-rwxr-xr-x. 1 saber saber 3991928832 Feb 12  2021  CentOS-6.10-x86_64-bin-DVD1.iso
-rwxr-xr-x. 1 saber saber 2187548672 Feb 12  2021  CentOS-6.10-x86_64-bin-DVD2.iso
-rwxr-xr-x. 1 saber saber  425721856 Feb 12  2021  CentOS-6.10-x86_64-minimal.iso
drwxr-xr-x. 2 saber saber    2097152 Mar 31 20:59 'System Volume Information'
[saber@rockylinux9 ~]$

普通にroot権限でデバイスをmountするには「mount <デバイス> <mountポイント>」ですが、事前に/etc/fstabに記載しておくと「mount <mountポイント>」で行ける

ただ残念なことにこれができるのはRockyLinux9で exFAT が対象の時のみで RockyLinux9でNTFSデバイスではダメ.
rocklinux8では?centos7では?exFATNTFSもどちらもダメっぽい. はいsudoをご利用ください

だが、ext4、xfsは行ける

同じように/mntにデバイス毎のフォルダを用意して、所有権をガバガバにします.

[root@centos7 ~]# mkdir /mnt/{sdb,sdc,sdd,sde,sdf}
[root@centos7 ~]# chmod 777 /mnt/{sdb,sdc,sdd,sde,sdf}
[root@centos7 ~]# vi /etc/fstab
 :
/dev/sdb1 /mnt/sdb auto noauto,users,owner,group 0 0
/dev/sdc1 /mnt/sdc auto noauto,users,owner,group 0 0
/dev/sdd1 /mnt/sdd auto noauto,users,owner,group 0 0
/dev/sde1 /mnt/sde auto noauto,users,owner,group 0 0
/dev/sdf1 /mnt/sdf auto noauto,users,owner,group 0 0
[root@rockylinux ~]#

としておく.
あとは刺したデバイスを「cat /proc/partitions」で確認して sdb1 なら 「mount /mnt/sdb」とすればユーザ権限でmountできます
ただここでユーザ権限でmountしてもそのデバイスに書ける権限のあるフォルダがないと意味がないです. 初回はrootでフォルダなりを作っておきます

[root@centos7 ~]# mount /dev/sdb1 /mnt/sdb
[root@centos7 ~]# mkdir /mnt/sdb/saber
[root@centos7 ~]# chown saber. /mnt/sdb/saber
[root@centos7 ~]# umount /mnt/sdb

その後にユーザ権限で使います

[saber@centos7 ~]$ mount /mnt/sdb
[saber@centos7 ~]$ ls -l /mnt/sdb
total 20
drwx------. 2 root  root  16384 Apr  1 18:52 lost+found
drwxr-xr-x. 2 saber saber  4096 Apr  1 19:15 saber
[saber@centos7 ~]$
[saber@centos7 ~]$ umount /mnt/sdb

まとめ

sudosudoなし /etc/fstabの修正で対応
RockyLinux9RockyLinux8CentOS7RockyLinux9RockyLinux8CentOS7備考
exFATXX
NTFSXXX
ext4デバイスに各ユーザのフォルダ作成
xfs
  • sudoを使う
    ほぼほぼ最強. っがrootでvisudo調整が必要. ユーザを同一グループに所属させ、グループにsudo権限を付けるとかすれば楽かな
    exFATNTFSならmount時に uid/gid を指定できるので自分のホームディレクトリ内にmountポイントを作れる. フルパス情報が大事ならこちら一択かな.
  • fstabで対応
    一応できる. っがデバイスはext4, xfsにほぼ限定. あとユーザ用のフォルダを作る必要がある. 加えて事前に「デバイスはここにmount」と定義する必要があって自由度が少ないかな.

exFAT形式にして、mount操作はsudoを介して行って、自分の好きな場所($HOME/data/projectABC)に置くのがいいのかも.


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2023-04-01 (土) 19:47:54 (69d)