Автоматическое подключение флэшки, как осуществить?

Сообщения
224
#1
Друзья! Smolensk 1.5

Действую по этой инструкции (так нет же другой):
https://wiki.astralinux.ru/pages/vi...нтированиеUSB-накопителей-Перехватсобытияudev

А вот и содержание упомянутых в ней файлов:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bash:
user@astra:~$

user@astra:~$ cat /etc/udev/rules.d/99-local.rules

KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"

KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"

user@astra:~$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bash:
user@astra:~$

user@astra:~$ cat /lib/udev/rules.d/99-local.rules

KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"

KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"

user@astra:~$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bash:
user@astra:~$

user@astra:~$ cat /etc/systemd/system/usb-mount@.service

[Unit]

Description=Mount USB Drive on %i

[Service]

Type=oneshot

RemainAfterExit=true

ExecStart=/usr/local/bin/usb-mount.sh add %i

ExecStop=/usr/local/bin/usb-mount.sh remove %i

user@astra:~$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bash:
user@astra:~$

user@astraval:~$ cat /usr/local/bin/usb-mount.sh

#!/bin/bash

# Этот сценарий вызывается из системного юнита как сценарий обработки подключения/отключения накопителей.

usage() {

    echo "Использование: $0 {add|remove} device_name (например, sdb1)"

    exit 1

}


if [[ $# -ne 2 ]]; then

    usage

fi


ACTION=$1

DEVBASE=$2

DEVICE="/dev/${DEVBASE}"


# Проверяем, не примонтировано ли уже устройство

MOUNT_POINT=$(/bin/mount | /bin/grep ${DEVICE} | /usr/bin/awk '{ print $3 }')


do_mount() {

    if [[ -n ${MOUNT_POINT} ]]; then

        echo "Предупреждение: ${DEVICE} уже смонтировано в ${MOUNT_POINT}"

        exit 1

    fi


# Получаем информацию об устройстве : метка $ID_FS_LABEL, идентификатоп $ID_FS_UUID, и тип файловой системы $ID_FS_TYPE

    eval $(/sbin/blkid -o udev ${DEVICE})


# Создаём точку монтирования:

    LABEL=${ID_FS_LABEL}

    if [[ -z "${LABEL}" ]]; then

        LABEL=${DEVBASE}

    elif /bin/grep -q " /media/${LABEL} " /etc/mtab; then

# Если точка монтирования уже существует изменяем имя:

        LABEL+="-${DEVBASE}"

    fi

MOUNT_POINT="/media/${LABEL}"

     echo "Точка монтирования: ${MOUNT_POINT}"

    /bin/mkdir -p ${MOUNT_POINT}


# Глобальные опции монтирования

    OPTS="rw,relatime"


# Специфические опции монтирования:

    if [[ ${ID_FS_TYPE} == "vfat" ]]; then

        OPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush"

    fi


    if ! /bin/mount -o ${OPTS} ${DEVICE} ${MOUNT_POINT}; then

        echo "Ошибка монтирования ${DEVICE} (статус = $?)"

        /bin/rmdir ${MOUNT_POINT}

        exit 1

    fi


    echo "**** Устроййство ${DEVICE} смонтировано в ${MOUNT_POINT} ****"

}


do_unmount() {

    if [[ -z ${MOUNT_POINT} ]]; then

        echo "Предупреждение: ${DEVICE} не смонтировано"

    else

        /bin/umount -l ${DEVICE}

        echo "**** Отмонтировано ${DEVICE}"

    fi


# Удаление пустых каталогов

    for f in /media/* ; do

        if [[ -n $(/usr/bin/find "$f" -maxdepth 0 -type d -empty) ]]; then

            if ! /bin/grep -q " $f " /etc/mtab; then

                echo "**** Удаление точки монтирования $f"

                /bin/rmdir "$f"

            fi

        fi

    done

}


case "${ACTION}" in

    add) do_mount ;;

    remove) do_unmount ;;

    *) usage ;;

esac

user@astra:~$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

А на последний файл вот даже права:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bash:
user@astra:~$

user@astra:~$ ls -l /usr/local/bin/usb-mount.sh

-rwxr-xr-x 1 user staff 2709 апр.   1 17:01 /usr/local/bin/usb-mount.sh

user@astra:~$
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Тем не менее, когда подсоединяю флэшку, и тычу в правом нижнем углу "Открыть в менеджере файлов" такая красивая надпись вылезает:
Устройство не может быть смонтировано
Mount failed
mount бла-бла-бла только root бла-бла-бла
Что же делать, друзья? Как сделать так, чтобы флэшка монтировалась автоматически при присоединении? Спасибо, кто откликнется.
 

Montfer

New member
Сообщения
2 364
#2
работал со спец.версией 1.5 там из коробки "Открыть в менеджере файлов" и "Открыть в коммандере" работало. Может быть у вас флешка не прописана в политиках безопасности? У меня такое сообщение выскакивало именно из-за этого
 
Сообщения
224
#3
работал со спец.версией 1.5 там из коробки "Открыть в менеджере файлов" и "Открыть в коммандере" работало. Может быть у вас флешка не прописана в политиках безопасности? У меня такое сообщение выскакивало именно из-за этого
Так из коробки-то и у меня работает. А вы попробуйте не из коробки, а как-то так:

Bash:
user@astra:~$

user@astra:~$ sudo mkdir /home/newuser

user@astra:~$ sudo useradd newuser

user@astra:~$
То есть создать нового пользователя и всё.
В общем-то сейчас выяснил, что пользователь чтобы уметь таким образом видеть флэшку, он должен принадлежать группе floppy. Ну допустим. Так теперь у него нет прав на отмонтирование! Примонтировать может, а отмонтировать- нет.
 

Montfer

New member
Сообщения
2 364
#4
Так из коробки-то и у меня работает. А вы попробуйте не из коробки, а как-то так:

Bash:
user@astra:~$

user@astra:~$ sudo mkdir /home/newuser

user@astra:~$ sudo useradd newuser

user@astra:~$
То есть создать нового пользователя и всё.
В общем-то сейчас выяснил, что пользователь чтобы уметь таким образом видеть флэшку, он должен принадлежать группе floppy. Ну допустим. Так теперь у него нет прав на отмонтирование! Примонтировать может, а отмонтировать- нет.
в политике безопасности можно настроить, какой пользователь какую флешку может примонтировать. А можно и всем пользователям разрешить, указав группу users
 
Сообщения
224
#5
Короче как-то так должно быть (для отмонтирования-примонтирования флэшки):
Bash:
user@astra:~$ groups
user floppy plugdev fuse
floppy- автоматическое примонтирование, fuse- ручное отмонтирование.
plugdev непонятно за что отвечает, но уж по названию больно просится, чтобы его оставили.