Vì vậy, tôi có một mac (Yosemite) chia sẻ một thư mục chỉ đọc cho nhiều người dùng và tài khoản khách được kích hoạt để gắn kết / truy cập thư mục đó để người dùng có thể tải xuống bất cứ điều gì. Tôi đang kết nối để chia sẻ với tư cách là người quản lý với một máy mac (Sierra) khác. Nó hoạt động khi tôi chạy với tư cách là người dùng khách từ dòng lệnh:
mount_smbfs //guest@macbook-pro.local/Files /tmp/files
ls /tmp/files
fileA fileB
hoặc nếu tôi kết nối từ người tìm với tư cách là khách:
click MacBook-Pro -> Connect As -> Guest -> Connect
double click Files
ls /Volumes/Files
fileA fileB
Bây giờ có một tài khoản người dùng quản trị trên mac (Yosemite). Tôi muốn gắn kết / truy cập vào thư mục đó với đặc quyền đọc ghi, nhưng tất cả đều cố gắng gắn kết thư mục với thông tin đăng nhập thất bại nếu tôi yêu cầu tên người dùng từ dòng lệnh.
mount_smbfs //admin@macbook-pro.local/Files /tmp/files
Password for MacBook-pro.local:
mount_smbfs: server rejected the connection: Authentication error
Tuy nhiên, nếu tôi kết nối với Finder:
click MacBook-Pro -> Connect As -> Registered User
Username: admin
Password: password
-> Connect
double click Files
ls /Volumes/Files
fileA fileB
Trong mọi trường hợp kết nối thành công, tôi có thể thấy trong phần chia sẻ máy chủ của Thuộc tính hệ thống mà khi tôi nhấp vào Chia sẻ tệp: Bật -> Tùy chọn ... sẽ hiển thị
Share files and folders using SMB
Number of users connected: 1
Bạn có thể đoán tại sao kết nối bị từ chối khi tôi cố gắng kết nối bằng smb với dòng lệnh bằng tài khoản yêu cầu xác thực không?
Biên tập
Có, kết nối AFP hoạt động trong mọi trường hợp bao gồm cả cli với tài khoản yêu cầu mật khẩu. Ví dụ:
mount_afp -i afp://admin@macbook-pro.local/Files /tmp/files
Password:
ls /tmp/files
fileA fileB
Để kiểm tra, tôi cũng đã cố gắng hạ thấp các quy tắc xác thực smb chỉ trong trường hợp, nhưng không có hiệu lực, thậm chí gửi mật khẩu trên bản rõ. Như vậy:
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
Dưới đây là một số tệp nhật ký trong trường hợp bất kỳ ai cũng có thể nhận được bất kỳ thông tin nào từ họ về vấn đề này. (Xin lỗi để đăng nhật ký ngoại vi, nhưng có quá nhiều văn bản trong nhật ký thành công.)
Đầu tiên, Nhật ký khách hàng kết nối với MacBook-Pro.local qua SMB thông qua Finder bằng cách sử dụng luồng như vậy:
Click MacBook-Pro
Connect As: Registered User
Name: admin
Password: password
Connect
Tạo đầu ra nhật ký như thế này trong bảng điều khiển:
http://paste.ubfox.com/23308183/
Bây giờ danh sách tất cả các thư mục chia sẻ có sẵn cho quản trị viên tất nhiên. Vì vậy, nhấp vào thư mục Tệp sẽ tạo ra một bản ghi nhật ký nhiều hơn như vậy:
http://paste.ubfox.com/23308186/
Thư mục tập tin gắn kết và có thể được đọc / ghi bởi người dùng quản trị
Để so sánh, đây là nhật ký từ Bảng điều khiển khi cố gắng kết nối với tài nguyên bằng công cụ dòng lệnh thuần túy 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
LÀM VIỆC
Tôi tìm thấy đoạn mã AppleScript này hoạt động từ dòng lệnh.
osascript -e 'tell application "Finder" to mount volume "smb://admin:password@macbook-pro.local/Files"'
Nó sẽ khởi chạy một cửa sổ xác nhận với trường mật khẩu được điền vào. Tuy nhiên, nó yêu cầu đặt mật khẩu ở dạng văn bản rõ ràng. Rõ ràng, nó cũng có thể được thực hiện mà không cần mật khẩu và gõ nó mỗi lần.
osascript -e 'tell application "Finder" to mount volume "smb://admin@macbook-pro.local/Files"'
Vì vậy, tôi đã cố gắng lưu mật khẩu. Sau khi đánh dấu vào ô để lưu thông tin đăng nhập vào móc khóa, lệnh tương tự thành công mà không cần có mật khẩu trong văn bản rõ ràng, nhưng vẫn hiển thị cửa sổ xác nhận với hộp Mật khẩu được điền và hộp "Ghi nhớ mật khẩu" cũng được đánh dấu.
Có mật khẩu được lưu, vẫn không áp dụng cho kết nối mount_smbfs. Nỗ lực gắn kết thất bại.
Có lẽ ý tưởng osascript này là một cách giải quyết, nhưng nó không trả lời câu hỏi tại sao samba kết nối bởi công cụ tìm mà không sử dụng cli.