web-dev-qa-db-ja.com

autofsでCIFS共有をマウントする

RHEL 5.5を実行しているシステムがあり、autofsを使用してサーバーにWindows共有をマウントしようとしています。 (起動時にネットワークの準備ができていないため、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しても結果は返されません。私はこれらすべてのガイドをウェブでフォローしてきましたが、それらを理解していないか、they.just.don't.workです。

ありがとうございました

12
Phanto

/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 }
'

これはあなたが望むことをします。自分で使ったことがあります。

9
lsd

私は午前中ずっとこの同じ問題をデバッグしていたので。上記で何が起こったかを説明しましょう。

/ 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で指定されたもののサブフォルダーとして、以下の情報を使用してテストをマウントしてください。 (つまりslmが正しく指摘されているため、マウントは/test/testになります)。

つまり、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を作成します。

8
Carlos Rendon

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

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

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

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

取り付けのヒント

  • Windows共有=\mysmb\share1
  • Unix Dir。 =/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/&
4
slm