автоматическое_монтирование_флешек_без_systemd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
автоматическое_монтирование_флешек_без_systemd [2023/12/06 15:43] – created uf4nавтоматическое_монтирование_флешек_без_systemd [2025/02/18 11:29] (current) uf4n
Line 3: Line 3:
 Cоздать файл /etc/udev/rules.d/10-local-usb-storage.rules следующего содержания Cоздать файл /etc/udev/rules.d/10-local-usb-storage.rules следующего содержания
  
-SUBSYSTEM!="block", GOTO="end_rule" +  SUBSYSTEM!="block", GOTO="end_rule" 
-KERNEL!="sd[b-z][0-9]", GOTO="end_rule" +  KERNEL!="sd[b-z][0-9]", GOTO="end_rule" 
-ACTION=="add", RUN+="/usr/bin/mount_media %k plugdev" +  ACTION=="add", RUN+="/usr/bin/mount_media %k plugdev" 
-ACTION=="remove", RUN+="/usr/bin/mount_media %k unplugdev" +  ACTION=="remove", RUN+="/usr/bin/mount_media %k unplugdev" 
-LABEL="end_rule"+  LABEL="end_rule"
  
 --------------------------------------------------------------------- ---------------------------------------------------------------------
  
-Cоздать файл /usr/bin/mount_media+Cоздать файл /usr/bin/media-mount
  
-#!/bin/sh +<code> 
-+#!/bin/bash
-# License? +
-#+
  
-+Добавить сюда задание значения переменной PATH
-# UUID раздела +
-+
-#PART_UUID="`/sbin/blkid -o value -s UUID /dev/${1}`"+
  
-+DISK_LABEL=disk_$(echo /dev/${1} | sed 's|/dev/sd||' | sed -E 's|[^a-zA-Z]||g' | tr '[:lower:][:upper:]' '[:upper:][:lower:]')_$(lsblk -o SIZE /dev/${1} | sed -n '2p'
-# LABEL раздела +DISK_LABEL=$(echo "${DISK_LABEL}" | tr -d ' ') 
-+DISK_LABEL=$(echo "${DISK_LABEL}" | tr ',' '.')
-PART_LABEL=$(/sbin/blkid -p -o value -s LABEL /dev/${1} | /bin/sed 's/ /_/g')+
  
-# 
-# FS раздела 
-# 
-PART_FS=$(/sbin/blkid -o value -s TYPE /dev/${1}) 
- 
-# 
-# Проверить подключается устройство или отключается? 
-# 
 if [ "$2" = "plugdev" ] if [ "$2" = "plugdev" ]
-then /bin/mkdir /media/${1}.${PART_LABEL}+then 
  
-+    PART_FS=$(/usr/sbin/blkid -o value -s TYPE /dev/${1}) 
-# Определить, не смонтирован ли уже раздел? +    mkdir /media/${DISK_LABEL}
-+
-# if [grep -${1} -e mount] +
-# then printf Всё смонтировано, я в отбой. && exit 0+
  
-case ${PART_FSin+    # Determin any loged users excep root 
 +    logged_users=$(who | awk '{print $1}' | grep -v '^root$' | sort -u) 
 +    if [ -n "$logged_users" ]; then 
 +         
 +        OWNER=$(echo "$logged_users" | head -n 1) 
 +        BASIC_GROUP=$(id -gn ${OWNER})
  
-vfat) +        case ${PART_FSin
-/bin/echo /dev/${1/media/${1}.${PART_LABEL} vfat shortname=lower,iocharset=utf8,noatime,users,dmask=000,fmask=111 0 0 >> /etc/fstab +
-/bin/mount /dev/${1} +
-;;+
  
-ntfs+        vfat
-/bin/echo /dev/${1} /media/${1}.${PART_LABELntfs-3g relatime,users,dmask=000,fmask=111 0 0 >> /etc/fstab +        echo /dev/${1} /media/${DISK_LABELvfat rw,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=0022,fmask=0022 0 0 >> /etc/fstab 
-/bin/mount /dev/${1} +        mount -t vfat -o rw,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=0022,fmask=0022 /dev/${1} /media/${DISK_LABEL
-;;+        ;;
  
-*+        exfat
-/bin/echo /dev/${1} /media/${1}.${PART_LABELauto users 0 0 >> /etc/fstab +        echo /dev/${1} /media/${DISK_LABELexfat rw,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=0022,fmask=0022 0 0 >> /etc/fstab 
-/bin/mount /dev/${1} +        mount -t exfat -o rw,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=0022,fmask=0022 /dev/${1} /media/${DISK_LABEL
-;;+        ;;
  
-esac +        ntfs) 
-else +        echo /dev/${1} /media/${DISK_LABEL} ntfs rw,relatime,noexec,nosuid,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=000,fmask=111 0 0 >> /etc/fstab 
-/bin/umount -l /dev/${1} +        mount -t ntfs -o rw,relatime,noexec,nosuid,users,uid=${OWNER},gid=${BASIC_GROUP},dmask=000,fmask=111 /dev/${1} /media/${DISK_LABEL} 
-/bin/rmdir --ignore-fail-on-non-empty "$(/usr/bin/awk "/${1}/ { print \$2 }" < /etc/fstab)" +        ;; 
-/bin/sed "/\/dev\/${1}/d" -i /etc/fstab+ 
 +        ext4) 
 +        echo /dev/${1} /media/${DISK_LABEL} auto rw,noatime,nosuid,nodev,users,errors=remount-ro 0 0 >> /etc/fstab 
 +        mount -t ext4 -o rw,users,noatime,nosuid,nodev,errors=remount-ro /dev/${1} /media/${DISK_LABEL} 
 +        ;; 
 + 
 +        *) 
 +        echo /dev/${1} /media/${DISK_LABEL} auto,users 0 0 >> /etc/fstab 
 +        mount -t auto -o auto,users 0 0  /dev/${1} /media/${DISK_LABEL} 
 +        ;; 
 + 
 +        esac 
 +    fi 
 +elif [ "$2" = "unplugdev" ]  
 +then 
 +    umount -l /dev/${1} 
 +    rm -rf /media/${DISK_LABEL}* 
 +    #rmdir --ignore-fail-on-non-empty "$(/usr/bin/awk "/${1}/ { print \$2 }" < /etc/fstab)" 
 +    sed "/\/dev\/${1}/d" -i /etc/fstab
 fi fi
 +
  
 exit 0 exit 0
 +
 +# NB: The user will not be able to unmount the device, even if the users option was specified in the mount command. There must be an entry about the device in /etc/fstab.
 +</code>
 +
 +----------------------------------------------------------------------------
 +
 +Дать этому файлу права на исполнение
 +
 +  sudo chmod +x /usr/bin/media-mount
  
 ---------------------------------------------------------------------------- ----------------------------------------------------------------------------
Line 75: Line 88:
 Обновить правила для udev без перезагрузки Обновить правила для udev без перезагрузки
  
-  udevadm control --reload-rules+  sudo udevadm control --reload-rules
      
-Разрешить пользователю выполнять команды монтирования и размонтирования от root'а 
- 
-  sudo chmod +s /bin/mount 
-  sudo chmod +s /bin/umount 
      
 ---------------------------------------------------------------------------- ----------------------------------------------------------------------------
автоматическое_монтирование_флешек_без_systemd.1701877436.txt.gz · Last modified: 2023/12/06 15:43 by uf4n