Không thể truy cập thư mục chia sẻ samba trên Windows 7


2

Tôi có một máy chủ đang chạy RHEL. Trong mạng có ba máy trạm: hai linux (RHEL) và một Windows 7. Tôi đang sử dụng samba để chia sẻ một thiết bị lưu trữ (kết nối với máy chủ) với các máy trạm. Trong hơn một năm, điều này đã làm việc tốt. Tuy nhiên, sau khi cập nhật máy chủ ngày hôm qua, tôi không thể truy cập thư mục dùng chung trên máy trạm Windows.

Cụ thể, Windows không nhận ra mật khẩu nữa. Khi tôi nhấp vào "Ổ đĩa mạng bản đồ", nhập đường dẫn đến thư mục dùng chung và nhập thông tin đăng nhập của tôi, Windows sẽ cho tôi biết "Mật khẩu mạng được chỉ định không chính xác". Tôi có thể truy cập các thư mục được chia sẻ trên cả hai máy trạm Linux.

Đây là những gì tôi đã kiểm tra và xác nhận:

  • Đảm bảo rằng mức xác thực Trình quản lý LAN được đặt thành "Gửi LM & amp; NTLM - sử dụng bảo mật phiên NTLMv2 nếu được thương lượng." [từ đây]
  • Đảm bảo rằng tôi có thể truy cập thư mục dùng chung trên cả hai máy trạm Linux
  • Đã tạo một thư mục chia sẻ mới và cũng có thể truy cập vào cả hai máy trạm Linux
  • Đảm bảo rằng tôi có thể ping máy chủ từ máy trạm Windows của mình
  • Đảm bảo rằng ngày và giờ là chính xác trên tất cả các máy
  • Đã thử khởi động lại mọi thứ (và hy vọng rằng vấn đề sẽ biến mất)

Hành vi dự kiến: Tôi muốn Windows truy cập vào thư mục chia sẻ

Điều gì không xảy ra: Windows không thể truy cập thư mục dùng chung

Tôi muốn nhắc lại rằng thư mục có thể truy cập được trước khi cập nhật (hai ngày trở lại). Phiên bản samba hiện tại của tôi là 4.6.2 và RHEL là 7.4.

Dưới đây là các bit và phần từ tệp smb.conf (tệp hoàn chỉnh bên dưới):

#======================= Global Settings =====================================

[global]

# ----------------------- Network-Related Options -------------------------
    workgroup = MSHOME
    server string = Samba Server Version %v

# ----------------------- Standalone Server Options ------------------------
    security = user
    passdb backend = tdbsam

    [MBIAL_STORAGE]
    path = /run/media/MBIAL/MBIAL_STORAGE
    guest ok = yes
    browseable = yes
    writable = yes
    valid_users = MBIAL
    # write list = test
    # valid users = test

trong đó MBIAL_STORAGE là tên của thư mục dùng chung. Các máy trạm Linux đang truy cập điều này bằng cách sử dụng smb: // IP_ADDRESS / mbial_st Storage với MBIAL làm tên người dùng và MSHOME làm nhóm làm việc. Tôi đã thử cung cấp cho Windows MSHOME \ MBIAL làm tên người dùng nhưng điều đó cũng không hoạt động.

Đây là tập tin smb.conf hoàn chỉnh:

