読者です 読者をやめる 読者になる 読者になる

udevでvfatなメディアの自動マウントの挙動をちょっと変更したのでちょっとメモ

linux

/etc/udev/rules.d/11-media-by-label-auto-mount.rulesでUSBメモリスティックとかUSB-HDDの自動マウントさせているんだけど、ファイルシステムがvfatの時にuid:root、gid:usersでマウントされるなーと思ったらこれだったw 

# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

なのでuid、gitを自分にしてしまう。どうせ自分しか使わないのでuid、gid固定しても問題ないし。

# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,uid=1000,gid=1000,umask=002"

(´-`).。oO(このファイルを自分で作ったような作ってないような覚えてないんだけどpacman曰くどのパッケージのものでも無いということなので、自分で作ったんだろう

masami@saga:~$ pacman -Qo /etc/udev/rules.d/11-media-by-label-auto-mount.rules
error: No package owns /etc/udev/rules.d/11-media-by-label-auto-mount.rules

ついでなのでこのファイルでやっていることを書いておく。
ファイル全体は以下の通り。

KERNEL!="sd[c-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o         $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}",     RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

最初のこれはデバイスが/dev/sd[ab]の場合は自動マウント対象外に。これはうちの環境では/dev/sdaは/、/bootに使っていて/dev/sdbのほうに/varと/homeを割り当てているから。

KERNEL!="sd[c-z][0-9]", GOTO="media_by_label_auto_mount_end"

GOTOの行き先はファイル最下部のここ。

# Exit
LABEL="media_by_label_auto_mount_end"

ファイルシステム固有のマウントオプションを付ける場合は以下のような感じで。

ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)