Trong cài đặt chia sẻ trong smb.conf
, bạn sẽ cần chỉ định tên của người dùng và / hoặc nhóm được phép ghi vào chia sẻ, sử dụng một write list = ...
dòng.
Thí dụ:
[myshare]
...
write list = my_linux_username
Sau đó, bạn sẽ cần sử dụng smbpasswd
lệnh để thiết lập mật khẩu để xác thực my_linux_username
cho Samba:
sudo smbpasswd -a my_linux_username
Bước này là cần thiết vì mật khẩu hệ thống tiêu chuẩn /etc/shadow
được băm trong các thuật toán không tương thích với thuật toán băm mật khẩu được sử dụng trong giao thức SMB. Khi khách hàng gửi gói xác thực SMB, nó sẽ bao gồm mật khẩu băm. Nó chỉ có thể được so sánh với một mật khẩu băm khác sử dụng cùng một thuật toán.
(Các hướng dẫn rất cũ từ thiên niên kỷ trước có thể khuyên bạn nên vô hiệu hóa mã hóa mật khẩu trong Samba và sử dụng một số bản hack đăng ký nhất định để cho phép Windows phát ra mật khẩu không được mã hóa vào mạng. Lời khuyên này đã lỗi thời : các bản hack đăng ký đó có thể không còn hoạt động trong các phiên bản hiện tại của Windows và cho phép bất cứ ai có thể theo dõi lưu lượng truy cập mạng của bạn để nắm bắt mật khẩu của bạn một cách tầm thường.)
Có một điều nữa bạn có thể phải làm phía khách hàng. Khi hệ thống máy khách Windows của bạn được kết nối với miền Active Directory và bạn đã đăng nhập bằng tài khoản AD, nó sẽ tự động thêm tiền tố vào tất cả tên người dùng không đủ tiêu chuẩn với tên miền AD của người dùng, tức là bạn sẽ xác thực AD_DOMAIN\your_username
, không chỉ your_username
.
Nếu bạn đã đăng nhập bằng tài khoản cục bộ (hoặc hệ thống máy khách của bạn không được kết nối với tên miền AD), Windows có thể tự động thêm tiền tố tên người dùng với tên máy chủ của khách hàng trừ khi bạn chỉ định một tên miền khác.
Để đăng nhập thành công vào máy chủ Samba độc lập từ máy khách Windows độc lập, bạn có thể phải chỉ định tên người dùng của mình là SAMBA_SERVER_HOSTNAME\your_username
.
Nếu không, Samba sẽ thấy tên người dùng như WINDOWS_CLIENT_HOSTNAME\your_username
, kết luận rằng họ không có cách nào để xác minh bất kỳ người dùng nào thuộc tên miền WINDOWS_CLIENT_HOSTNAME
và sẽ từ chối đăng nhập.
(Các phiên bản mới hơn của Samba có thể có kiểm tra tích hợp cho tình huống cụ thể này và chúng có thể cho phép bạn truy cập. Tuy nhiên, đây về cơ bản là cách xác thực SMB hoạt động "dưới mui xe" và nếu bạn cần xử lý các phiên bản cũ của Samba , nó có thể vẫn hữu ích.)
force user = defaultUser
đã làm công việc cho tôi.