# This is the main Samba configuration file. For detailed information about the
# options listed here, refer to the smb.conf(5) manual page. Samba has a huge
# number of configurable options, most of which are not shown in this example.
#
# The Official Samba 3.2.x HOWTO and Reference Guide contains step-by-step
# guides for installing, configuring, and using Samba:
# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
#
# The Samba-3 by Example guide has working examples for smb.conf. This guide is
# generated daily: http://www.samba.org/samba/docs/Samba-Guide.pdf
#
# In this file, lines starting with a semicolon (;) or a hash (#) are
# comments and are ignored. This file uses hashes to denote commentary and
# semicolons for parts of the file you may wish to configure.
#
# Note: Run the "testparm" command after modifying this file to check for basic
# syntax errors.
#
#---------------
# Security-Enhanced Linux (SELinux) Notes:
#
# Turn the samba_domain_controller Boolean on to allow Samba to use the useradd
# and groupadd family of binaries. Run the following command as the root user to
# turn this Boolean on:
# setsebool -P samba_domain_controller on
#
# Turn the samba_enable_home_dirs Boolean on if you want to share home
# directories via Samba. Run the following command as the root user to turn this
# Boolean on:
# setsebool -P samba_enable_home_dirs on
#
# If you create a new directory, such as a new top-level directory, label it
# with samba_share_t so that SELinux allows Samba to read and write to it. Do
# not label system directories, such as /etc/ and /home/, with samba_share_t, as
# such directories should already have an SELinux label.
#
# Run the "ls -ldZ /path/to/directory" command to view the current SELinux
# label for a given directory.
#
# Set SELinux labels only on files and directories you have created. Use the
# chcon command to temporarily change a label:
# chcon -t samba_share_t /path/to/directory
#
# Changes made via chcon are lost when the file system is relabeled or commands
# such as restorecon are run.
#
# Use the samba_export_all_ro or samba_export_all_rw Boolean to share system
# directories. To share such directories and only allow read-only permissions:
# setsebool -P samba_export_all_ro on
# To share such directories and allow read and write permissions:
# setsebool -P samba_export_all_rw on
#
# To run scripts (preexec/root prexec/print command/...), copy them to the
# /var/lib/samba/scripts/ directory so that SELinux will allow smbd to run them.
# Note that if you move the scripts to /var/lib/samba/scripts/, they retain
# their existing SELinux labels, which may be labels that SELinux does not allow
# smbd to run. Copying the scripts will result in the correct SELinux labels.
# Run the "restorecon -R -v /var/lib/samba/scripts" command as the root user to
# apply the correct SELinux labels to these files.
#
#--------------
#
#======================= Global Settings =====================================

[global]

# ----------------------- Network-Related Options -------------------------
#
# workgroup = the Windows NT domain name or workgroup name, for example, MYGROUP.
#
# server string = the equivalent of the Windows NT Description field.
#
# netbios name = used to specify a server name that is not tied to the hostname.
#
# interfaces = used to configure Samba to listen on multiple network interfaces.
# If you have multiple interfaces, you can use the "interfaces =" option to
# configure which of those interfaces Samba listens on. Never omit the localhost
# interface (lo).
#
# hosts allow = the hosts allowed to connect. This option can also be used on a
# per-share basis.
#
# hosts deny = the hosts not allowed to connect. This option can also be used on
# a per-share basis.
#
# max protocol = used to define the supported protocol. The default is NT1. You
# can set it to SMB2 if you want experimental SMB2 support.
#
    workgroup = MSHOME
    server string = Samba Server Version %v

;   netbios name = MYSERVER

;   interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 10.11.1.152 10.11.1.151 127.0.0.1
;   hosts allow = 127. 192.168.12. 192.168.13. 10.11.1.152 10.11.1.151

;   max protocol = SMB2

# --------------------------- Logging Options -----------------------------
#
# log file = specify where log files are written to and how they are split.
#
# max log size = specify the maximum size log files are allowed to reach. Log
# files are rotated when they reach the size specified with "max log size".
#

    # log files split per-machine:
    log file = /var/log/samba/log.%m
    # maximum size of 50KB per log file, then rotate:
    max log size = 50
    debuglevel = 7
# ----------------------- Standalone Server Options ------------------------
#
# security = the mode Samba runs in. This can be set to user, share
# (deprecated), or server (deprecated).
#
# passdb backend = the backend used to store user information in. New
# installations should use either tdbsam or ldapsam. No additional configuration
# is required for tdbsam. The "smbpasswd" utility is available for backwards
# compatibility.
#

    security = user
    passdb backend = tdbsam


