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-ディレクトリを実行しても結果は返されません。私はこれらのすべてのガイドをウェブ上でフォローしましたが、それらを理解していないか、またはそれらが正しく機能しないかのどちらかです。

ありがとうございました


ログに何かありますか?
c1tadel1

ログはどこにありますか?私は/var/log/messages無駄にしようとしましたが、syslogファイルはありません。
ファント

あなたは正しい場所を探しています。「echo 1> / proc / fs / cifs / cifsFYI」を試して、デバッグメッセージを少し増やして、dmesgを試してください。
c1tadel1

私は持っていない/proc/fs/cifs/私は、コマンドを実行することはできませんので、ディレクトリを。またmkdir cifs、ルートとしてもできません。サービスは実行されていますが、なぜ機能していないのか真剣に知りません。RHサポートに連絡する必要がある場合があります。
ファント

procの場所を忘れてください。モジュールはインストールされていますか?これを実行します。ls -al / lib / modules / uname -r/ kernel / fs / cifs cifs.koが表示されるはずです
c1tadel1

回答:


9

すでに/etc/auto.smbが存在し、それを使用して、次の行を/etc/auto.masterに追加する必要があります。

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

これで、すべてのcifs共有が/ 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、何らかの理由で情報を配置することでした。これはもう必要ないので面白いです。
ファント

これは便利ですが、残念ながら、マウントポイントをカスタマイズすることはできません。これは、質問の当初の目標でした(そして、私はここに来て調べました)
カルロスレンドン

興味深い開発として、これをEMCデバイス(モジュールではない)で使用するには、smbclient行から-Nを削除する必要がありました。今日、この問題に遭遇しました。
lsd

また、資格情報ファイルには等号の間にスペースがあってはなりません。それが判明するまで、それは多くのエラーを引き起こしました。2つの異なるドキュメントが異なることを述べています。
lsd

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/test slmとして正しく指摘されます)。

これはls /test/test、の内容を表示することを意味します//server/test

/ test-> // server / testの元の目標を達成するには、次のものが必要です。

/etc/auto.master

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

他のいくつかのメモ。次のマウントオプションが便利だと思いました。

rw -読み書き可能にマウントする

noserverino -iノード番号のサポートに関するエラーメッセージを削除

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にマウントし、/ net / the_test_mountを指すシンボリックリンク/ testを作成します。


3
これは、誰かが/ usr / etcを/etc/auto.testなどに追加した場合、これらのマウントがシステム上のこれらのディレクトリを効果的にオーバーライドするという意味で危険です。確かにそれはほとんどありませんが、一般的にマウントはルートレベルでは行われません。
slm

autofsを使用してルートマウントを提供するより良い方法はありますか?もしそうなら、あなたの答えを更新するか、コメントを残してください。私は私のものを更新できます。
カルロス

1
たとえば、マウントを/ netに移動し、/ testから/ net / server / test(またはその他)へのシンボリックリンクを作成します。これで/ netやlsなどにcdするたびに、マウントされます。
lsd

4

CentOS 5.6ボックスでこれを行ったところ、問題の一部はauto.testファイルにある可能性があると思います。現在のフォームでは、/ testマウントポイントを作成し、その下に1つのテスト、つまり/ test / testを作成します。また、次のように--ghostスイッチをauto.master行に追加することもできます。

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

--ghostスイッチは、特定の共有がアクティブにマウントされていない場合でも、マウントポイントのスタブを作成します。

SMB / CIFS共有をマウントする方法については、このCentOS wikiのヒントとコツページをご覧ください

取り付けのヒント

  • 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
レイ・フォス

-1

cifsを使用している場合は、_netdevパラメーターも使用することをお勧めします。

_netdev これは、ファイルシステムがネットワークアクセスを必要とするデバイスにあるためです。これは、ホストシステムでネットワークが有効になるまで、システムがこれらのファイルシステムをマウントしようとするのを防ぐために使用されます。


1
いくつかのフォーマットとスペルミスを修正しました。質問の構成を例として使用して、そのパラメーターをどのように、どこに配置するかをおそらく指摘する必要があります。
レオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.