Как подключиться к samba из mac os

Обновлено: 01.07.2024

Каждый раз для подключения к самбе надо изрядно потыкать мышкой: Finder -> Подключение к серверу -> ввод имени сервера (-> первый раз ещё и пароль спросят) -> выбор папок, которые нужно подключить -> Ok. Потом, если захочется делать бэкап в примонтированную по самбе директорию, прийдётся ещё и образ .sparsebundle создавать, и монтировать ещё и его. Всё это, возможно, и не сильно напрягает, если делать раз в пару недель на стационарном ПК, который постоянно находится в одной и той же сети и не выключается так же, как и сервер. Но когда это надо делать после каждого включения/пробуждения ноутбука — это ни в какие ворота не лезет. Плюс к этому выяснилось, что если не отмонтировать разделы и сменить сеть (скажем прийти к соседу в гости), то система изрядно виснет после выхода из сна, ибо не находит сервер с шарами, а, в редких случаях, ещё и в kernel panic случается. Всё это сильно омрачило радость поднятия сервера и мечты о том что больше я даже вспоминать не буду о бэкапах, пока они мне не понадобятся (тьфу тьфу тьфу). Было решено, что процесс нужно автоматизировать.

На первых порах

В попыхах были нагуглены способы монтирования самбы и тут же родился маленький скрипт из парочки идентичных команд следующего вида:

Так же было найдено как сделать аттач образа для TimeMachine:
hdutil оказался более смышлёным и создание папок не потреловал.
Первая версия скрипта была готова.

Безопасность

Очень напрягало указание пароля в явном виде при монтировании. Почитав ман для mount_smbfs узнал про nsmb.conf. Но идея так же не шибко понравилась, так как всё равно пароль хранится где-то в файле в открытом виде. Тут же вспомнил, что через GUI пароль спрашивают единожды, а далее вытаскивают из keychain. Захотелось использовать её. Оказалось автоматически, как если бы взял nsmb.conf и дописал ключик -N к mount_smbfs, пароль подставляться не будет (чуда не произошло). Прийдёся его сначала получать через security и затем передавать в нужное место. Для сих целей была нагуглена и переделана под свои нужды функция:

После этого явное указание пароля было заменено на:

Паранойя отступила, но любознательность и перфекционизм остались, поэтому дело продолжилось.

Улучшения и расширение

Захотелось сделать один скрипт для монтирование всего и сразу, да так сделать, чтобы он расширяемый было и повторять код много раз не пришлось, плюс чтобы смотрел что уже в системе примонтировано и второй раз монтировать не пытался. Сказано — сделано. Опишу всё по-порядку.

Для определения примонтированости, на первом этапе, был использован самый «топорный» метод

Но сразу же стало понятно, что директория может и присутствовать, но не являться точкой монтирования для чего-либо. Поэтому сделал функцию для проверки:
Метод тоже не идеален, но уже гораздо лучше, нежели простая проверка наличия директории.

То же самое было сделано и для проверки образа бэкапа:

После некоторых раздумий и чтения форумов метод раздулся и стал сразу проверять примонтирован ли образ, и, если нет, то монтировать его.

Далее нужна была функция для выполнения проверок и автоматизации по монтированию любого количества шар с сервера. Вот какой она получилась:

Внимательный читатель заметит, что во-первых: можно и имя сервера передавать в параметрах к функции, а не хардкодить его, а во-вторых: в скрипте встречается неизвестная функция is_samba_exist.

Отвечаю по-порядку: 3-й параметр для функции было делать лень, ибо пока второго сервра с самбой не планируется; функция is_samba_exist имеет следующий вид:
Несложно догадаться, что функция проверяет наличие шары с указанным именем в текущей сети.

Таким образом основная часть скрипта стала простой, понятной и расширяемой:

На последок, по образу и подобию вышеописанного скрипта, был создан ещё один, но уже для отмонтирования сразу всего:

Вот и всё. Дальше скрипты были унесены к своим собратьям в

/.script. Получили короткие алиасы в .bash_profile и стали помогать мне с самбой.

Перспективы

В будущем, когда дойдут руки, хочется подружить скрипты со SleepWatcher, дабы выполнялись они после выхода из сна и перед уходом в него же. То есть, чтобы совсем ничего не надо было делать руками и автоматизация стала полной.