# ----------------------- Domain Members Options ------------------------
#
# security = must be set to domain or ads.
#
# passdb backend = the backend used to store user information in. New
# installations should use either tdbsam or ldapsam. No additional configuration
# is required for tdbsam. The "smbpasswd" utility is available for backwards
# compatibility.
#
# realm = only use the realm option when the "security = ads" option is set.
# The realm option specifies the Active Directory realm the host is a part of.
#
# password server = only use this option when the "security = server"
# option is set, or if you cannot use DNS to locate a Domain Controller. The
# argument list can include My_PDC_Name, [My_BDC_Name], and [My_Next_BDC_Name]:
#
# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
#
# Use "password server = *" to automatically locate Domain Controllers.

;   security = domain
;   passdb backend = tdbsam
;   realm = MY_REALM

;   password server = <NT-Server-Name>

# ----------------------- Domain Controller Options ------------------------
#
# security = must be set to user for domain controllers.
#
# passdb backend = the backend used to store user information in. New
# installations should use either tdbsam or ldapsam. No additional configuration
# is required for tdbsam. The "smbpasswd" utility is available for backwards
# compatibility.
#
# domain master = specifies Samba to be the Domain Master Browser, allowing
# Samba to collate browse lists between subnets. Do not use the "domain master"
# option if you already have a Windows NT domain controller performing this task.
#
# domain logons = allows Samba to provide a network logon service for Windows
# workstations.
#
# logon script = specifies a script to run at login time on the client. These
# scripts must be provided in a share named NETLOGON.
#
# logon path = specifies (with a UNC path) where user profiles are stored.
#
#
;   security = user
;   passdb backend = tdbsam

;   domain master = yes
;   domain logons = yes

    # the following login script name is determined by the machine name
    # (%m):
;   logon script = %m.bat
    # the following login script name is determined by the UNIX user used:
;   logon script = %u.bat
;   logon path = \\%L\Profiles\%u
    # use an empty path to disable profile support:
;   logon path =

    # various scripts can be used on a domain controller or a stand-alone
    # machine to add or delete corresponding UNIX accounts:

;   add user script = /usr/sbin/useradd "%u" -n -g users
;   add group script = /usr/sbin/groupadd "%g"
;   add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"
;   delete user script = /usr/sbin/userdel "%u"
;   delete user from group script = /usr/sbin/userdel "%u" "%g"
;   delete group script = /usr/sbin/groupdel "%g"


# ----------------------- Browser Control Options ----------------------------
#
# local master = when set to no, Samba does not become the master browser on
# your network. When set to yes, normal election rules apply.
#
# os level = determines the precedence the server has in master browser
# elections. The default value should be reasonable.
#
# preferred master = when set to yes, Samba forces a local browser election at
# start up (and gives itself a slightly higher chance of winning the election).
#
;   local master = no
;   os level = 33
;   preferred master = yes

#----------------------------- Name Resolution -------------------------------
#
# This section details the support for the Windows Internet Name Service (WINS).
#
# Note: Samba can be either a WINS server or a WINS client, but not both.
#
# wins support = when set to yes, the NMBD component of Samba enables its WINS
# server.
#
# wins server = tells the NMBD component of Samba to be a WINS client.
#
# wins proxy = when set to yes, Samba answers name resolution queries on behalf
# of a non WINS capable client. For this to work, there must be at least one
# WINS server on the network. The default is no.
#
# dns proxy = when set to yes, Samba attempts to resolve NetBIOS names via DNS
# nslookups.

;   wins support = yes
;   wins server = w.x.y.z
;   wins proxy = yes

;   dns proxy = yes

# --------------------------- Printing Options -----------------------------
#
# The options in this section allow you to configure a non-default printing
# system.
#
# load printers = when set you yes, the list of printers is automatically
# loaded, rather than setting them up individually.
#
# cups options = allows you to pass options to the CUPS library. Setting this
# option to raw, for example, allows you to use drivers on your Windows clients.
#
# printcap name = used to specify an alternative printcap file.
#

    load printers = no
    cups options = raw

;   printcap name = /etc/printcap
    # obtain a list of printers automatically on UNIX System V systems:
;   printcap name = lpstat
;   printing = cups

