Почему Mac SMB Connect не удается войти в систему с Cli, но работает с Finder и гостевой учетной записи?

8

Итак, у меня есть один Mac (Yosemite), использующий папку, доступную только для чтения многим пользователям, и гостевой учетной записи разрешено монтировать / открывать эту папку, чтобы пользователи могли загружать что угодно Я подключаюсь к общему ресурсу как менеджер с другим mac (Sierra). Это работает, когда я запускаю в качестве гостя пользователя из командной строки:

mount_smbfs //guest@macbook-pro.local/Files /tmp/files
ls /tmp/files
fileA    fileB

или если я подключусь из Finder в качестве гостя:

click MacBook-Pro -> Connect As -> Guest -> Connect
double click Files
ls /Volumes/Files
fileA    fileB

Теперь на Mac есть одна учетная запись администратора (Yosemite). Я хочу смонтировать / получить доступ к этой папке с правами чтения и записи, но все попытки смонтировать папку с логином завершаются неудачно, если мне требуется имя пользователя из командной строки.

mount_smbfs //admin@macbook-pro.local/Files /tmp/files
Password for MacBook-pro.local:
mount_smbfs: server rejected the connection: Authentication error

Однако, если я соединюсь с Finder:

click MacBook-Pro -> Connect As -> Registered User
Username: admin
Password: password
 -> Connect
double click Files
ls /Volumes/Files
fileA    fileB

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

Share files and folders using SMB
  Number of users connected: 1

Можете ли вы догадаться, почему соединение отклоняется, когда я пытаюсь подключиться через smb к командной строке, используя учетную запись, требующую аутентификации?

редактировать

Да, AFP connect работает в любом случае, включая учетную запись, требующую пароль. Например:

mount_afp -i afp://admin@macbook-pro.local/Files /tmp/files
Password: 
ls /tmp/files
fileA    fileB

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

sudo nano /etc/nsmb.conf
   [default]
   minauth=none
^c+X
mount_smbfs smb://admin:password@macbook-pro.local/Files /tmp/files
mount_smbfs: server rejected the connection: Authentication error

EDIT2

Вот некоторые файлы журналов на случай, если кто-нибудь сможет получить от них информацию об этой проблеме. (Извините, что опубликовал журналы вне сайта, но в успешных журналах было слишком много текста.)

Во-первых, клиентский журнал подключения к MacBook-Pro.local через SMB через Finder с использованием потока так:

Click MacBook-Pro
Connect As: Registered User
Name: admin
Password: password
Connect

Создает вывод журнала следующим образом в консоли:

http://paste.ubuntu.com/23308183/

Теперь список всех общих папок доступен для администратора, конечно. Таким образом, щелкнув папку «Файлы», вы получите еще один вывод:

http://paste.ubuntu.com/23308186/

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

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

