Linux自动共享USB设备:udev+Samba

发表于:2015-7-21 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:进壹    来源:51Testing软件测试网采编

  一、概述
  公司最近要我实现USB设备插入Ubuntu后,自动共享到网络上,能像Windows共享一样(如\\192.168.1.10)访问里面的内容,不需要写入权限。当时听完这需求,我这新人表示惊呆了,立刻上网搜相关文档,并跑去问主管,这功能有人实现了不?主管很肯定地说,必须的。网上搜到的技术文档只有插入USB设备自动挂载,自动共享没搜到,这下只好靠自己了。
  经过一番折腾总算在Ubuntu14.04桌面版实现了该功能,但还不完美,例如:默认只共享出来5个USB设备,USB1~5,拔出后设备还存在。文件系统支持常见的FAT32/NTFS/exFAT格式。好想吐槽,完成后还不知道这奇葩的需求究竟用来做什么...
  实现过程:
  1、插入USB设备,自动挂载(udev规则)
  2、挂载后,使用SMB协议共享到网络上,客户端有读取权限(Samba服务器)
  二、原理
  使用 udev 高效、动态地管理 Linux 设备文件
  用udev自动挂载usb设备
  CentOS 6.3下Samba服务器的安装与配置
  三、配置
  (注意:Ubuntu 14.04的Samba安装上后,服务默认开机启动,并且SELinux和防火墙都未影响服务,其他发行版可能需要配置。)
  1、安装exFat包,支持exFAT格式的文件系统
  root@Ubuntu1:~# sudo apt-get install exfat-utils
  2、定义udev规则,实现USB设备自动挂载
root@Ubuntu1:~# cd /etc/udev/rules.d/                          #udev规则目录
root@Ubuntu1:/etc/udev/rules.d# vim 70-persistent-net.rules    #编辑规则文件
KERNEL!="sdb?", GOTO="automount_exit"
ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/mkdir /media/usb1", RUN+="/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/usb1"
ACTION=="remove", SUBSYSTEM=="block", RUN+="/bin/umount /media/usb1", RUN+="/bin/rmdir /media/usb1"
LABEL="automount_exit"
#当检测到sdb的设备,执行创建目录并挂载;设备删除后,卸载并删除目录
KERNEL!="sdc?", GOTO="automount_exit"
ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/mkdir /media/usb2", RUN+="/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/usb2"
ACTION=="remove", SUBSYSTEM=="block", RUN+="/bin/umount /media/usb2", RUN+="/bin/rmdir /media/usb2"
LABEL="automount_exit"
KERNEL!="sdd?", GOTO="automount_exit"
ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/mkdir /media/usb3", RUN+="/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/usb3"
ACTION=="remove", SUBSYSTEM=="block", RUN+="/bin/umount /media/usb3", RUN+="/bin/rmdir /media/usb3"
LABEL="automount_exit"
KERNEL!="sde?", GOTO="automount_exit"
ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/mkdir /media/usb4", RUN+="/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/usb4"
ACTION=="remove", SUBSYSTEM=="block", RUN+="/bin/umount /media/usb4", RUN+="/bin/rmdir /media/usb4"
LABEL="automount_exit"
KERNEL!="sdf?", GOTO="automount_exit"
ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/mkdir /media/usb5", RUN+="/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/usb5"
ACTION=="remove", SUBSYSTEM=="block", RUN+="/bin/umount /media/usb5", RUN+="/bin/rmdir /media/usb5"
LABEL="automount_exit"
root@Ubuntu1:/etc/udev/rules.d# shutdown -r now    #重启系统
  3、安装Samba,用于共享目录
  root@Ubuntu1:~# apt-get install samba samba-common
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号