# --------------------------- File System Options ---------------------------
#
# The options in this section can be un-commented if the file system supports
# extended attributes, and those attributes are enabled (usually via the
# "user_xattr" mount option). These options allow the administrator to specify
# that DOS attributes are stored in extended attributes and also make sure that
# Samba does not change the permission bits.
#
# Note: These options can be used on a per-share basis. Setting them globally
# (in the [global] section) makes them the default for all shares.

;   map archive = no
;   map hidden = no
;   map read only = no
;   map system = no
;   store dos attributes = yes


#============================ Share Definitions ==============================

[homes]
    comment = Home Directories
    browseable = no
    writable = yes
;   valid users = %S
;   valid users = MYDOMAIN\%S

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = yes
    guest ok = no
    writable = yes
    printable = yes

# Un-comment the following and create the netlogon directory for Domain Logons:
;   [netlogon]
;   comment = Network Logon Service
;   path = /var/lib/samba/netlogon
;   guest ok = yes
;   writable = yes
;   share modes = yes


# Un-comment the following to provide a specific roving profile share.
# The default is to use the user's home directory:
;   [Profiles]
;   path = /var/lib/samba/profiles
;   browseable = yes
;   guest ok = yes

    [MBIAL_STORAGE]
    path = /run/media/MBIAL/MBIAL_STORAGE
    guest ok = yes
    browseable = yes
    writable = yes
    valid_users = MBIAL
    # write list = test
    # valid users = test

Sẽ thực sự đánh giá cao bất kỳ cái nhìn sâu sắc về vấn đề. Tôi hy vọng rằng đây là một cái gì đó thực sự tầm thường và ngu ngốc mà tôi đang nhìn!


Tôi không cho rằng bạn đã thử điểm khôi phục hoặc cố gắng gỡ cài đặt các bản cập nhật gần đây trong tuần qua hoặc khôi phục hình ảnh hệ thống? Đó sẽ là những điều đầu tiên để thử. Tôi cho rằng samba của bạn đã không thay đổi trong vài tháng qua (hoặc kể từ lần cuối bạn khởi động lại Windows?) ... Ngoài ra, là chia sẻ samba của bạn trên mạng công cộng hoặc nhà với Win7? Hoặc Win7 đang truy cập vào chia sẻ qua mạng nội bộ hoặc qua internet? Oh ... bạn cũng đang chạy selinux? Xấu ... có thể làm phức tạp vấn đề mà tôi mong đợi ...
Astara

@Astara Xin chào, thực sự tôi chưa bao giờ cập nhật máy trạm Windows của mình. Chỉ có máy chủ được cập nhật. Vì vậy, không có bản cập nhật để gỡ cài đặt. Thật vậy, cấu hình samba đã không thay đổi kể từ năm ngoái và Windows WS chỉ được khởi động lại sau khi sự cố bắt đầu. Mạng chia sẻ samba được đặt làm nhà trên máy trạm Windows.
Pravesh Parekh

Xin chào lần nữa, đây hoàn toàn là bonkers nhưng tôi đã chỉnh sửa cấp độ xác thực Trình quản lý LAN thành "Chỉ gửi phản hồi NTLMv2" và tôi có thể truy cập thư mục ngay bây giờ. Đặt lại thành "Gửi LM & amp; NTLM - sử dụng bảo mật phiên NTLMv2 nếu được thương lượng." làm cho thư mục không thể truy cập. Đây có phải là phản ánh của một số thay đổi trong cách làm việc samba bây giờ? Hay nó có nghĩa là có gì đó không đúng với cấu hình samba của tôi?
Pravesh Parekh

1
Tôi thấy một câu trả lời tương tự ở đây bây giờ: siêu người dùng.com / 1/129426 (đã bỏ lỡ trước đó).
Pravesh Parekh

Câu trả lời:


1

Giải pháp cho người đăng là bằng cách thay đổi cấp độ xác thực Trình quản lý LAN đến Send NTLMv2 response only từ Send LM & NTLM - use NTLMv2 session security if negotiated.

