NAME¶
pmount - mount arbitrary hotpluggable devices as normal user
SYNOPSIS¶
pmount [
options ]
device
pmount [
options ]
device label
pmount --lock [
options ]
device pid
pmount --unlock [
options ]
device pid
pmount
DESCRIPTION¶
pmount ("policy mount") is a wrapper around the standard mount program
which permits normal users to mount removable devices without a matching
/etc/fstab entry.
pmount also supports encrypted devices which use dm-crypt and have LUKS
metadata. If a LUKS-capable
cryptsetup is installed, pmount will use it
to decrypt the device first and mount the mapped unencrypted device instead.
pmount is invoked like this:
pmount device [
label ]
This will mount
device to a directory below /media if policy is met (see
below). If
label is given, the mount point will be /media/label,
otherwise it will be /media/device.
The device will be mounted with the following flags:
async,atime,nodev,noexec,noauto,nosuid,user,rw
Some applications like CD burners modify a raw device which must not be mounted
while the burning process is in progress. To prevent automatic mounting,
pmount offers a locking mechanism:
pmount --lock device pid will
prevent the pmounting of
device until it is unlocked again using
pmount --unlock device pid. The process id pid assigns
the lock to a particular process; this allows to lock a device by several
processes.
During mount, the list of locks is cleaned, i. e. all locks whose associated
process does not exist any more are removed. This prevents forgotten
indefinite locks from crashed programs.
Running
pmount without arguments prints the list of mounted removable
devices, a bit in the fashion of
mount (1).
Please note that you can use labels and uuids as described in
fstab (5)
for devices present in
/etc/fstab. In this case, the device name need
to match exactly the corresponding entry in
/etc/fstab, including the
LABEL= or
UUID= part.
Important note for Debian: The permission to execute pmount is restricted
to members of the system group
plugdev. Please add all desktop users who
shall be able to use pmount to this group by executing
- adduser user plugdev
(as root).
POLICY¶
The mount will succeed if all of the following conditions are met:
- •
- device is a block device in /dev/
- •
- device is not in /etc/fstab (if it is, pmount
executes mount device as the calling user to handle
this transparently). See below for more details.
- •
- device is not already mounted according to /etc/mtab
and /proc/mounts
- •
- if the mount point already exists, there is no device
already mounted at it and the directory is empty
- •
- device is removable (USB, FireWire, or MMC device,
or /sys/block/drive/removable is 1) or whitelisted in
/etc/pmount.allow.
- •
- device is not locked
OPTIONS¶
- -r, --read-only
- Force the device to be mounted read only. If neither -r nor
-w is specified, the kernel will choose an appropriate default.
- -w, --read-write
- Force the device to be mounted read/write. If neither -r
nor -w is specified, the kernel will choose an appropriate default.
- -s, --sync
- Mount the device with the sync option, i. e. without
write caching. Default is async (write-back). With this option,
write operations are much slower and due to the massive increase of
updates of inode/FAT structures, flash devices may suffer heavily if you
write large files. This option is intended to make it safe to just rip out
USB drives without proper unmounting.
- -A, --noatime
- Mount the device with the noatime option. Default is
atime.
- -e, --exec
- Mount the device with the exec option. Default is
noexec.
- -t filesystem, --type
filesystem
- Mount as specified file system type. The file system type
is automatically determined if this option is not given. See at the bottom
for a list of currently supported filesystems.
- -c charset, --charset
charset
- Use given I/O character set (default: utf8 if called
in an UTF-8 locale, otherwise mount default). This corresponds with the
mount option iocharset (or nls for NTFS). This option is
ignored for file systems that do not support setting the character set
(see mount (8) for details). Important note: pmount
will now mount VFAT filesystems with iocharset=iso8859-1 as
iocharset=utf8 currently makes the filesystem case-sensitive (which
is pretty bad...).
- -u umask, --umask umask
- Use specified umask instead of the default one. For UDF,
the default is '000', for VFAT and NTFS the default is '077'. This value
is ignored for file systems which do not support setting an umask. Note
that you can use a value of 077 to forbid anyone else to read/write the
files, 027 to allow your group to read the files and 022 to allow anyone
to read the files (but only you can write).
- --dmask dmask
- --fmask fmask
- Some filesystems (essentially VFAT and HFS) supports
separate umasks (see the -u option just above) for
directories and files, to avoid the annoying effect of having all files
executable. For these filesystems, you can specify separately the masks
using these options. By default, fmask is umask without all
executable permissions and dmask is umask. Most of the
times, these settings should just do what you want, so there should be
seldom any need for using directly the --fmask and --dmask
options.
- -p file --passphrase file
- If the device is encrypted (dm-crypt with LUKS metadata),
read the passphrase from specified file instead of prompting at the
terminal.
- -h, --help
- Print a help message and exit successfully.
- -d, --debug
- Enable verbose debug messages.
- -V, --version
- Print the current version number and exit successfully.
FILES¶
- /etc/pmount.allow
- List of devices (one device per line) which are
additionally permitted for pmounting. Globs, such as /dev/sda[123]
are permitted. See see glob (7) for a more complete syntax.
SEE ALSO¶
pumount(1),
mount(8)
SUPPORTED FILESYSTEMS¶
For now,
pmount supports the following filesystems:
udf,
iso9660,
vfat,
ntfs,
hfsplus,
hfs,
ext3,
ext2,
ext4,
reiserfs,
reiser4,
xfs,
jfs and
omfs. They are tried sequentially in that
exact order when the filesystem is not specified.
Additionally,
pmount supports the filesystem types
ntfs-fuse and
ntfs-3g to mount NTFS volumes respectively with
ntfsmount (1) or
ntfs-3g (1). If the file
/sbin/mount.ntfs-3g is found, then
pmount will mount NTFS filestystems with type
ntfs-3g rather
than plain
ntfs. To disable this behavior, just specify
-t ntfs
on the command-line, as this happens only for autodetection.
MORE ABOUT FSTAB¶
pmount now fully resolve all symlinks both in its input and in the
/etc/fstab file, which means that if
/dev/cdrom is a symlink to
/dev/hdc and you try to mount
/dev/hdc directly,
pmount
will delegate this to
mount(1). This is a feature, and it contrasts
with previous unclear behavior of
pmount about symlinks in
/etc/fstab.
KNOWN ISSUES¶
Though we believe
pmount is pretty much free from security problems,
there are quite a few glitches that probably will never be fixed.
- •
- pmount needs to try several different times to mount
to get the filesystem right in the end; it is vital that pmount
does know which precise filesystem to mount in order to give it the right
options not to cause security holes. This is rather different from the
behaviour of mount with the -t auto options, which can have
a look at the device it is trying to mount and find out what its
filesystem is. pmount will never try to open a device and look at
it to find out which filesystem it is, as it might open quite a few
security holes. Moreover, the order in which the filesystems are tried are
what we could call the most commonly used filesystems on removable media.
This order is unlikely to change as well. In particular, that means that
when you mount an ext3 filesystem using pmount, you might
get a lot of fs-related kernel error messages. Sorry !
NOTE: Starting from version
0.9.17,
pmount uses the same
mechanism as
mount (1) to autodetect the filesystem type, so this kind
of problems should not happen anymore.
AUTHOR¶
pmount was originally developed by Martin Pitt
<martin.pitt@canonical.com>. It is now maintained by Vincent Fourmond
<fourmond@debian.org>.