root以外のユーザーがUSBデバイスに書き込めるように設定

root以外のユーザーがUSBデバイスに書き込めるように設定

FAT32でフォーマットされた(最大の互換性のために)USBデバイスをCentOS 5を実行しているシステムに接続しました(たとえば、古いことがわかっています)。

挿入する目的は、他の2つのシステムから転送されたバックアップファイルを受信することです。

ただし、(明らかに)UDEVのデフォルト動作により、そのサブディレクトリは "drwxr-xr-x 5 root root"としてインストールされ、送信されたすべてのエントリを拒否し、 "chown"(エラーメッセージとともに)も拒否します。または「chmod」(自動的に失敗する)。

USB FAT32デバイスのデフォルトのインストール動作を変更する方法はありますか?このボックスの /etc/udev/rules.d には以下が含まれています。

05-udev-early.rules  60-pcmcia.rules         90-alsa.rules
40-multipath.rules   60-raw.rules            90-dm.rules
50-udev.rules        60-wacom.rules          90-hal.rules
51-hotplug.rules     61-uinput-stddev.rules  95-pam-console.rules
60-libsane.rules     61-uinput-wacom.rules   98-kexec.rules
60-net.rules         85-pcscd_ccid.rules     bluetooth.rules

ここでオブジェクトは次のようになります。特に避けてください血まみれは明示的にインストールする必要があります(そしていいえ他のデバイスを接続するたびに、新しいfstabエントリを追加する必要があります!

「udevmonitor」(「udevadm」を除く)を見つけてデバイスを接続したとき:

UEVENT[1618003563.847325] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5
UEVENT[1618003563.847392] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/usbdev1.4_ep00
UEVENT[1618003563.849089] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0
UEVENT[1618003563.849130] add@/class/scsi_host/host4
UEVENT[1618003563.849155] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/usbdev1.4_ep8b
UEVENT[1618003563.849180] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/usbdev1.4_ep0a
UEVENT[1618003563.849203] add@/class/usb_device/usbdev1.4
UDEV  [1618003563.850150] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5
UDEV  [1618003564.062789] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/usbdev1.4_ep00
UDEV  [1618003564.186813] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0
UDEV  [1618003564.298705] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/usbdev1.4_ep8b
UDEV  [1618003564.298769] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/usbdev1.4_ep0a
UDEV  [1618003564.308695] add@/class/scsi_host/host4
UDEV  [1618003564.614084] add@/class/usb_device/usbdev1.4
UEVENT[1618003569.124366] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/host4/target4:0:0/4:0:0:0
UEVENT[1618003569.124416] add@/class/scsi_disk/4:0:0:0
UEVENT[1618003569.179432] add@/block/sda
UEVENT[1618003569.179466] add@/block/sda/sda1
UEVENT[1618003569.179485] add@/block/sda/sda2
UEVENT[1618003569.179508] add@/class/scsi_device/4:0:0:0
UEVENT[1618003569.179612] add@/class/scsi_generic/sg0
UDEV  [1618003569.290405] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/host4/target4:0:0/4:0:0:0
UDEV  [1618003569.423752] add@/class/scsi_generic/sg0
UDEV  [1618003569.423806] add@/class/scsi_disk/4:0:0:0
UDEV  [1618003569.474344] add@/class/scsi_device/4:0:0:0
UDEV  [1618003569.505476] add@/block/sda
UDEV  [1618003569.861895] add@/block/sda/sda1
UDEV  [1618003569.919434] add@/block/sda/sda2
UEVENT[1618003570.253329] mount@/block/sda/sda2
UDEV  [1618003570.254399] mount@/block/sda/sda2

udevinfo -p /block/sda/sda2 -q どちらも私に以下を提供しました。

P: /block/sda/sda2
N: sda2
S: disk/by-id/usb-Seagate_BUP_Slim_BK_NA7LFNNT-part2
S: disk/by-path/pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:0-part2
S: disk/by-uuid/6D63-17F2
S: disk/by-label/BACKUP
E: ID_VENDOR=Seagate
E: ID_MODEL=BUP_Slim_BK
E: ID_REVISION=0143
E: ID_SERIAL=Seagate_BUP_Slim_BK_NA7LFNNT
E: ID_TYPE=disk
E: ID_BUS=usb
E: ID_PATH=pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:0
E: ID_FS_USAGE=filesystem
E: ID_FS_TYPE=vfat
E: ID_FS_VERSION=FAT32
E: ID_FS_UUID=6D63-17F2
E: ID_FS_LABEL=BACKUP
E: ID_FS_LABEL_SAFE=BACKUP

udevinfo -p /block/sda2 -1 の結果は次のとおりです。

  looking at device '/block/sda/sda2':
    KERNEL=="sda2"
    SUBSYSTEM=="block"
    SYSFS{stat}=="      38      329      661      163        1        1        2        4        0      139      167"
    SYSFS{size}=="1952849920"
    SYSFS{start}=="411648"
    SYSFS{dev}=="8:2"

  looking at parent device '/block/sda':
    ID=="sda"
    BUS=="block"
    DRIVER==""
    SYSFS{stat}=="     112     1237     1811      361        1        1        2        4        0      241      365"
    SYSFS{size}=="1953525167"
    SYSFS{removable}=="0"
    SYSFS{range}=="16"
    SYSFS{dev}=="8:0"
. . .

/etc/udev/rules.d/50-udev.rulesに行って変更してみました。

# all block devices
SUBSYSTEM=="block",             GROUP="disk", MODE="0640"
KERNEL=="root",                 GROUP="disk", MODE="0640"

到着

# all block devices
SUBSYSTEM=="block",             GROUP="disk", MODE="0660"
KERNEL=="root",                 GROUP="disk", MODE="0640"

再起動しましたが、うまくいきませんでした。

さらに下に私はこれを見つけました( "percious_end"以降):

ACTION=="add", SUBSYSTEM=="usb_device", \
        PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", \
        NAME="%c", MODE="0644"

そして644を664に変更しましたが、うまくいきませんでした(さらに、サブシステムは「ブロック」でなければなりません)。

USBデバイスアクセスを開くMODEパラメータを指定するために何かを置くことができる他の場所はありますか?

私は気づいた

UEVENT[1618003570.253329] mount@/block/sda/sda2
UDEV  [1618003570.254399] mount@/block/sda/sda2

udevmonitor 出力の一番下にあります。 "mount"のgrepが "mount"イベントに応答する単一のルールを見つけられなかったことがわかりました。この問題に対応してインストールパラメータを変更したり、デバイスを再インストールするなど、追加できるものはありますか?

ベストアンサー1

chownFATはこれを実装していないため動作chmodしません。ただし、インストール時にumask誰もがFATに書き込むことを指定するか、uidフラッシュドライブのすべてのアイテムの所有者を設定できます。インストール機能について話している場合は、/etc/fstab項目を追加して適切なオプションを使用できますusers。 CentOS 5では、静的よりも複雑なものを保証するために、デバイスに接続されているものが少ないようですfstab

おすすめ記事