リムーバブルメディア

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Removable media and the translation is 100% complete.
Other languages:

リムーバブルメディアは単に、システムから容易に取り除くことができるメディアのことです。典型的には、CD、DVD、USB ドライブ、各フォームファクタのメモリカードがこれに該当します。

非特権ユーザが未知のデバイスをマウントしたい場合、こうした種類のメディアには特別な処理が必要です。

前提条件

  • カーネルが、ストレージデバイスに対応していること。
  • カーネルが、デバイスが使用するファイルシステムに対応していること。

UUID とラベル

多くの場合、ストレージデバイスは /dev/sd* などのデバイスファイルによって区別されます。または、UUID (Universally Unique Identifier) (/dev/disk/by-uuid/*) またはラベル (/dev/disk/by-label/*) を使用することもできます。デバイスファイルとは違って UUID とラベルは永続的であり、非同期的な検出によって変わることはありません。UUID はファイルシステム作成時に自動的に生成されます。ラベルはファイルシステム作成時に指定するか、後で変更することができます。

すべてのストレージデバイスと、それらの UUID とラベルを表示するには、tree /dev/disk/ または lsblk (sys-apps/util-linux に含まれます) を使用してください:

user $tree /dev/disk/
user $lsblk -o +fstype,label,uuid,partuuid
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT FSTYPE   LABEL           UUID                                 PARTUUID
sda      8:0    0 111.8G  0 disk                                                                          
├─sda1   8:1    0    96M  0 part            ext2                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-01
├─sda2   8:2    0     1K  0 part                                                                          xxxxxxxx-02
├─sda3   8:3    0   100M  0 part            ntfs     System Reserved XXXXXXXXXXXXXXXX                     xxxxxxxx-03
├─sda4   8:4    0  29.6G  0 part            ntfs                     XXXXXXXXXXXXXXXX                     xxxxxxxx-04
├─sda5   8:5    0   2.8G  0 part [SWAP]     swap                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-05
└─sda6   8:6    0  79.2G  0 part /          ext4                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-06
sr0     11:0    1  1024M  0 rom    

リムーバブルメディアをマウントする

root 特権を持たない通常ユーザとしてデバイスをマウントするためには、/etc/fstab 内にそのデバイスに関するエントリが user オプション付きで存在している必要があります。

コンピュータにリムーバブルメディアを接続して、tree /dev/disk/ または lsblk を実行してください。

user $lsblk -o +fstype,label,uuid,partuuid
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT FSTYPE   LABEL           UUID                                 PARTUUID
sda      8:0    0 111.8G  0 disk                                                                          
├─sda1   8:1    0    96M  0 part            ext2                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-01
├─sda2   8:2    0     1K  0 part                                                                          xxxxxxxx-02
├─sda3   8:3    0   100M  0 part            ntfs     System Reserved XXXXXXXXXXXXXXXX                     xxxxxxxx-03
├─sda4   8:4    0  29.6G  0 part            ntfs                     XXXXXXXXXXXXXXXX                     xxxxxxxx-04
├─sda5   8:5    0   2.8G  0 part [SWAP]     swap                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-05
└─sda6   8:6    0  79.2G  0 part /          ext4                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-06
sdb      8:16   1   3.8G  0 disk                                                                          
└─sdb1   8:17   1   3.8G  0 part            vfat                     QWER-1234                            
sdc      8:32   1   1.9G  0 disk                                                                          
└─sdc1   8:33   1   1.9G  0 part            vfat     QWERTZ12345     4321-REWQ                            qwer1234-01
sr0     11:0    1  1024M  0 rom    

sdb1sdc1 の行は今接続した 2 つのメディアに対応し、/etc/fstab に追加する UUID QWER-12344321-REWQ を表示しています。sdc1 にはラベル QWERTZ12345 も付いていて、代わりにこれを使用することもできます。マウントポイント larry1 および larry2 を作成しましょう:

root #mkdir /mnt/{larry1,larry2}
root #chmod 777 /mnt/{larry1,larry2}

そして、/etc/fstab にこれらを追加してください。

ファイル /etc/fstab
# <fs>            <mountpoint> <type> <opts>         <dump/pass>
...
UUID=QWER-1234    /mnt/larry1  vfat   noauto,rw,user     0 0
LABEL=QWERTZ12345 /mnt/larry2  vfat   noauto,rw,user     0 0

これらのエントリに user オプションを付けると、通常ユーザによってマウント/アンマウントできるようになります。

user $mount /mnt/larry1
user $mount /mnt/larry2

何がマウントされているか確認するには、mount を引数無しで実行するか、lsblk を再度実行して、MOUNTPOINT 列に sdb1 および sdc1 が含まれている箇所を探してください:

user $lsblk -o +fstype,label,uuid,partuuid
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT  FSTYPE   LABEL           UUID                                 PARTUUID
sda      8:0    0 111.8G  0 disk                                                                          
├─sda1   8:1    0    96M  0 part             ext2                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-01
├─sda2   8:2    0     1K  0 part                                                                           xxxxxxxx-02
├─sda3   8:3    0   100M  0 part             ntfs     System Reserved XXXXXXXXXXXXXXXX                     xxxxxxxx-03
├─sda4   8:4    0  29.6G  0 part             ntfs                     XXXXXXXXXXXXXXXX                     xxxxxxxx-04
├─sda5   8:5    0   2.8G  0 part [SWAP]      swap                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-05
└─sda6   8:6    0  79.2G  0 part /           ext4                     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxx-06
sdb      8:16   1   3.8G  0 disk                                                                          
└─sdb1   8:17   1   3.8G  0 part /mnt/larry1 vfat                     QWER-1234                            
sdc      8:32   1   1.9G  0 disk                                                                          
└─sdc1   8:33   1   1.9G  0 part /mnt/larry2 vfat     QWERTZ12345     4321-REWQ                            qwer1234-01
sr0     11:0    1  1024M  0 rom    

デバイスがマウントされたら、通常のハードディスクのようにアクセスすることができます。cpmvrm などのような通常の操作は問題なく行えます。

使用中のマウントポイントをアンマウントするには、マウントのときと同様にラベルまたは UUID を使用できます。どちらでもかまいません。

user $umount /mnt/larry2
user $umount LABEL=QWERTZ12345
user $umount UUID=4321-REWQ

fstab にエントリが無いマウントは、root によってしか実行できません。

root #mount UUID=QWER-1234 /mnt/larry1
user $mount
/dev/sdb1 on /mnt/larry1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

詳細については mount(8) man ページを参照してください。

他の方法は、/usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy を編集し、action id "org.freedesktop.udisks2.filesystem-mount" 下の allow_any の auth_admin を yes に変更する方法です。リモートのユーザもローカルのユーザもディスクをマウントできるようになるので、この変更は潜在的なセキュリティリスクであると考えてください。

ファイル /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy
    <action id="org.freedesktop.udisks2.filesystem-mount">
      <description>Mount a filesystem</description>
      <message>Authentication is required to mount the filesystem</message>
      <defaults>
        <allow_any>yes</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>yes</allow_active>
      </defaults>
    </action>

MTP

MTP (Media Transfer Protocol) プロトコルを利用したメディアの取り扱いについては、MTP の記事を参照してください。

関連項目

  • Mount — コンピュータの現在アクセス可能なファイルシステムに、追加のファイルシステムをつなぎ合わせることを指します。
  • /etc/fstab — 特にブート時において、どのようにそしてどこに主要なファイルシステムがマウントされるかを定義する設定ファイルです。
  • CurlFtpFS — allows for mounting an FTP folder as a regular directory to the local directory tree.
  • AutoFS — Linux カーネルの自動マウントを利用して、必要時にファイルシステムを自動でマウントするプログラム
  • Udisks — a D-Bus daemon offering storage related services.
  • Silk Guardian — a Linux kernel module kill switch that upon detecting changes to USB ports, wipes the RAM, securely deletes user specified files, and then shuts down the system.

外部資料