Rõ ràng Samba đã quản lý các cuộc đàm phán bảo mật phiên với Windows, vì vậy họ không thể đồng ý về thuật toán cho mật khẩu. Một khi người đăng áp đặt phương pháp bảo mật, mọi thứ đã hoạt động.

Về lý do tại sao điều này xảy ra - câu trả lời tốt nhất tôi có thể đưa ra là nguyên nhân là do một số sự không tương thích không xác định giữa việc triển khai Linux và Windows của giao thức SMB


[Câu trả lời cũ]

Hãy thử điều này trên máy khách W7:

Trong Trình chỉnh sửa chính sách nhóm cục bộ, đi tới:

Chính sách máy tính cục bộ- & gt; Cấu hình máy tính- & gt; Windows   Cài đặt- & gt; Cài đặt bảo mật- & gt; Chính sách cục bộ- & gt; Tùy chọn bảo mật

Tìm chính sách có tên Microsoft network client: Digitally sign communications (always).

Nếu điều này được kích hoạt, thay đổi nó thành Vô hiệu hóa. Hãy chắc chắn và khởi động lại máy tính của bạn để thay đổi có hiệu lực, khi nhấn Áp dụng trong Trình chỉnh sửa chính sách nó không thích đáng.

Như một lưu ý phụ, tôi đã sử dụng các cài đặt sau vào lần cuối cùng tôi ra ngoài một chia sẻ Samba. Hãy thử chúng, và nếu chúng giải quyết được vấn đề thì hãy sửa đổi chúng từng người một cho đến khi bạn gặp phải vấn đề:

path = /my/share/path
available = yes
browsable = yes
public = yes
read only = no
writable = yes

Hi, cảm ơn bạn đã trả lời. Tôi đã kiểm tra chính sách nhưng nó đã bị vô hiệu hóa. Thay đổi cấp xác thực Trình quản lý LAN thành "Chỉ gửi phản hồi NTLMv2" từ "Gửi LM & amp; NTLM - sử dụng bảo mật phiên NTLMv2 nếu được thương lượng." dường như để giải quyết vấn đề Bạn có bất cứ đề nghị tại sao?
Pravesh Parekh

1
Xem liên kết này . Rõ ràng Samba của bạn sử dụng lỗi thời Quản lý mạng LAN phương pháp với thuật toán băm LM yếu cho mật khẩu. Lý do có thể là mặc định nghèo trong smb.conf .
harrymc

Xin tha thứ cho sự ngây thơ của tôi nhưng điều tôi hiểu là chỉ sử dụng NTLMv2 là tốt hơn và tùy chọn được đề xuất. Vì vậy, điều đó có nghĩa là một khi samba của tôi được cập nhật (cùng với RHEL), nó đã ngừng sử dụng phương thức băm LM cũ và yếu hơn cho mật khẩu? Điều đó có đúng không? Sau đó, tôi không còn cần phải làm gì thêm, tôi đoán? Tôi được cho để hiểu rằng khách hàng lanman auth lanman auth được đặt thành Không theo mặc định và máy khách NTLMv2 auth được đặt thành Vâng theo mặc định Tôi không thấy các mục này trong tệp conf của mình vì vậy tôi đoán rằng các mặc định đang được áp dụng?
Pravesh Parekh

1
Nhận xét trước đây của tôi đã được viết quá vội vàng. NTLMv2 tốt hơn, nhưng rõ ràng Samba của bạn đã quản lý các cuộc đàm phán bảo mật phiên với Windows, vì vậy không thể đồng ý về thuật toán cho mật khẩu. Một khi bạn ra lệnh phương pháp bảo mật, mọi thứ đã hoạt động. Tại sao? Câu trả lời tốt nhất là một số sự không tương thích chưa biết giữa các triển khai giao thức Linux / Windows.
harrymc

À Cảm ơn bạn rất nhiều vì đã giúp tôi ra mặc dù. Bạn có thể vui lòng kết hợp điều này vào câu trả lời của bạn để tôi có thể tiếp tục và chấp nhận nó không? Cảm ơn lần nữa
Pravesh Parekh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.