default 09:43:21.257429 -0400   gamed   GKClientProxy: clientForBundleID:
default 09:43:21.257543 -0400   gamed   GKClientProxy: updateIfRecentlyInstalled
default 09:43:21.258623 -0400   gamed   GKClientProxy: clientForBundleID:
default 09:43:21.258751 -0400   gamed   GKClientProxy: updateIfRecentlyInstalled
default 09:43:21.277114 -0400   opendirectoryd  Client: <private>, UID: 0, EUID: 0, GID: 0, EGID: 0
default 09:43:21.277194 -0400   opendirectoryd  <private> completed, delivered 1 result
default 09:43:22.025420 -0400   mount_smbfs subsystem: com.apple.SystemConfiguration, category: SCPreferences, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 2, enable_private_data: 0
default 09:43:22.030767 -0400   mount_smbfs subsystem: com.apple.network, category: , enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 2, enable_private_data: 0
default 09:43:22.069146 -0400   opendirectoryd  Client: <private>, UID: 0, EUID: 0, GID: 0, EGID: 0
default 09:43:22.069231 -0400   opendirectoryd  <private> completed, delivered 1 result
default 09:43:22.069385 -0400   opendirectoryd  Client: <private>, UID: 0, EUID: 0, GID: 0, EGID: 0
default 09:43:22.069479 -0400   opendirectoryd  <private> completed, delivered 1 result
default 09:43:22.072139 -0400   opendirectoryd  Client: <private>, UID: 502, EUID: 502, GID: 20, EGID: 20
default 09:43:22.072212 -0400   opendirectoryd  <private> completed, delivered 1 result
error   09:43:22.146661 -0400   kernel  loginwindow is not entitled
error   09:43:22.146708 -0400   kernel  loginwindow is not entitled
error   09:43:22.146799 -0400   kernel  UserEventAgent is not entitled
error   09:43:22.146882 -0400   kernel  UserEventAgent is not entitled
default 09:43:22.886004 -0400   AppleIDAuthAgent    SERVER Doing account check for "a...n@???????.???". (scheduledAccountCheckDispatcher()/AppleIDAuthd.cpp #545) accountCheckDispatch
default 09:43:22.886074 -0400   AppleIDAuthAgent    Checking account <private>
default 09:43:22.887673 -0400   AppleIDAuthAgent    _AppleIDAuthAccountForAppleID falling back to account aliases

error   09:43:22.891028 -0400   AppleIDAuthAgent    ### Request GS token for '<private>' start failed: -101
default 09:43:22.891078 -0400   AppleIDAuthAgent    ### Authenticate '<private>' failed: <private>
default 09:43:22.891158 -0400   AppleIDAuthAgent    SERVER Didn't succeed with .authenticate, and error is ERROR:"CSIdentityErrorDomain" #-101 kCSIdentityAppleIDInvalidAccountOrPasswordErr {  } so releasing session. (___Z31__AppleIDSessionDoCreateSessionPK10__CFStringS1_PK14__CFDictionaryPS1_PS4_PP9__CFError_block_invoke()/AppleIDXMLServerCommunications.cpp #902) queue.session.
default 09:43:22.891399 -0400   AppleIDAuthAgent    Next time for '<private>': 2016-10-11 13:43:22 +0000 (497886202.891342 + 0.000000), 0.000000 seconds
default 09:43:22.891514 -0400   AppleIDAuthAgent    Next time for '<private>': 2016-10-11 13:43:22 +0000 (497886202.891467 + 0.000000), 0.000000 seconds
default 09:43:22.891560 -0400   AppleIDAuthAgent    Next action time for <private>: <private> (because the account does not have a certificate nor an uploaded csr)
default 09:43:25.393805 -0400   CommCenter  #watchdog #I Callback Watchdog: checkin 119
default 09:43:25.394014 -0400   CommCenter  #watchdog #I Server Watchdog: checkin 119
default 09:43:28.212369 -0400   opendirectoryd  Client: <private>, UID: 502, EUID: 502, GID: 20, EGID: 20
default 09:43:28.212476 -0400   opendirectoryd  <private> failed with error '<private>' (2)
default 09:43:29.061659 -0400   kernel  SmartBattery: finished polling type 4
default 09:43:29.847392 -0400   gamed   GKClientProxy: clientForBundleID:
default 09:43:29.847446 -0400   gamed   GKClientProxy: updateIfRecentlyInstalled
default 09:43:29.847970 -0400   gamed   GKClientProxy: clientForBundleID:
default 09:43:29.847992 -0400   gamed   GKClientProxy: updateIfRecentlyInstalled
default 09:43:29.879093 -0400   opendirectoryd  Client: <private>, UID: 0, EUID: 0, GID: 0, EGID: 0
default 09:43:29.879183 -0400   opendirectoryd  <private> completed, delivered 1 result

Временное решение

Я обнаружил, что этот фрагмент кода AppleScript работает из командной строки.

osascript -e 'tell application "Finder" to mount volume "smb://admin:password@macbook-pro.local/Files"'

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

osascript -e 'tell application "Finder" to mount volume "smb://admin@macbook-pro.local/Files"'

Поэтому я попытался сохранить пароль. После установки флажка для сохранения имени входа в цепочке для ключей та же команда успешно выполняется без пароля в открытом тексте, но все равно представляет окно подтверждения с заполненным полем Пароль и также отмеченным флажком «Запомнить пароль».

Сохраненный пароль все еще не применяется к соединению mount_smbfs. Попытка смонтировать не удалась.

Возможно, эта идея osascript является обходным путем, но она не отвечает на вопрос, почему samba соединяется с помощью поиска, а не при использовании cli.

ndasusers
источник
Можете ли вы попробовать подключиться через AFP и посмотреть, работает ли это?
NoahL
Спасибо за помощь. Это, безусловно, работает AFP во всех случаях. Finder, командная строка и скрипт, будь то пользователь или гость, которому нужен пароль.
ndasusers
попробуйте это: на сервере перейдите в Системные настройки -> Общий доступ. В центре окна зеленый кружок. Рядом с ним написано «обмен файлами: вкл» в центре левого угла окна, нажмите «Опции ...». В выпадающем
списке
Дайте мне знать, как это происходит
NoahL
Еще раз спасибо Общий доступ к файлам: включен, общий доступ к файлам с использованием smb уже включен. Всякий раз, когда предоставляется успешное соединение, пользователи нумеруются там же в этом окне.
ndasusers

Ответы:

-3

GKClientProxy: clientForBundleID: 4

ddjskater
источник
4
Добро пожаловать в Ask Different и спасибо за ваш ответ! Мы всегда ищем решения и предпочитаем ответы, которые предоставляют такую ​​информацию, как: (1) как вы думаете, ответ, который вы предоставили, решает проблему и / или почему он может быть лучше, чем другие решения, (2) ссылки на вспомогательную информацию и / или продукты, которые вы рекомендуете. Дополнительная информация, такая как эта, может помочь ОП и другим найти дополнительную информацию для себя. См. Как ответить для советов по предоставлению ответов здесь.
Мономет