Каждый раз для подключения к самбе надо изрядно потыкать мышкой: Finder -> Подключение к серверу -> ввод имени сервера (-> первый раз ещё и пароль спросят) -> выбор папок, которые нужно подключить -> Ok. Потом, если захочется делать бэкап в примонтированную по самбе директорию, прийдётся ещё и образ .sparsebundle создавать, и монтировать ещё и его. Всё это, возможно, и не сильно напрягает, если делать раз в пару недель на стационарном ПК, который постоянно находится в одной и той же сети и не выключается так же, как и сервер. Но когда это надо делать после каждого включения/пробуждения ноутбука — это ни в какие ворота не лезет. Плюс к этому выяснилось, что если не отмонтировать разделы и сменить сеть (скажем прийти к соседу в гости), то система изрядно виснет после выхода из сна, ибо не находит сервер с шарами, а, в редких случаях, ещё и в kernel panic случается. Всё это сильно омрачило радость поднятия сервера и мечты о том что больше я даже вспоминать не буду о бэкапах, пока они мне не понадобятся (тьфу тьфу тьфу). Было решено, что процесс нужно автоматизировать.

На первых порах

В попыхах были нагуглены способы монтирования самбы и тут же родился маленький скрипт из парочки идентичных команд следующего вида:

Так же было найдено как сделать аттач образа для TimeMachine:
hdutil оказался более смышлёным и создание папок не потреловал.
Первая версия скрипта была готова.

Безопасность

Очень напрягало указание пароля в явном виде при монтировании. Почитав ман для mount_smbfs узнал про nsmb.conf. Но идея так же не шибко понравилась, так как всё равно пароль хранится где-то в файле в открытом виде. Тут же вспомнил, что через GUI пароль спрашивают единожды, а далее вытаскивают из keychain. Захотелось использовать её. Оказалось автоматически, как если бы взял nsmb.conf и дописал ключик -N к mount_smbfs, пароль подставляться не будет (чуда не произошло). Прийдёся его сначала получать через security и затем передавать в нужное место. Для сих целей была нагуглена и переделана под свои нужды функция:

После этого явное указание пароля было заменено на:

Паранойя отступила, но любознательность и перфекционизм остались, поэтому дело продолжилось.

Улучшения и расширение

Захотелось сделать один скрипт для монтирование всего и сразу, да так сделать, чтобы он расширяемый было и повторять код много раз не пришлось, плюс чтобы смотрел что уже в системе примонтировано и второй раз монтировать не пытался. Сказано — сделано. Опишу всё по-порядку.

Для определения примонтированости, на первом этапе, был использован самый «топорный» метод

Но сразу же стало понятно, что директория может и присутствовать, но не являться точкой монтирования для чего-либо. Поэтому сделал функцию для проверки:
Метод тоже не идеален, но уже гораздо лучше, нежели простая проверка наличия директории.

То же самое было сделано и для проверки образа бэкапа:

После некоторых раздумий и чтения форумов метод раздулся и стал сразу проверять примонтирован ли образ, и, если нет, то монтировать его.

Далее нужна была функция для выполнения проверок и автоматизации по монтированию любого количества шар с сервера. Вот какой она получилась:

Внимательный читатель заметит, что во-первых: можно и имя сервера передавать в параметрах к функции, а не хардкодить его, а во-вторых: в скрипте встречается неизвестная функция is_samba_exist.

Отвечаю по-порядку: 3-й параметр для функции было делать лень, ибо пока второго сервра с самбой не планируется; функция is_samba_exist имеет следующий вид:
Несложно догадаться, что функция проверяет наличие шары с указанным именем в текущей сети.

Таким образом основная часть скрипта стала простой, понятной и расширяемой:

На последок, по образу и подобию вышеописанного скрипта, был создан ещё один, но уже для отмонтирования сразу всего:

Вот и всё. Дальше скрипты были унесены к своим собратьям в

/.script. Получили короткие алиасы в .bash_profile и стали помогать мне с самбой.

Перспективы

В будущем, когда дойдут руки, хочется подружить скрипты со SleepWatcher, дабы выполнялись они после выхода из сна и перед уходом в него же. То есть, чтобы совсем ничего не надо было делать руками и автоматизация стала полной.

Чтобы разрешить пользователям Windows подключаться к Вашему компьютеру Mac, включите общий доступ к файлам и общий доступ с помощью SMB.

Настройка общего доступа к файлам на Mac

На Mac выберите меню Apple



> «Системные настройки», затем нажмите «Общий доступ» .

Установите флажок «Общий доступ к файлам», затем нажмите «Параметры».

Установите флажок перед «Предоставлением общего доступа к файлам и папкам с помощью SMB».

В списке «Общий доступ Windows» установите флажок рядом с учетной записью пользователя, которая будет использоваться для предоставления общего доступа к файлам с компьютеров с Windows, а затем введите пароль для этого пользователя и нажмите «OK».

Выберите «Вид» > «Сеть», выберите свое активное подключение, затем нажмите «Дополнения».

Выберите вкладку WINS, затем введите имя рабочей группы, используемой на компьютере Windows.

Если имя рабочей группы неизвестно, на компьютере Windows откройте «Панель управления» > «Система и безопасность» > «Система». (На компьютерах Windows обычно используется имя WORKGROUP или MSHOME.)

Нажмите «OK», затем — «Применить».

