我们有一个运行与空密码和主目录共享桑巴的Ubuntu 9.04服务器,我们有相应的用户在Windows机器上安装所述共享。 实际上,每个用户在服务器上都有一个帐户(和他们的Windows机器上的用户名相同),并在/ home / USERNAME中有一个主目录,它们被安装在本地机器上作为\\ SAMBABOX \ USERNAME ,然后他们可以完全访问。
对于大多数用户来说,这是毫无问题的。 他们可以读取,写入,创build和删除他们的共享上的文件没有问题。 以下是在Samba日志中看到的一个这样的初始连接:
[2009/12/02 10:30:22, 1] smbd/service.c:make_connection_snum(1115) somewindowsbox (192.168.2.123) connect to service ekaufman initially as user ekaufman (uid=1002, gid=1002) (pid 22574)
但是,对于一个用户来说,他们至less不能创build某些文件(SVN工作副本的locking文件)。 从AD域中的任何一台Windows机器,请记住。 看着他们的桑巴日志,他们最初的连接是作为用户nobody ,我不能为我的生活找出原因。
[2009/11/18 10:19:32, 1] smbd/service.c:make_connection_snum(1115) somewindowsbox (192.168.2.123) connect to service jdoe initially as user nobody (uid=65534, gid=65534) (pid 15570)
他们在ubuntu服务器上的用户帐户与其他用户帐户大致相同,如/ etc / passwd中所示 :
ekaufman:x:1002:1002:,,,:/home/ekaufman:/bin/bash jdoe:x:1015:1015:,,,:/home/jdoe:/bin/bash
和/ etc / group :
ekaufman:x:1002: jdoe:x:1015:
甚至/ etc / shadow (当然,在被发布之前删除了密码哈希):
ekaufman:!:14580:0:99999:7::: jdoe:!:14572:0:99999:7:::
我甚至在Ubuntu的盒子上删除了他们的帐户,并重新创build它,没有任何改变。 根据AD域控制器的pipe理员的说法,他们的账户和其他所有的账户都是一样的(删除和重新创build这个账户将会非常复杂)。
如果我从Windows机器上手动为我自己的帐户安装共享,强制用户名,它没有任何意外的工作:
C:\> net use z: \\sambabox.local\ekaufman /user:ekaufman The command was completed successfully
如果我为这个特定的用户做同样的事情,它仍然是没有人连接的,默默地失败:
C:\> net use z: \\sambabox.local\jdoe /user:jdoe The command was completed successfully
这给了我一个印象,无论问题是什么,它都是在Linux的一面。
这是使用中的整个smbconfiguration:
[global] null passwords = yes guest ok = yes security = user workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [homes] comment = Home Directories browseable = no read only = no [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no
我发现这个错误是users.map中的用户名映射,我以前曾经使用它将NIS用户名关联到AD帐户。 将所有NIS切换到AD ServicesForUNIX NIS之后,我忘了删除这些旧的用户名映射。
在我的系统中,有一个叫做“sambashare”的组织。 看看jdoe是否是成员(与其他人一起)。
事实certificate,答案看似简单。 除了在linux机器上需要一个帐户的用户之外,他们还必须被添加到smbpasswd文件中。 另外 ,由于连接是使用空密码创build的,所以我们需要在它们之间添加一个空密码。
# -a flag adds the new user (must already exist in /etc/passwd) # -n flag indicates a null password (different from an empty password) smbpasswd -an jdoe