LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3655|回复: 27

[已解决]普通用户不可以自动挂载U盘?

[复制链接]
发表于 2007-2-23 08:34:50 | 显示全部楼层 |阅读模式
安装置顶贴里的方法, 安装了HAL 和 DBUS ,并且打开了服务~~~~

但是一个很诡异的问题是只有跟用户可以使用~ 普通用户,会出现无法挂载的错误

Cannot mount volume.
Error org.freedesktop.DBus.Error.AccessDenied.

应该怎么解决这个问题?
发表于 2007-2-23 18:13:26 | 显示全部楼层
一段udev规则,在/etc/udev/rules.d/ 下创建一个udisk.rules 如下

  1. KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"
  2. ACTION=="add", KERNEL=="sd[b-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"
  3. ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p /mnt/%E{ID_MODEL}_%k"
  4. ACTION=="add", KERNEL=="sd[b-z][0-9]", PROGRAM=="/sbin/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,noexec,nodev,noatime,iocharset=gb2312,utf8,codepage=936,uid=1000,gid=1000 /dev/%k /mnt/%E{ID_MODEL}_%k", OPTIONS="last_rule"
  5. ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mount -t auto -o iocharset=gb2312,utf8,codepage=936,uid=1000,gid=1000,rw,noauto,noexec,nodev,noatime /dev/%k /mnt/%E{ID_MODEL}_%k", OPTIONS="last_rule"
  6. ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l /mnt/%E{ID_MODEL}_%k"
  7. ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rmdir /mnt/%E{ID_MODEL}_%k", OPTIONS="last_rule"
复制代码


PS:从rock哪里弄来的,哈哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-23 23:42:23 | 显示全部楼层
谢谢楼上~~~

刚刚看了看HAL.conf文件~
发现一个更简单的方法~~就是在hal.conf里
添加
  1. <policy group="hooxin">//hooxin换成用户的组,或者用user属性~
  2.     <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
  3.     <allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
  4.     <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
  5.     <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
  6.     <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  7.   </policy>
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-2-24 00:42:38 | 显示全部楼层
把用户加入storage组就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-24 01:48:52 | 显示全部楼层
刚刚~看了看~~
现在是中文问题了~~
还是想用hal 的fdi文件~~~~
如果不行,
就用udev实现吧~~

