使用 FQDN 访问 Samba 共享时出现问题

使用 FQDN 访问 Samba 共享时出现问题

我有一台全新的 Centos 8 服务器,正在为客户设置,但它给我在 AD DC 上设置网络共享带来了最大的麻烦。

我在谷歌上搜索了几个小时,但什么也没找到。很多结果都是几年前的,我认为不适用于新版本。之后这些时刻,也许这个线程将来会对某些人有所帮助。

我考虑过的一个问题是,在域配置期间,我的默认 NETBIOS 名称是,LOCALHOST而且我从未更改过它,因此它可能会导致其他机器出现问题。我尝试过更改它,但我可能没有正确地更改所有内容,因为这样做会导致与域的连接完全失败。

目前我可以使用 3 种不同的方法访问我的网络服务器,每种方法都有各自的错误

1. 开场\\OFFICE
仅连接到短名称会显示所有正在共享的文件和打印机,但都无法连接。
尝试连接到其中一个共享时出现错误

\\OFFICE\public 无法访问。您可能没有权限使用此网络资源。请联系此服务器的管理员,了解您是否有访问权限。

已访问一个卷,该卷需要尚未加载的文件系统驱动程序。

2. 开场\\office.mydomain.com 通过这种方式连接,我可以访问所有网络打印机,但只有sysvolnetlogon是可访问的驱动器。尝试连接到任何其他驱动器时会出现此错误

\\office.mydomain.com\public 无法访问。您可能没有权限使用此网络资源。请联系此服务器的管理员,了解您是否有访问权限。

未找到元素。

3. 开场\\192.168.1.2 尝试使用控制器 IP 地址连接适用于所有打印机和网络共享除了对于netlogonsysvol。尝试打开任一默认驱动器都会提示登录,即使有帐户也会失败OFFICE\administrator

我的论点是,驱动器共享实际上不被视为域的一部分,但尝试从非域帐户访问位置会提示域登录。

我还花了几个小时研究 DNS,认为这可能是问题所在,但如果 NETBIOS 没有LOCALHOST问题,除了无法访问目录外,共享没有任何问题。打印机工作正常,ping 服务器正常,nslookup返回正确结果,SSH 与域正常工作。我对 Samba 不够熟悉,不知道是什么处理共享的映射,例如。\public

运行的版本:

$: smbd -V
Version 4.12.3

我的所有目录均正确显示

$: smbclient -L localhost -U%

    Sharename       Type      Comment
    ---------       ----      -------
    sysvol          Disk      
    netlogon        Disk      
    public          Disk      
    share1          Disk      
    share2          Disk      
    share3          Disk      
    share4          Disk      
    users           Disk      
    IPC$            IPC       IPC Service (Samba 4.12.3)
    Printer1        Printer   EPSON WF-7520 Series
    Printer2        Printer   EPSON ET-3750 Series
    Printer3        Printer   EPSON ET-3750 Series
    Printer4        Printer   Brother QL-710W
    Printer5        Printer   EPSON ET-3750 Series
SMB1 disabled -- no workgroup available

以下是我的配置

smb配置文件

# Global parameters
[global]
    # Realm information
    netbios name = LOCALHOST
    realm = OFFICE.MYDOMAIN.COM
    server role = active directory domain controller
    
    disable netbios = no
    smb ports = 139 445
    
    # DNS is controlled by BIND
    server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, s3fs
    
    # Work group
    workgroup = OFFICE
    idmap_ldb:use rfc2307 = yes
    
    # Log from user IPs
    log file = /var/log/samba/%m.log
    #log level = 5
    
    # Printing servers with Cups!
    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw
    
    # Mapped drive configs
    map archive = no
    map readonly = no
    
    # Home Directories
    logon drive = H:
    logon home = \\office.mydomaincom\users\%U
    
    # Winbindd
    winbind cache time = 10
    winbind nss info = rfc2307
    winbind use default domain = yes
    winbind enum users = yes
    winbind enum groups = yes
    
    template shell = /bin/bash
    template homedir = /home/%D/%U
    
    # WINS
    domain logons = yes
    preferred master = yes
    domain master = yes
    #wins support = yes
    #host msdfs = yes
    time server = yes
    
    # DNS
    dns forwarder = 192.168.1.2
    
    # Enable FreeRADIUS authorization
    ntlm auth = mschapv2-and-ntlmv2-only

# Generic system volume
[sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = no

# Net login scripts
[netlogon]
    path = /usr/local/samba/var/locks/sysvol/office.mydomain.com/scripts
    read only = no

# Shared printers
[printers]
    comment = All Printers
    path = /var/spool/samba/
    printable = yes
    create mask = 0600
    browseable = no

# Share for all companies
[public]
    path = /srv/samba/public
    read only = no

[share1]
    path = /srv/samba/share1
    read only = no

[share2]
    path = /srv/samba/share2
    read only = no

[share3]
    path = /srv/samba/share3
    read only = no

[share4]
    path = /srv/samba/share4
    read only = no

# User home directory
[users]
    path = /srv/samba/home
    read only = no

krb5配置文件

[libdefaults]
    default_realm = OFFICE.MYDOMAIN.COM
        dns_lookup_realm = true
        dns_lookup_kdc = true

[realms]
OFFICE.MYDOMAIN.COM = {
        default_domain = office.mydomain.com
}

[domain_realm]
    localhost = OFFICE.MYDOMAIN.COM

nsswitch.conf

passwd:     files winbind
group:      files winbind
netgroup:   files winbind
automount:  files winbind
services:   files winbind

# In order of likelihood of use to accelerate lookup.
shadow:     files winbind
hosts:      dns myhostname

aliases:    files
ethers:     files
gshadow:    files
# Allow initgroups to default to the setting for group.
# initgroups: files
networks:   dns
protocols:  files winbind
publickey:  files
rpc:        files

答案1

经过更多的挖掘和尝试后,我发现我面临两个问题。

首先是我如何连接到服务器。\\OFFICE,,\\office.mydomain.com等等\\192.168.1.2连接,但它们实际上都没有被识别为 DC 的完全组成部分。我必须将 NETBIOS 名称合并到 FQDN 中并连接到\\localhost.office.mydomain.com。从这里所有打印机,已识别共享(包括netlogonsysvol)。这可能在其他地方可以更改,但这可以满足我的需求。

其次是文件夹权限问题,

$: ls -ld sysvol/
drwxrwx---+ 9 root BUILTIN\administrators 135 Jul  9 09:24 sysvol/

$: ls -ld /srv/samba
drwxrwx---. 3 root root 22 Jul  9 09:15 /srv/samba

我测试将我的共享移入sysvol共享,此时连接它们没有任何问题。因此,我检查了sysvol共享上的权限,发现它归BUILTIN\administrators组所有,这是我的分享归所有,但父文件夹也需要该权限,否则 samba 将无法正确读取共享。

一旦我弄清楚我的共享在内部工作,sysvol我就会将权限重新应用于我的/srv/samba目录,并将其移回。我还没有 100% 确定,sysvol但我认为在该共享中存储其他文件可能不是最好的主意。

相关内容