LinuxSir.cn,穿越时空的Linuxsir!

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

已解决 (Fedora 8) 普通用户不能自动挂载usb

[复制链接]
发表于 2008-1-4 08:42:29 | 显示全部楼层 |阅读模式
我的系统是fedora 8,默认安装,当我用普通用户登录时,插入usb不能自动挂载,即使把他加入hal,dbus,avahi组后都不行,最后连加入root组都试过了,还是不行,能够检测到usb设备就是不能自动挂载;后来我用root用户登录试了下,尽然能够自动挂载,郁闷!!
后来我在/etc/udev//rules.d文件夹中加了一条规则100-usb.rules后就能实现自动挂载,但是没法在已挂载图标上右键选择卸载,觉得不太方便,所以想问一下如何使用hal,让普通用户能够自动挂载。

100-usb.rules的内容如下(得自论坛的大大):
KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p /media/%E{ID_MODEL}_%k"
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,umask=000 /dev/%k /media/%E{ID_MODEL}_%k", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mount -t auto -o iocharset=gb2312,utf8,codepage=936,umask=000,rw,noauto,noexec,nodev,noatime /dev/%k /media/%E{ID_MODEL}_%k", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l /media/%E{ID_MODEL}_%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rmdir /media/%E{ID_MODEL}_%k", OPTIONS="last_rule"

/etc/dbus-1/system.d/hal.conf的内容如下:
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- This configuration file specifies the required security policies
       for the HAL to work. -->

  <!-- Only root or user haldaemon can own the HAL service -->
<policy user="haldaemon">    <allow own="org.freedesktop.Hal"/>
  </policy>
  <policy user="root">
   <allow own="org.freedesktop.Hal"/>
  </policy>

  <!-- Allow anyone to invoke methods on the Manager and Device interfaces -->
  <policy context="default">
    <allow send_interface="org.freedesktop.Hal.Manager"/>
    <allow send_interface="org.freedesktop.Hal.Device"/>
    <allow receive_interface="org.freedesktop.Hal.Manager"
           receive_sender="org.freedesktop.Hal"/>
    <allow receive_interface="org.freedesktop.Hal.Device"
           receive_sender="org.freedesktop.Hal"/>

    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
    <allow receive_interface="org.freedesktop.Hal.Device.SystemPowerManagement"
           receive_sender="org.freedesktop.Hal"/>
    <allow receive_interface="org.freedesktop.Hal.Device.LaptopPanel"
           receive_sender="org.freedesktop.Hal"/>
    <allow receive_interface="org.freedesktop.Hal.Device.Volume"
           receive_sender="org.freedesktop.Hal"/>
    <allow receive_interface="org.freedesktop.Hal.Device.Volume.Crypto"
           receive_sender="org.freedesktop.Hal"/>
  </policy>

  <!-- Default policy for the exported interfaces -->
  <policy context="default">
    <deny send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <deny send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
    <deny send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <deny send_interface="org.freedesktop.Hal.Device.Volume"/>
    <deny send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>

  <!-- This will not work if pam_console support is not enabled -->
  <policy at_console="true">
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>

  <!-- You can change this to a more suitable user, or make per-group -->
  <policy group="jackson">
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>

  <policy user="jackson">
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>
</busconfig>

谢谢joint和gecll的帮助,问题终于解决了,只要把consolekit服务打开就行了,但是我要重启一次才能生效,起初就因为没有这样做而没起作用(即使我已用服务配置工具启动了该服务)。
发表于 2008-1-4 09:48:35 | 显示全部楼层
应该打开ConsoleK这个服务吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-4 11:52:17 | 显示全部楼层
Post by joint;1802980
应该打开ConsoleK这个服务吧


先谢谢这位朋友的解答,我试了这个办法,可还是不能自动挂载usb,我开启的全部服务有:acpid,autofs,avahi-daemon,haldaemon,iptables,kudzu,messagebus,network,rsyslog,udev-post,vboxdrv,vboxnet

PS:我已经关闭了selinux了

期待更多的帮助,谢谢
回复 支持 反对

使用道具 举报

发表于 2008-1-4 12:31:13 | 显示全部楼层
ConsoleKit服务没开,这个服务是自动为用户分配权限的
回复 支持 反对

使用道具 举报

发表于 2008-1-4 14:45:50 | 显示全部楼层
haldaemon, messagebus, ConsoleKit,三者都需要,别的无所谓
回复 支持 反对

使用道具 举报

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

本版积分规则

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