Dlaczego Mac SMB Connect nie działa z logowaniem z CLI, ale działa z Findera i konta gościa?

8

Więc mam jednego Maca (Yosemite) udostępniającego folder tylko do odczytu dla wielu użytkowników, a konto gościa ma możliwość montowania / dostępu do tego folderu, aby użytkownicy mogli pobierać cokolwiek. Łączę się z udziałem jako menedżer z innym komputerem Mac (Sierra). Działa, gdy uruchamiam się jako gość jako gość z linii poleceń:

mount_smbfs //[email protected]/Files /tmp/files
ls /tmp/files
fileA    fileB

lub jeśli połączę się z wyszukiwarki jako gość:

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

Teraz na Macu jest jedno konto użytkownika administratora (Yosemite). Chcę zamontować / uzyskać dostęp do tego folderu z uprawnieniem do odczytu zapisu, ale wszystkie próby zamontowania folderu z logowaniem nie powiodły się, jeśli potrzebuję nazwy użytkownika z wiersza poleceń.

mount_smbfs //[email protected]/Files /tmp/files
Password for MacBook-pro.local:
mount_smbfs: server rejected the connection: Authentication error

Jeśli jednak połączę się z Finderem:

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

W każdym przypadku udanych połączeń widzę w sekcji udziału serwera Właściwości systemu, która po kliknięciu opcji Udostępnianie plików: Włącz -> Opcje ... ujawnia

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

Czy potrafisz zgadnąć, dlaczego połączenie jest odrzucane, gdy próbuję połączyć się przez smb za pomocą wiersza polecenia przy użyciu konta wymagającego uwierzytelnienia?

Edytować

Tak, AFP Connect działa w każdym przypadku, łącznie z kontem wymagającym hasła. Na przykład:

mount_afp -i afp://[email protected]/Files /tmp/files
Password: 
ls /tmp/files
fileA    fileB

Dla celów testowych próbowałem również na wszelki wypadek obniżyć reguły uwierzytelniania smb, ale nie przyniosło to żadnego efektu, nawet wysyłając hasło w postaci zwykłego tekstu. Takie jak:

sudo nano /etc/nsmb.conf
   [default]
   minauth=none
^c+X
mount_smbfs smb://admin:[email protected]/Files /tmp/files
mount_smbfs: server rejected the connection: Authentication error

EDYCJA 2

Oto kilka plików dziennika na wypadek, gdyby ktokolwiek mógł uzyskać od niego jakiekolwiek informacje na temat tego problemu. (Przepraszam, że opublikowałem dzienniki poza witryną, ale w udanych dziennikach było za dużo tekstu).

Po pierwsze, dziennik klienta nawiązywania połączenia z MacBook-Pro.local za pośrednictwem SMB za pomocą Findera za pomocą przepływu:

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

Tworzy dane wyjściowe dziennika w konsoli w następujący sposób:

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

Teraz lista wszystkich folderów udostępniania jest oczywiście dostępna dla administratora. Kliknięcie folderu Pliki powoduje wyświetlenie większej ilości danych wyjściowych dziennika:

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

Folder plików montuje się i może być odczytywany / zapisywany przez administratora

Dla porównania, oto dziennik z konsoli podczas próby połączenia się z zasobem za pomocą czystego narzędzia wiersza polecenia mount_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

OBEJŚCIE

Znalazłem ten fragment kodu AppleScript z wiersza polecenia.

osascript -e 'tell application "Finder" to mount volume "smb://admin:[email protected]/Files"'

Otworzy się okno potwierdzenia z wypełnionym polem hasła. Wymaga jednak podania hasła w postaci zwykłego tekstu. Oczywiście można to również zrobić bez hasła i wpisywać za każdym razem.

osascript -e 'tell application "Finder" to mount volume "smb://[email protected]/Files"'

Próbowałem więc zapisać hasło. Po zaznaczeniu pola, aby zapisać login do pęku kluczy, to samo polecenie kończy się powodzeniem bez podania hasła w postaci tekstu jawnego, ale nadal wyświetla okno potwierdzenia z wypełnionym polem Hasło i zaznaczone pole „Pamiętaj hasło”.

Po zapisaniu hasła nadal nie dotyczyło połączenia mount_smbfs. Próba zamontowania nie powiodła się.

Być może ten pomysł na osascript jest obejściem, ale nie odpowiada na pytanie, dlaczego samba łączy się przez wyszukiwarkę, ale nie podczas korzystania z cli.

ndasusers
źródło
Czy możesz spróbować połączyć się przez AFP i sprawdzić, czy to działa?
NoahL,
Dzięki za pomoc. Z pewnością działa we wszystkich przypadkach przez AFP. Finder, wiersz poleceń i skrypt, czy jest to gość lub hasło wymagające użytkownika.
ndasusers,
spróbuj tego: na serwerze przejdź do Preferencji systemowych -> Udostępnianie. Pośrodku okna znajduje się zielone kółko. Obok napis „Udostępnianie plików: włączone” w środkowej lewej części okna kliknij „Opcje ...”. W rozwijanym menu włącz „udostępnij pliki i foldery za pomocą smb”
NoahL,
Daj mi znać, jak to idzie
NoahL,
Jeszcze raz dziękuję. Udostępnianie plików: włączone, udostępnianie plików za pomocą smb jest już włączone. Ilekroć udane połączenie zostanie przyznane, użytkownicy są tam również ponumerowani w tym oknie.
ndasusers

Odpowiedzi:

-3

GKClientProxy: clientForBundleID: 4

ddjskater
źródło
4
Witamy w Ask Different i dziękuję za odpowiedź! Zawsze szukamy rozwiązań i preferujemy odpowiedzi, które dostarczają takich informacji, jak: (1) Jak według Ciebie udzielona odpowiedź rozwiązuje problem i / lub dlaczego może być lepsza niż inne rozwiązania, (2) Linki do informacji pomocniczych i / lub produkty, które polecasz. Dodatkowe informacje, takie jak ta, mogą pomóc OP i innym osobom znaleźć dodatkowe informacje dla siebie. Zobacz Jak odpowiedzieć, aby uzyskać porady dotyczące udzielania odpowiedzi tutaj.
Monomeeth