У нас есть сервер Ubuntu 9.04, на котором запущена samba с нулевыми паролями и общими папками в домашнем каталоге, и у нас есть соответствующие пользователи, которые монтируют указанные общие ресурсы на машинах с Windows. По сути, у каждого пользователя есть учетная запись на сервере (с тем же именем пользователя, что и на их машинах Windows) и домашний каталог в / home / USERNAME который установлен на их локальном компьютере как \\ SAMBABOX \ ИМЯ ПОЛЬЗОВАТЕЛЯ к которому они затем имеют полный доступ.
Для большинства пользователей это работает без проблем; они могут без проблем читать, писать, создавать и удалять файлы в своих общих папках. Ниже приводится одно из таких начальных подключений, которое можно увидеть в журналах самбы:
[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)
В частности, для одного пользователя они не могут - по крайней мере - создавать определенные файлы (блокировать файлы для рабочей копии SVN). Это, заметьте, с любого компьютера с Windows в нашем домене AD. Глядя на их журналы самбы, их первоначальное соединение выполняется как пользователь никто, и я не могу понять почему.
[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
И / и т.д. / группа:
ekaufman:x:1002:
jdoe:x:1015:
И даже / etc / shadow (конечно, с удалением хэшей паролей перед публикацией здесь):
ekaufman:!:14580:0:99999:7:::
jdoe:!:14572:0:99999:7:::
Я даже удалил их учетную запись в окне Ubuntu и воссоздал ее без изменений. По словам администратора контроллера домена AD, их учетная запись более или менее идентична всем остальным (удаление и воссоздание ее там было бы чрезмерно сложным).
Если я вручную монтирую общий ресурс для своей учетной записи с компьютера с 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.
Это вся используемая конфигурация smb:
[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 с учетными записями A.D. После переключения всех NIS на A.D. ServicesForUNIX NIS я забыл удалить эти старые сопоставления имен пользователей.
Как оказалось, ответ был обманчиво прост. Помимо того, что пользователю нужна учетная запись на Linux-машине, их также нужно было добавить в smbpasswd
файл. Дополнительно, поскольку соединения выполняются с нулевыми паролями, нам нужно добавить их с нулевым паролем в указанный файл:
# -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
В моей системе есть группа под названием «самбашаре». Видишь ли, если jdoe является членом (вместе со всеми).