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