不过知道的朋友还请报一声~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-24 09:17:56 | 显示全部楼层
这是我的配置文件~~
发现修改后还是不可以~
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <deviceinfo version="0.2">
  3.   <device>
  4.     <match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
  5.       <append key="info.callouts.add" type="strlist">hal-storage-cleanup-all-mountpoints</append>
  6.     </match>
  7.     <match key="storage.media_check_enabled" bool="true">
  8.       <append key="info.addons" type="strlist">hald-addon-storage</append>
  9.     </match>
  10.     <match key="volume.is_disc" bool="true">
  11.       <match key="volume.disc.has_audio" bool="true">
  12.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
  13.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
  14.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  15.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  16.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
  17.       </match>
  18.       <match key="volume.disc.is_blank" bool="true">
  19.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
  20.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
  21.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  22.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  23.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
  24.       </match>
  25.     </match>
  26.     <!-- this is to be able to mount media in drives we cannot poll, e.g. IDE Zip Drives and PC style floppy drives -->
  27.     <match key="storage.media_check_enabled" bool="false">
  28.       <match key="storage.no_partitions_hint" bool="true">
  29.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
  30.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
  31.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
  32.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
  33.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
  34.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
  35.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  36.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  37.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
  38.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
  39.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  40.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  41.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
  42.         <!-- allow these mount options for all file systems -->
  43.         <append key="volume.mount.valid_options" type="strlist">ro</append>
  44.         <append key="volume.mount.valid_options" type="strlist">sync</append>
  45.         <append key="volume.mount.valid_options" type="strlist">dirsync</append>
  46.         <append key="volume.mount.valid_options" type="strlist">noatime</append>
  47.         <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
  48.         <append key="volume.mount.valid_options" type="strlist">noexec</append>
  49.         <append key="volume.mount.valid_options" type="strlist">quiet</append>
  50.         <append key="volume.mount.valid_options" type="strlist">remount</append>
  51.         <append key="volume.mount.valid_options" type="strlist">exec</append>
  52.         <!-- As this is removable media give some leeway -->
  53.         <append key="volume.mount.valid_options" type="strlist">flush</append>
  54.         <append key="volume.mount.valid_options" type="strlist">utf8</append>
  55.         <append key="volume.mount.valid_options" type="strlist">shortname=</append>
  56.         <append key="volume.mount.valid_options" type="strlist">codepage=</append>
  57.         <append key="volume.mount.valid_options" type="strlist">iocharset=</append>
  58.         <append key="volume.mount.valid_options" type="strlist">umask=</append>
  59.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  60.       </match>
  61.     </match>
  62.     <match key="volume.fsusage" string="filesystem">
  63.       <!-- Here follow volumes we specifically want to ignore - it is the -->
  64.       <!-- responsibility of software higher in the stack (e.g. gnome-vfs) -->
  65.       <!-- amd mount programs (e.g. Mount() on HAL) to respect volume.ignore -->
  66.       <merge key="volume.ignore" type="bool">false</merge>
  67.       <match key="@block.storage_device:storage.removable" bool="false">
  68.         <!-- Should always ignore Apple Bootstrap partitions (it would be -->
  69.         <!-- a security hole to mount it) - TODO: should use the bootable -->
  70.           <!-- flag from the Mac partition table instead -->
  71.         <match key="volume.fstype" string="hfs">
  72.           <match key="volume.label" string="bootstrap">
  73.                 <merge key="volume.ignore" type="bool">true</merge>
  74.           </match>
  75.         </match>
  76.        
  77.         <!-- HP ships desktops with a recovery partition -->
  78.         <match key="volume.fstype" string="vfat">
  79.           <match key="volume.label" string="HP_RECOVERY">
  80.             <merge key="volume.ignore" type="bool">true</merge>
  81.           </match>
  82.         </match>
  83.         <!-- EFI firmware partitions -->
  84.         <match key="volume.fstype" string="vfat">
  85.           <match key="volume.label" string="EFI">
  86.             <merge key="volume.ignore" type="bool">true</merge>
  87.           </match>
  88.         </match>
  89.        
  90.       </match>
  91.       <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
  92.       <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
  93.       <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
  94.       <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
  95.       <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
  96.       <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
  97.       <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  98.       <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  99.       <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
  100.       <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
  101.       <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  102.       <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  103.       <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
  104.       <!-- allow these mount options for all file systems -->
  105.       <append key="volume.mount.valid_options" type="strlist">ro</append>
  106.       <append key="volume.mount.valid_options" type="strlist">sync</append>
  107.       <append key="volume.mount.valid_options" type="strlist">dirsync</append>
  108.       <append key="volume.mount.valid_options" type="strlist">noatime</append>
  109.       <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
  110.       <append key="volume.mount.valid_options" type="strlist">noexec</append>
  111.       <append key="volume.mount.valid_options" type="strlist">quiet</append>
  112.       <append key="volume.mount.valid_options" type="strlist">remount</append>
  113.       <append key="volume.mount.valid_options" type="strlist">exec</append>
  114.       <!-- allow these mount options for vfat -->
  115.       <match key="volume.fstype" string="vfat">
  116.         <append key="volume.mount.valid_options" type="strlist">flush</append>
  117.         <append key="volume.mount.valid_options" type="strlist">utf8</append>
  118.         <append key="volume.mount.valid_options" type="strlist">shortname=</append>
  119.         <append key="volume.mount.valid_options" type="strlist">codepage=</append>
  120.         <append key="volume.mount.valid_options" type="strlist">iocharset=utf-8</append>
  121.         <append key="volume.mount.valid_options" type="strlist">umask=000</append>
  122.         <append key="volume.mount.valid_options" type="strlist">dmask=</append>
  123.         <append key="volume.mount.valid_options" type="strlist">fmask=</append>
  124.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  125.       </match>
  126.       <!-- allow these mount options for hfs -->
  127.       <match key="volume.fstype" string="hfs">
  128.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  129.         <append key="volume.mount.valid_options" type="strlist">force</append>
  130.       </match>
  131.       <!-- allow these mount options for hfsplus -->
  132.       <match key="volume.fstype" string="hfsplus">
  133.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  134.         <append key="volume.mount.valid_options" type="strlist">force</append>
  135.       </match>
  136.       <!-- allow these mount options for ntfs -->
  137.       <match key="volume.fstype" string="ntfs">
  138.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  139.         <append key="volume.mount.valid_options" type="strlist">gid=</append>
  140.         <append key="volume.mount.valid_options" type="strlist">umask=000</append>
  141.       </match>
  142.       <!-- allow these mount options for ext3 -->
  143.       <match key="volume.fstype" string="ext3">
  144.         <append key="volume.mount.valid_options" type="strlist">data=</append>
  145.       </match>
  146.       <!-- udf -->
  147.       <match key="volume.fstype" string="udf">
  148.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  149.         <append key="volume.mount.valid_options" type="strlist">umask=</append>
  150.       </match>
  151.       <!-- iso9660 -->
  152.       <match key="volume.fstype" string="iso9660">
  153.         <append key="volume.mount.valid_options" type="strlist">utf8</append>
  154.         <append key="volume.mount.valid_options" type="strlist">uid=</append>
  155.         <append key="volume.mount.valid_options" type="strlist">mode=</append>
  156.         <append key="volume.mount.valid_options" type="strlist">iocharset=</append>
  157.       </match>
  158.       <!-- allow these unmount options -->
  159.       <append key="volume.unmount.valid_options" type="strlist">lazy</append>
  160.     </match>
  161.     <!-- make sure we export Eject on discs where we don't recognize the file system -->
  162.     <match key="volume.is_disc" bool="true">
  163.       <match key="volume.fsusage" string="">
  164.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
  165.         <append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
  166.         <append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
  167.         <append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
  168.         <append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
  169.       </match>
  170.     </match>
  171.     <match key="storage.requires_eject" bool="true">
  172.         <!-- storage Eject causes eject on each volume on this storage -->
  173.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
  174.         <append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">Eject</append>
  175.         <append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
  176.         <append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
  177.         <append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-eject</append>
  178.         <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
  179.         <append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">CloseTray</append>
  180.         <append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
  181.         <append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
  182.         <append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-closetray</append>
  183.     </match>
  184.   </device>
  185.   <!--device>
  186.   <match key="volume.fsusage" string="filesystem">
  187.     <match key="volume.fstype" string="vfat">
  188.      <merge key="volume.policy.should_mount" type="bool">true</merge>
  189.      <merge key="volume.policy.mount_option.auto" type="bool">true</merge>
  190.      <merge key="volume.policy.mount_option.user" type="bool">true</merge>
  191.      <merge key="volume.policy.mount_option.rw" type="bool">true</merge>
  192.      <merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
  193.     </match>
  194.   </match>
  195. </device>
  196. <device>
  197.   <match key="volume.fsusage" string="filesystem">
  198.     <match key="volume.fstype" string="ntfs">
  199.      <merge key="volume.policy.should_mount" type="bool">true</merge>
  200.      <merge key="volume.policy.mount_option.auto" type="bool">true</merge>
  201.      <merge key="volume.policy.mount_option.user" type="bool">true</merge>
  202.      <merge key="volume.policy.mount_option.umask=000" type="bool">true</merge>
  203.      <merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
  204.     </match>
  205.   </match>
  206. </device-->
  207. </deviceinfo>
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-2-24 10:10:09 | 显示全部楼层
把用户加入storage组就可以了。
That's it, don't need to make things harder.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-24 11:24:07 | 显示全部楼层
最好还是想通过HAL的配置来搞定中文的问题~
不懂的是~ ,为什么在mount option 里的选项他不执行~
回复 支持 反对

使用道具 举报

发表于 2007-2-24 12:03:33 | 显示全部楼层
Mount产生的乱码问题最烦,我一般是手动编译内核,把utf8和cp936等编进native language support
回复 支持 反对

使用道具 举报

发表于 2007-2-26 12:27:17 | 显示全部楼层
加入hal组就行了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表