使用autofs挂载CIFS共享


12

我有一个运行RHEL 5.5的系统,并且正在尝试使用将Windows共享安装在服务器上autofs。(由于网络在启动时尚未准备就绪,所以我不想使用fstab。)我可以手动安装共享,但是autofs不能安装它们。

以下是我正在使用的文件:

在末尾/etc/auto.master,我有:

## Mount this test share:
/test    /etc/auto.test    --timeout=60

在中/etc/auto.test,我有:

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

然后,我重新启动autofs服务。

但是,这不起作用。 ls-ing目录不会返回任何结果。我已经按照网络上的所有这些指南进行操作,或者我听不懂它们,或者只是工作而已。

谢谢


您在日志中得到了什么吗?
c1tadel1 2011年

日志在哪里?我尝试/var/log/messages无济于事,并且没有syslog文件。
潘托2011年

您在寻找正确的位置。尝试使用“ echo 1> / proc / fs / cifs / cifsFYI”来增加调试信息,并尝试dmesg。
c1tadel1 2011年

我没有/proc/fs/cifs/目录,所以无法运行命令。我也不能mkdir cifs,即使是root。该服务正在运行,但是我真的不知道为什么它不起作用。我可能需要联系RH支持。
潘托2011年

忘记proc位置。您是否安装了模块?运行这个。ls -al / lib / modules / uname -r/ kernel / fs / cifs,您应该看到cifs.ko
c1tadel1 2011年

Answers:


9

应该已经有一个/etc/auto.smb,使用它,并将以下行添加到/etc/auto.master中:

/cifs   /etc/auto.smb --timeout=60

现在,所有CIF份额都将显示在/ cifs下:

ls /cifs/<server>

将显示所有可用的份额。您可能需要在/etc/auto.smb中放置一些选项以特定模式进行挂载。我在某个地方找到了一个auto.smb,并对其进行了修改以使其完全符合要求:

#!/bin/bash
# $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
# This file must be executable to work! chmod 755!

key="$1"
credfile="/etc/auto.smb.$key"

opts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=eng,gid=eng"
smbclientopts=""

for P in /bin /sbin /usr/bin /usr/sbin
do
    if [ -x $P/smbclient ]
    then
        SMBCLIENT=$P/smbclient
        break
    fi
done

[ -x $SMBCLIENT ] || exit 1

if [ -e "$credfile" ]
then
    opts=$opts",credentials=$credfile"
    smbclientopts="-A "$credfile
else
    smbclientopts="-N"
fi

$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
    BEGIN   { ORS=""; first=1 }
    /Disk/  {
              if (first)
                  print opts; first=0
              dir = $2
              loc = $2
              # Enclose mount dir and location in quotes
              # Double quote "$" in location as it is special
              gsub(/\$$/, "\\$", loc);
              print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
            }
    END     { if (!first) print "\n"; else exit 1 }
'

这将做您想要的。我自己用过的。


谢谢。我完全忘记了这个问题。我实际上联系了Red Hat支持,您提到的选项中提到的选项都可以使用。关键是auto.misc无论出于何种原因放置信息。这很有趣,因为我们甚至不再需要这样做。
潘多

这很有用,但不幸的是我无法自定义安装点,这是问题的初衷(也是我来这里查找的内容)
Carlos Rendon

作为一个有趣的发展,将其与EMC设备(不确定模块)一起使用要求我从smbclient行中删除-N。今天遇到了这个问题。
lsd 2015年

同样,凭据文件在等号之间不能有空格。直到我发现这一点,才导致了很多错误。两种不同的文档说了不同的话。
lsd 2015年

8

由于我整个上午都在调试相同的问题。让我解释一下上面发生的事情。

/etc/auto.master

## Mount this test share:
/test    /etc/auto.test    --timeout=60

这意味着我想在此处安装一些东西,/test有关详细信息,请阅读/etc/auto.test

/etc/auto.test

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

这意味着作为auto.master中指定内容的子文件夹,请使用以下信息进行测试安装。(即安装将/test/test如slm正确指出)。

这意味着ls /test/test将显示内容//server/test

为了实现/ test-> // server / test的原始目标,您需要执行以下操作:

/etc/auto.master

## Mount this test share:
/    /etc/auto.test    --timeout=60

其他几个注意事项。我发现以下安装选项很有用。

rw -安装它读/写

noserverino -删除有关inode号支持的错误消息

credentials=[credential file]-这使您可以创建一个包含凭据的单独文件。它具有以下格式:

username=[windows username, domain can be included as well]
password=[windows password]

编辑-2013-06-17 13:28 PM GMT-8

注释中的slm指出,挂载到文件系统的根目录可能很危险。注释中的lsd建议一种解决方法,即创建一个从文件系统根目录到将要挂载的其他位置的符号链接,该符号链接不会与常见的东西重叠。例如,如果您想将/ test挂载,则实际上是将东西挂载到/ net / the_test_mount,然后创建一个符号链接/ test指向/ net / the_test_mount


3
从某种意义上说,这是危险的,如果有人将usr等添加到/etc/auto.test中,则这些挂载将有效地覆盖系统上的那些目录。当然,这是极不可能的,但一般来说,挂载不是在根级别进行的。
slm

有没有更好的方法可以使用autofs提供根安装?如果是这样,请更新您的答案或发表评论,我可以更新我的。
卡洛斯·雷登

1
比如说让坐骑去/ net,并有从/ test到/ net / server / test(或其他)的符号链接。现在,每当您将CD插入/ net和ls或其他任何目录时,它将挂载。
2013年

4

我只是在CentOS 5.6机器上做的,我认为部分问题可能出在您的auto.test文件上。在当前形式下,您将创建一个/ test安装点,然后在其下创建一个测试步骤,即/ test / test。另外,您可能希望将--ghost开关添加到auto.master行中,如下所示:

/test    /etc/auto.test    --timeout=60 --ghost

--ghost开关会创建挂载点存根,即使未主动挂载给定的共享也是如此。

查看此CentOS Wiki的“技巧和窍门”页面,了解如何安装SMB / CIFS共享。

安装提示

  • Windows共享= \ mysmb \ share1
  • Unix目录 = / test / dir1

想法#1

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
dir1         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir1
dir2         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir2

想法2

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
*            -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/&

谢谢您的回复。请参阅我对lsd的评论。
潘多

1
天哪... --ghost应该是默认值。我在Fedora / RHEL / CentOS的读取地图,但是当我去里面的文件夹,无所不有......然后我不得不做的疯狂的想法cd "sharename",并奇迹般地进入该文件夹ls说,不存在... arrgh
Ray Foss

-1

如果您使用的是CIF,建议您也使用_netdev参数。

_netdev 这是因为文件系统位于需要网络访问的设备上,用于防止系统尝试在主机系统上启用网络之前挂载这些文件系统。


1
更正了一些格式和拼写错误。您可能也应该使用问题中的配置指出如何以及在何处放置该参数作为示例。
狮子座
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.