Назад | Перейти на главную страницу

Смонтируйте общий ресурс CIFS с помощью autofs

У меня есть система под управлением 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 каталога не возвращает никаких результатов. Я следил за всеми этими руководствами в сети, и я либо не понимаю их, либо они просто не работают.

Спасибо

Там уже должен быть /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 }
'

Это сделает то, что вы хотите. Сам пользовался.

Поскольку я потратил все утро на отладку этой же проблемы. Позвольте мне объяснить, что произошло выше.

/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

Я только что сделал это на 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 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/&

Если вы используете cifs, рекомендуется также использовать _netdev параметр.

_netdev это потому, что файловая система находится на устройстве, которому требуется доступ к сети, это используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока сеть не будет включена в хост-системе.