Назад | Перейти на главную страницу

Конкретные пользователи Windows подключаются к общему ресурсу samba как «никто» вместо имени пользователя?

У нас есть сервер 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 является членом (вместе со всеми).