Сетевые ресурсы · 2 min read · Dec 10, 2025
Как использовать AutoFS для доступа к Windows и Samba общим ресурсам
Доступ к Windows или Samba общим ресурсам с помощью AutoFS
Вы уже установили Linux на своем сетевом настольном ПК, и теперь вы хотите работать с файлами, хранящимися на других ПК в вашей сети. Здесь на помощь приходит autofs. Этот учебник показывает, как настроить autofs для использования CIFS для доступа к Windows или Samba общим ресурсам с настольных ПК на Linux. Он также включает в себя специализированный файл конфигурации.
Если версия autofs 4.0 или новее уже установлена, вы должны найти файлы
/etc/auto.masterи
/etc/auto.smbна вашей системе. В противном случае запустите менеджер пакетов вашего дистрибутива (например, YaST на SuSE, synaptic на Debian или Ubuntu и т.д.) и установите его. Когда вы это сделаете, также установите пакет клиента Samba (ищите smbclient), потому что он нам тоже понадобится. В некоторых дистрибутивах (Ubuntu) нам также нужен пакет smbfs, который содержит утилиты mount.cifs и umount.cifs.
Конфигурация
Если autofs уже установлен, он, вероятно, все еще не настроен и не работает. Предполагая, что ваш дистрибутив Linux содержит ядро Linux 2.6.x, я рекомендую использовать модуль общей интернет-файловой системы (cifs) для доступа к файлам в сети. Пожалуйста, сохраните следующий файл как
/etc/auto.cifsна вашем компьютере. Вам нужны права root (или sudo), чтобы иметь возможность это сделать:
#!/bin/bash
# $Id$
# Этот файл должен быть исполняемым для работы! chmod 755!
key="$1"
# Примечание: создайте файл учетных данных для каждого сервера Windows/Samba в вашей сети
# который требует аутентификации по паролю. Файл должен содержать
# ровно две строки:
# username=user
# password=*****
# Пожалуйста, не используйте пробелы для разделения знака равенства от
# имени учетной записи пользователя или пароля.
credfile="/etc/auto.smb.$key"
# Примечание: используйте cifs вместо smbfs:
mountopts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=user,gid=users"
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
mountopts=$mountopts",credentials=$credfile"
smbclientopts="-A "$credfile
else
smbclientopts="-N"
fi
$SMBCLIENT $smbclientopts -gL $key 2>/dev/null \
| awk -v key="$key" -v opts="$mountopts" -F'|' -- '
BEGIN { ORS=""; first=1 }
/Disk/ { if (first) { print opts; first=0 };
gsub(/ /, "\\ ", $2);
sub(/\$/, "\\$", $2);
print " \\n\t /" $2, "://" key "/" $2 }
END { if (!first) print "\n"; else exit 1 }
'Сделайте этот файл исполняемым с помощью команды:
chmod 755 /etc/auto.cifsЭтот файл является слегка измененной версией файла auto.smb, который обычно поставляется в составе пакета autofs. Вам нужно изменить строку, определяющую mountopts выше, и заменить user на имя вашей личной учетной записи. Теперь вам нужно предоставить autofs учетные данные, необходимые для доступа к общим ресурсам в вашей сети. Для этого создайте файл с именем
/etc/auto.smb.FILESERVERNAMEдля каждого компьютера, к которому вы хотите получить доступ. Конечно, замените FILESERVERNAME на имя компьютера. Заполните эти файлы именем учетной записи пользователя и паролем, необходимыми для доступа к общим ресурсам на компьютере. Содержимое этих файлов должно выглядеть как в следующем примере:
username=user
password=secretИспользуйте команду
chmod 600 /etc/auto.smb.*чтобы защитить информацию о пароле.
Теперь мы должны сказать autofs использовать наш новый файл конфигурации. Используйте команды:
echo "/cifs /etc/auto.cifs --timeout=60" >>/etc/auto.masterи
/etc/init.d/autofs restartВот и все.
Тестирование
Используйте команду
ls -als /cifs/FILESERVERNAME/SHARENAMEчтобы проверить, работает ли это. Если нет, обратитесь к системным журналам (обычно /var/log/messages или /var/log/syslog) для получения сообщений.
Credits: davek за предоставление патча для лучшего экранирования знаков доллара и пробелов в именах общих ресурсов
Get new posts in your inbox
No spam. Unsubscribe anytime.