Quindi ho un mac (Yosemite) che condivide una cartella di sola lettura per molti utenti e l'account guest è abilitato per montare / accedere a quella cartella in modo che gli utenti possano scaricare qualsiasi cosa. Mi sto collegando alla condivisione come manager con un altro mac (Sierra). Funziona quando esco come utente ospite dalla riga di comando:
mount_smbfs //[email protected]/Files /tmp/files
ls /tmp/files
fileA fileB
o se mi collego da finder come guest:
click MacBook-Pro -> Connect As -> Guest -> Connect
double click Files
ls /Volumes/Files
fileA fileB
Ora c'è un account utente amministratore su mac (Yosemite). Voglio montare / accedere a quella cartella con privilegio di lettura, ma tutti i tentativi di montare la cartella con un login falliscono se richiedo il nome utente dalla riga di comando.
mount_smbfs //[email protected]/Files /tmp/files
Password for MacBook-pro.local:
mount_smbfs: server rejected the connection: Authentication error
Tuttavia, se mi collego con il Finder:
click MacBook-Pro -> Connect As -> Registered User
Username: admin
Password: password
-> Connect
double click Files
ls /Volumes/Files
fileA fileB
In ogni caso di connessioni riuscite, posso vedere nella sezione di condivisione del server di Proprietà del sistema che quando faccio clic su Condivisione file: Attivo - > Opzioni ... rivela
Share files and folders using SMB
Number of users connected: 1
Riesci a indovinare perché la connessione viene rifiutata quando provo a connettermi tramite smb con la riga di comando utilizzando l'account che richiede l'autenticazione?
Modifica
Sì, AFP connect funziona in ogni caso incluso il cli con un account che richiede una password. Ad esempio:
mount_afp -i afp://[email protected]/Files /tmp/files
Password:
ls /tmp/files
fileA fileB
Per motivi di prova ho provato anche ad abbassare le regole di autenticazione smb per ogni evenienza, ma non c'è stato alcun effetto, nemmeno l'invio di password su testo in chiaro. In quanto tale:
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
EDIT2
Ecco alcuni file di log nel caso in cui qualcuno possa ottenere da loro qualsiasi informazione su questo problema. (Mi dispiace pubblicare i log fuori sito, ma c'era troppa quantità di testo nei log di successo.)
In primo luogo, registro client di connessione a MacBook-Pro.local tramite SMB tramite Finder utilizzando il flusso in questo modo:
Click MacBook-Pro
Connect As: Registered User
Name: admin
Password: password
Connect
Produce output di registro come questo nella console:
Ora l'elenco di tutte le cartelle condivise è disponibile per l'amministratore, ovviamente. Quindi, facendo clic sulla cartella File, viene generato un output più simile al registro:
La cartella File si monta e può essere letta / scritta dall'utente amministratore
Per fare un confronto, ecco un log da Console quando provi a connetterti alla risorsa usando puro strumento da riga di comando 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
SOLUZIONE
Ho trovato che questo frammento di codice AppleScript funziona dalla riga di comando.
osascript -e 'tell application "Finder" to mount volume "smb://admin:[email protected]/Files"'
Avvierà una finestra di conferma con il campo della password compilato. Tuttavia, richiede di inserire la password in chiaro. Ovviamente, può anche essere fatto senza la password e digitarlo ogni volta.
osascript -e 'tell application "Finder" to mount volume "smb://[email protected]/Files"'
Così ho provato a salvare la password. Dopo aver spuntato la casella per salvare l'accesso al portachiavi, lo stesso comando ha esito positivo senza la password nel testo in chiaro, ma presenta ancora la finestra di conferma con la casella Password compilata e spuntata anche la casella "Ricorda password".
Se la password è stata salvata, non è stata ancora applicata alla connessione mount_smbfs. Il tentativo di montaggio fallito.
Forse questa idea di osascript è una soluzione, ma non risponde alla domanda perché samba si connette per finder ma non mentre usa cli.