Предоставление информации, которая необходима пользователям Windows

Для подключения к компьютеру Mac пользователям Windows необходимы следующие данные: сетевой адрес компьютера Mac, а также имя пользователя и пароль для входа в систему Mac.

Чтобы посмотреть сетевой адрес своего Mac, выберите меню Apple



> «Системные настройки», нажмите «Общий доступ», затем выберите «Общий доступ к файлам» . Адрес отображается под индикатором «Общий доступ к файлам: Вкл.» и имеет следующий вид: smb://17.212.167.33/.


Создайте учетную запись на Вашем компьютере Mac для каждого пользователя Windows. Чтобы создать учетные записи, выберите меню Apple > «Системные настройки», затем нажмите «Пользователи и группы» .

Если Вы хотите использовать учетную запись, существовавшую до установки новейшей версии macOS, необходимо сбросить пароль учетной записи в настройках пользователей и групп.

Пароли учетных записей, используемых для общего доступа с компьютеров Windows, могут храниться менее безопасным способом, поэтому отключайте учетную запись, когда она не используется. До отключения «Общего доступа Windows» отключите все созданные Вами учетные записи. В ином случае уровень безопасности паролей станет еще ниже.

Можно предоставить общий доступ к файлам и папкам другим пользователям в Вашей сети. Можно предоставить доступ всем пользователям ко всему компьютеру Mac или разрешить определенным пользователям обращаться к определенным папкам.

Настройка общего доступа к файлам

На Mac выберите меню Apple



> «Системные настройки», затем нажмите «Общий доступ» .

Установите флажок «Общий доступ к файлам».


Чтобы разрешить общий доступ к определенной папке, нажмите кнопку «Добавить» внизу списка «Папки общего доступа», найдите папку, выберите ее, затем нажмите «Добавить».


По умолчанию папки «Общие» всех пользователей, имеющих учетную запись на Вашем компьютере Mac, открыты для общего доступа. Чтобы закрыть общий доступ к папке, выберите эту папку в списке «Папки общего доступа» и нажмите кнопку «Удалить» .

Нажмите имя папки, удерживая нажатой клавишу Control, выберите «Дополнительные параметры», выберите требуемые параметры и нажмите «OK».

По умолчанию любой пользователь, указанный в разделе настроек «Пользователи и группы» на Вашем компьютере Mac, может подключаться к Вашему компьютеру Mac по сети. Пользователь с учетной записью администратора получает доступ ко всему компьютеру Mac.


Чтобы разрешить доступ к папке только определенным пользователям или группам, выберите эту папку в списке «Папки общего доступа», нажмите кнопку «Добавить» внизу списка «Пользователи», затем выполните одно из следующих действий:

Добавление пользователей и групп из списка всех пользователей Вашего Mac. Выберите «Пользователи и группы» в списке слева, выберите одно или несколько имен в списке справа, затем нажмите «Выбрать».

Добавление пользователей и групп из списка всех пользователей в сети. Выберите «Пользователи сети» или «Сетевые группы» в списке слева, выберите одно или несколько имен в списке справа, затем нажмите «Выбрать».

Добавление пользователя из списка контактов и создание для него учетной записи, предназначенной только для общего доступа. Выберите «Контакты» в списке слева, выберите имя в списке справа, нажмите «Выбрать», задайте пароль, затем нажмите «Создать учетную запись».

Чтобы указать уровень доступа пользователя, выберите пользователя в списке «Пользователи», затем нажмите всплывающее меню рядом с именем пользователя и выберите один из следующих вариантов.

Чтение и запись. Пользователь видит файлы в папке и может копировать файлы в папку и из нее.

Только чтение. Пользователь может просматривать содержимое папки, однако не может копировать в нее файлы.

Только запись (почтовый ящик). Пользователь может копировать файлы в папку, однако не может просматривать ее содержимое.

Нет доступа. Пользователь не видит файлы в папке и не может копировать файлы из нее.

Настройка дополнительных параметров общего доступа к файлам

Используйте дополнительные параметры общего доступа к файлам, чтобы задать протокол и другие настройки для каждого общего файла.

На Mac выберите меню Apple



> «Системные настройки», нажмите «Общий доступ» , затем выберите «Общий доступ к файлам».

Нажмите имя общей папки, удерживая нажатой клавишу Control, и выберите «Дополнительные параметры».

Выберите расширенные параметры.

Разрешить доступ гостям.

Разрешить только зашифрованные подключения по протоколу SMB.

Использовать как папку для резервного копирования Time Machine.

Гости могут получать доступ к общим папкам на Вашем Mac. Чтобы отключить гостевой доступ, снимите флажок «Разрешить гостям подключаться к общим папкам» в панели «Гость» в настройках пользователей и групп. См. раздел Настройка обычных, гостевых пользователей и групп.

Читайте также: