Advertisement
mightyroot

Automount udev

Feb 13th, 2012
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.38 KB | None | 0 0
  1. Создаём новый файл /etc/udev/rules.d/automount.rules со следующим содержанием:
  2. ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mkdir -p /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"
  3. ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"
  4. ACTION=="remove" KERNEL=="sd[c-z][0-9]" RUN+="/bin/rmdir /mnt/%E{ID_VENDOR}_%E{ID_MODEL}_%n"
  5.  
  6. Укажем udev-у, что появилось новое правило:
  7. sudo udevadm control --reload-rules
  8.  
  9. Результат
  10. Вставляю флешку и вижу каталог /mnt/KINGMAX_Flash_Disk_1, в котором содержимое флешки. Размонтирую и вынимаю — каталог пропал.
  11.  
  12. Замечания
  13. 1. KERNEL==«sd[c-z][0-9]» — значит, что будет срабатывать на все устройства вида /dev/sdc1 /dev/sdc2, /dev/sdg7. У меня 2 жестких диска: sda и sdb, поэтому я начал regex с «с».
  14. 2. mount -o uid=1000 — зашит id пользователя, который будет owner-ом. Если у вас не стандартный, то подправьте (проверка id -u). Конечно, можно действовать через группы и маски, но я выбрал наиболее простое решение.
  15.  
  16. umount
  17. Проблему размонтирования (нужны права суперпользователя) я решил так:
  18. 1. sudo visudo
  19. 2. добавить строчку %wheel ALL= NOPASSWD: /bin/umount
  20.  
  21. upd
  22. Как заметил darkk, ID_VENDOR="; /bin/rm -rf /;" — потенциальная дыра в безопасности, поэтому лучше перестраховаться в ущерб наглядности:
  23. ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mkdir -p /mnt/%k"
  24. ACTION=="add" KERNEL=="sd[c-z][0-9]" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%k"
  25. ACTION=="remove" KERNEL=="sd[c-z][0-9]" RUN+="/bin/rmdir /mnt/%k"
  26.  
  27.  
  28. #_________________ANOTHER___VARIANT_____________________________________________#
  29. cat /etc/udev/rules.d/99-mnt.rules
  30. KERNEL!="sd[a-z][0-9]", GOTO="end-of-file"
  31. KERNEL=="sd[a-z]", GROUP="disk"
  32. ACTION=="remove", KERNEL=="sd[d-z][0-9]", ENV{ID_FS_TYPE}!="", RUN+="/bin/sed -i '/\/dev\/%k /d' /etc/fstab"
  33. ACTION=="remove", KERNEL=="sd[d-z][0-9]", ENV{ID_FS_TYPE}!="", RUN+="/bin/rmdir /media/$env{ID_FS_TYPE}-%k"
  34. ACTION=="add", KERNEL=="sd[a-z][0-9]", ENV{ID_FS_TYPE}!="", RUN+="/bin/mkdir -p /media/$env{ID_FS_TYPE}-%k"
  35. # монтирование раздела fat32
  36. ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k vfat rw,noauto,noatime,dmask=022,gid=user,user,fmask=133,iocharset=koi8-r 0 0' /etc/fstab", OPTIONS="last_rule"
  37. # монтирование раздела ntfs
  38. ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="ntfs", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k ntfs-3g rw,noauto,dmask=022,fmask=133,gid=user,user,iocharset=koi8-r 0 0' /etc/fstab", OPTIONS="last_rule"
  39. # монтирование прочих ФС
  40. ACTION=="add", KERNEL=="sd[a-z][0-9]", ENV{ID_FS_TYPE}!="", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k $env{ID_FS_TYPE}  defaults,user 0 0' /etc/fstab"
  41. LABEL="end-of-file"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement