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

Спасибо

Phanto
источник
Вы что-нибудь получаете в журналах?
c1tadel1
Где журналы? Я пытался /var/log/messagesбезрезультатно, и нет файла системного журнала.
Phanto
Вы смотрите в правильном месте. Попробуйте "echo 1> / proc / fs / cifs / cifsFYI", чтобы немного увеличить количество сообщений отладки и попробовать dmesg.
c1tadel1
У меня нет /proc/fs/cifs/каталога, поэтому я не могу запустить команду. Я тоже не могу mkdir cifs, даже как root. Сервис работает, но я серьезно не знаю, почему он просто не работает. Возможно, мне придется обратиться в службу поддержки RH.
Phanto
Забудьте место прока. У вас вообще установлен модуль? Запустите это. 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по любой причине. Это смешно, так как нам больше не нужно это делать.
Phanto
Это полезно, но, к сожалению, я не могу настроить точки монтирования, что было первоначальной целью вопроса (и что я пришел сюда, чтобы узнать)
Карлос Рендон
Как интересная разработка, использование этого с устройством EMC (не уверенным модулем) потребовало, чтобы я удалил -N из строки smbclient. Столкнулся с этой проблемой сегодня.
LSD
Кроме того, в файле учетных данных не должно быть пробелов между знаками равенства. Это вызвало кучу ошибок, пока я не узнал об этом. Две разные части документации говорят разные вещи.
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 - удаляет сообщение об ошибке о поддержке номера индекса

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, например, в /etc/auto.test, эти монтирования будут эффективно переопределять эти каталоги в системе. Конечно, это маловероятно, но в целом монтирование не выполняется на корневом уровне.
SLM
Есть ли лучший способ обеспечить монтирование root с помощью автозаполнения? Если это так, пожалуйста, обновите свой ответ или оставьте комментарий, и я могу обновить мой.
Карлос Рендон
1
Пусть монтирование перейдет в / net, скажем, и будет иметь символические ссылки из / test на / net / server / test (или что-то еще). Теперь, когда вы перейдете в / net и ls или что-то еще, он будет монтироваться.
LSD
4

Я только что сделал это на CentOS 5.6 и думаю, что часть вашей проблемы может быть связана с файлом auto.test. В его текущей форме вы создадите точку монтирования / test, а затем под ней - один тест, т. Е. / Test / test. Также вы можете добавить ключ --ghost в строку auto.master следующим образом:

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

Ключ --ghost создает заглушки точек монтирования, даже если данный ресурс не монтируется активно.

Взгляните на эту вики-страницу CentOS wiki and Tricks о способах монтирования общих ресурсов SMB / CIFS.

Советы по монтажу

  • Windows Share = \ 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/&
ОДС
источник
Спасибо за ваш ответ. Пожалуйста, смотрите мой комментарий для lsd.
Phanto
1
Боже мой ... - призрак должен быть по умолчанию. Я на fedora / rhel / centos, он читает карту, но когда я захожу в папку, там ничего нет ... У меня тогда была сумасшедшая идея сделать cd "sharename"это, и он волшебным образом вошел в папку, которая lsговорит, что не существует ... arrgh
Рэй Фосс
-1

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

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

гость
источник
1
Исправлено несколько ошибок форматирования и орфографии. Вы, вероятно, должны указать, как и где разместить этот параметр, используя конфигурацию из вопроса в качестве примера.
Лев