samba4域成员服务器:用户不能看到共享列表,而是提示inputsamba密码

我们需要弄清为什么Windows域用户在访问samba服务器时被提示input密码。 他们可以在Microsoft Windows Network下看到服务器,但是他们看不到共享列表,因为当他们点击服务器的名字时,他们会得到一个密码对话框。

对话是问题。 这不应该显示出来。 我会提供这种情况下,它有助于:域名login无效。 同样,我不需要这个工作,但是一个configuration了本地samba密码的用户不能进行身份validation(使用smbpasswd设置)。

有一次,我在smb.conf中删除了一个额外的份额,并重新启动了服务nmb,smb,winbind ,并开始工作。 我不记得做任何其他改变。 后来,我做了一次重启,看看它是否稳定,并且自此以后就不允许用户看到这些股票。

它实际上是工作了一段时间,它让人们看到的股份,甚至让他们进入那里的文件夹(如通过使用Active Directory安全组授权)。

我的设置如下: https : //wiki.samba.org/index.php/Samba4/Domain_Member

我暂时禁用了防火墙。 一旦修复,我确实包含了防火墙规则,并使用本指南中的一些命令: http : //wiki.centos.org/HowTos/SetUpSamba

这是我通过testparm进行validation的主要configuration:

 # testparm Load smb config files from /etc/samba/smb.conf Processing section "[public]" Processing section "[accounting]" Processing section "[developer]" Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions [global] workgroup = MYWORKGROUP realm = MYWORKGROUP.COM server string = Samba4 Server security = ADS kerberos method = dedicated keytab winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes winbind nss info = rfc2307 idmap config MYWORKGROUP:range = 500-40000 idmap config MYWORKGROUP:schema_mode = rfc2307 idmap config MYWORKGROUP:backend = ad idmap config *:range = 70001-80000 idmap config * : backend = tdb [public] path = /mnt/public force group = domain users read only = No [accounting] path = /mnt/accounting valid users = accounting force group = accounting read only = No [developer] path = /mnt/developer force group = developer read only = No 

的/etc/krb5.conf

 # cat krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYWORKGROUP.COM dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h forwardable = yes [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } 

在文件后面加上winbind(注意,有些系统使用紧凑而不是文件):

 # egrep winbind nsswitch.conf passwd: files winbind shadow: files winbind group: files winbind 

我没有看到需要安装的任何SELinux Samba安全function:

 # getsebool -a | grep samba samba_create_home_dirs --> off samba_domain_controller --> off samba_enable_home_dirs --> off samba_export_all_ro --> off samba_export_all_rw --> off samba_portmapper --> off samba_run_unconfined --> off samba_share_fusefs --> off samba_share_nfs --> off sanlock_use_samba --> off use_samba_home_dirs --> off virt_use_samba --> off # getsebool -a | grep smb allow_smbd_anon_write --> off 

虽然,我必须在脚本中启动nmbd ,因为服务启动脚本在此平台bind failed on pipe socket /var/run/samba/nmbd/unexpected: Address already in use发生错误( bind failed on pipe socket /var/run/samba/nmbd/unexpected: Address already in use发生bind failed on pipe socket /var/run/samba/nmbd/unexpected: Address already in use )。 它有一点,当我刚刚开始使用命令: nmbd (两个消息出现在log.nmbd: nmbd ...startedstandard input is not a socket, assuming -D option )。 所以,这里是我的重启脚本:

 # cat smb-restart service nmb restart nmbd service smb restart service winbind restart ps -eaf|egrep "mbd|winbind" 

一切似乎都在运行:

 # ps -eaf|egrep "mbd|winbind" root 25057 1 0 12:38 ? 00:00:00 nmbd root 25071 1 0 12:38 ? 00:00:00 smbd root 25087 1 0 12:38 ? 00:00:00 winbindd root 25091 25087 0 12:38 ? 00:00:00 winbindd root 25092 25071 0 12:38 ? 00:00:00 smbd root 25512 25087 0 12:45 ? 00:00:00 winbindd root 25513 25087 0 12:45 ? 00:00:00 winbindd root 25514 25087 0 12:45 ? 00:00:00 winbindd root 25579 25087 0 12:45 ? 00:00:00 winbindd 

不知道这是否是必需的,但我在这里添加了pam winbind命令:

 # cat /etc/pam.d/system-auth-ac #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_krb5.so use_first_pass auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account sufficient pam_winbind.so use_first_pass account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_krb5.so use_authok password sufficient pam_winbind.so use_first_pass password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_krb5.so session optional pam_winbind.so use_first_pass 

我已经成功join域,我可以通过wbinfo -uwbinfo -g查看域用户和组。

我可以使用kinit [email protected]klist列出并重新创build服务主体。

我认为winbind加载正常:

 # ldconfig -v | grep winbind libnss_winbind.so.2 -> libnss_winbind.so.2 # locate libnss_winbind /lib64/libnss_winbind.so /lib64/libnss_winbind.so.2 /usr/lib64/libnss_winbind.so # locate libnss_wins /lib64/libnss_wins.so /lib64/libnss_wins.so.2 /usr/lib64/libnss_wins.so 

我有一个叫做jcalfee的用户,但是id命令找不到它们:

 # wbinfo -u|egrep jcalfee jcalfee # id jcalfee id: jcalfee: No such user 

但是,我可以使用域组来chgrp

 chgrp "domain users" /mnt/public 

我的主机文件包含这样一行,我需要首先在127.0.0.1行上将smb-host完全parsing名称:

 127.0.0.1 smb-host.domain.com samba-host localhost .... 

这是我如何在SELinux中设置一个新的共享目录,这一直工作:

 function mkdir_samba_share { path=${1?directory path} set -o xtrace mkdir -p "$path" semanage fcontext -a -t samba_share_t "$path(/.*)?" restorecon -R "$path" chmod 770 -R "$path" chgrp "domain users" "$path" ls -ldZ "$path" set +o xtrace } 

我添加了一个keytab(如果你的smb.conf不包含全局kerberos方法,这将会发出警告)。

 net ads keytab create -U Administrator%password 

毫无疑问,这是一种authentication机制失败的种类。 我认为Kerberos正在为你工作?

 kinit [email protected] 

 kinit [email protected] 

之后检查

 klist 

两个authentication令牌应该显示出来。 如果不是,请回复答案。 我已经看到了一堆可能的错误,但是让我们一个一个地排除它们。