Así que tengo un mac (Yosemite) compartiendo una carpeta de sólo lectura para muchos usuarios y la cuenta de invitado está habilitada para montar / acceder a esa carpeta para que los usuarios puedan descargar lo que sea. Me estoy conectando al recurso compartido como el administrador con otro mac (Sierra). Funciona cuando ejecuto como usuario invitado desde la línea de comandos:
mount_smbfs //guest@macbook-pro.local/Files /tmp/files
ls /tmp/files
fileA fileB
o si me conecto desde finder como invitado:
click MacBook-Pro -> Connect As -> Guest -> Connect
double click Files
ls /Volumes/Files
fileA fileB
Ahora hay una cuenta de usuario administrador en el mac (Yosemite). Quiero montar/acceder a esa carpeta con privilegio de lectura y escritura, pero todos los intentos de montar la carpeta con un inicio de sesión fallan si requiero el nombre de usuario desde la línea de comandos.
mount_smbfs //admin@macbook-pro.local/Files /tmp/files
Password for MacBook-pro.local:
mount_smbfs: server rejected the connection: Authentication error
Sin embargo, si me conecto con Finder:
click MacBook-Pro -> Connect As -> Registered User
Username: admin
Password: password
-> Connect
double click Files
ls /Volumes/Files
fileA fileB
En todos los casos de conexiones exitosas, puedo ver en la sección del servidor compartido de las Propiedades del Sistema que cuando hago clic en el Compartir Archivos: Activado -> Opciones... revela
Share files and folders using SMB
Number of users connected: 1
¿Puedes adivinar por qué se rechaza la conexión cuando intento conectarme por smb con la línea de comandos utilizando la cuenta que requiere autenticación?
Editar
Sí, AFP connect funciona en todos los casos, incluido el cli con una cuenta que requiere una contraseña. Por ejemplo:
mount_afp -i afp://admin@macbook-pro.local/Files /tmp/files
Password:
ls /tmp/files
fileA fileB
Por si acaso, también intenté bajar las reglas de autenticación smb, pero no hubo efecto, ni siquiera enviando la contraseña en texto plano. Como tal:
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
Aquí hay algunos archivos de registro por si alguien puede obtener alguna información de ellos sobre este problema. (Perdón por publicar los registros fuera del sitio, pero había demasiado texto en los registros exitosos).
En primer lugar, el registro de clientes de la conexión a MacBook-Pro.local a través de SMB a través de Finder utilizando el flujo así:
Click MacBook-Pro
Connect As: Registered User
Name: admin
Password: password
Connect
Produce una salida de registro como ésta en la consola:
http://paste.ubuntu.com/23308183/
Ahora la lista de todas las carpetas compartidas está disponible para el administrador, por supuesto. Así que al hacer clic en la carpeta Files se produce una salida más de registro como esta:
http://paste.ubuntu.com/23308186/
La carpeta de archivos se monta y puede ser leída/escrita por el usuario administrador
Para comparar, aquí hay un registro de la consola cuando se intenta conectar al recurso usando la herramienta de línea de comandos pura 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
SOLUCIÓN
He encontrado este fragmento de AppleScript que funciona desde la línea de comandos.
osascript -e 'tell application "Finder" to mount volume "smb://admin:password@macbook-pro.local/Files"'
Lanzará una ventana de confirmación con el campo de la contraseña rellenado. Sin embargo, requiere poner la contraseña en texto claro. Obviamente, también se puede hacer sin la contraseña y escribirla cada vez.
osascript -e 'tell application "Finder" to mount volume "smb://admin@macbook-pro.local/Files"'
Así que intenté guardar la contraseña. Después de marcar la casilla para guardar el inicio de sesión en el llavero, el mismo comando tiene éxito sin tener la contraseña en el texto claro, pero sigue presentando la ventana de confirmación con la casilla Contraseña rellenada y la casilla "Recordar contraseña" también marcada.
Teniendo la contraseña guardada, todavía no se aplicó a la conexión mount_smbfs. El intento de montaje falló.
Quizás esta idea de osascript sea una solución, pero no responde a la pregunta de por qué samba se conecta por finder pero no mientras se usa cli.