LINUX.ORG.RU
ФорумAdmin

Samba на Ubuntu не даёт прав на запись для Win2003

 


1

1

Прошу помощи, или хотя бы пинка в нужном направлении.

Имеется: Ubuntu Server 14 с запущенной Samba 4.1.6 Настроил общедоступную шару (smb.conf ниже). AD нет. Все компы (WinXP, Win7, Win8) заходят на [SHARE] с полными правами, а Win2003 только на чтение! Почему??

Заранее спасибо.

[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   dns proxy = no
    netbios name = fs
    security = user
    log file = /var/log/samba/log.%m
    max log size = 1000
    syslog = 0
   panic action = /usr/share/samba/panic-action %d
   map to guest = bad user

[share]
    comment = Share Folder
    path = /mnt/data/samba/share
    browseable = yes
    read only = no
    guest ok = yes
    create mask = 0777

Ответ на: комментарий от anonymous

Нет такой буквы в этом слове (см. ман).

По теме: включи log level повыше (3, например, или 5), и посмотри что происходит на сервере. Еще неплохо бы понять, что значит «заходит с правами только на чтение». Что происходит при попытке записать файл? Файл появляется, но пустой, или вообще не появляется?

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

Что происходит при попытке записать файл

при попытке создать файл или папку - «отказ в доступе»

Что значит заходит с правами на чтение

- из Windows 2003 можно лазить по шаре по всем папкам, скачивать всё, но нельзя создавать, переименовывать, удалять.

включи log level повыше (3, например, или 5)

- спасибо, поизучаю этот совет, если что увижу - отпишусь.

gurlov ()
Ответ на: комментарий от anonymous

иди ман читай, нет больше «шары». выкинули в четвертой самбе

anonymous ()
Ответ на: комментарий от anonymous

Цитата из //help.ubuntu.ru/wiki/

Параметр security=share не рекомендуется Вместо share используйте

security = user
map to guest = Bad User

Но я попробовал security = share и получил в ответ:

WARNING: Ignoring invalid value 'share' for parameter 'security

gurlov ()
Ответ на: комментарий от anonymous

О том, что такой опции как share у параметра security для samba 4 нету, это раз. Само по себе это не является решением проблемы (т. к. пока непонятно, в чем проблема), это два. Не говоря о том, что потенциально это ухудшение безопасности (не в данном случае), это три.

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

как вариант сервак юзера с пасом закешировал, а мозгов только на одну комбинацию, ну такая странная винда, да
net use * /delete /y
периодически помогает, правда рубит все соединения, надо подымать заного

anonymous ()
Ответ на: комментарий от Kiborg

включил log level = 5, удалил старый лог, перезапустил полностью сервер, после включения зашёл на шару из windows2003 и попробовал удалить папку Новая папка (2). Не удалось. После чего пошёл искать в логах всё похожее на Новая папка (2) офигел, конечно, от объёма лога ))) вот что пока нашёл:

check_reduced_name: Новая папка (2) reduced to /mnt/data/samba/share/Новая папка (2)
[2014/12/09 17:50:51.439693,  3] ../source3/smbd/error.c:82(error_packet_set)
  NT error packet at ../source3/smbd/error.c(165) cmd=162 (SMBntcreateX) NT_STATUS_OBJECT_NAME_NOT_FOUND

gurlov ()
Ответ на: комментарий от anonymous

map to guest = Bad Password

однако, тоже не помогло. Gравда, после этого изменения я делал smbd reload, сервер полностью не перезагружал.

gurlov ()
Ответ на: комментарий от Kiborg

А вообще какой из имеющихся логов смотреть внимательней? log.smbd?

и в секции [global] у меня syslog = 0 это нормально? Уж простите за дилетантские вопросы

gurlov ()
Ответ на: комментарий от gurlov

syslog=0 — стандартный конфиг, уж не знаю почему. Наверное, чтобы логи от каждой машины были в отдельном файле. Этот флаг означает, что не будет использоваться системный журнал, а логирование будет вестись средствами самой самбы.

Какой из логов смотреть не знаю. Вообще там по идее только два файла должно быть, которые могут иметь отношение к проблеме: log.machine и log.smbd. Первый относится к действиям собственно клиента (машины), второй — к действиям сервера.

Kiborg ★★★ ()
Ответ на: комментарий от gurlov

А если создать папку только из латинских букв без пробелов? Только из латинских букв и пробелов? Хотя бы с 1 кириллическим символом без пробелов?

Kiborg ★★★ ()
Последнее исправление: Kiborg (всего исправлений: 1)
Ответ на: комментарий от Kiborg

в логе log.win2003 нашёл только это:

check_parent_access: access check on directory latф for path latф/Новая папка for mask 0x4 returned (0x4) NT_STATUS_ACCESS_DENIED
[2014/12/10 18:31:14.119098,  5] ../source3/smbd/open.c:2903(mkdir_internal)
  mkdir_internal: check_parent_access on directory latф for path latф/Новая папка returned NT_STATUS_ACCESS_DENIED
[2014/12/10 18:31:14.119169,  2] ../source3/smbd/open.c:3071(open_directory)
  open_directory: unable to create latф/Новая папка. Error was NT_STATUS_ACCESS_DENIED
[2014/12/10 18:31:14.119242,  3] ../source3/smbd/error.c:82(error_packet_set)
  NT error packet at ../source3/smbd/error.c(165) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
[2014/12/10 18:31:14.119314,  5] ../source3/lib/util.c:168(show_msg)
и
 [2014/12/10 18:31:14.124043,  5] ../source3/smbd/filename.c:258(unix_convert)
unix_convert called on file "latф"
[2014/12/10 18:31:14.124120,  3] ../source3/smbd/vfs.c:1137(check_reduced_name)
  check_reduced_name [latф] [/mnt/data/samba/share]
[2014/12/10 18:31:14.124195,  3] ../source3/smbd/vfs.c:1267(check_reduced_name)
  check_reduced_name: latф reduced to /mnt/data/samba/share/latф
[2014/12/10 18:31:14.124265,  5] ../source3/smbd/open.c:3019(open_directory)
  open_directory: opening directory latф, access_mask = 0x100001, share_access = 0x3 create_options = 0x1, create_disposition = 0x2, file_attributes = 0x90
[2014/12/10 18:31:14.124338,  2] ../source3/smbd/open.c:3060(open_directory)
  open_directory: unable to create latф. Error was NT_STATUS_OBJECT_NAME_COLLISION
[2014/12/10 18:31:14.124409,  3] ../source3/smbd/error.c:82(error_packet_set)
  NT error packet at ../source3/smbd/error.c(158) cmd=162 (SMBntcreateX) NT_STATUS_OBJECT_NAME_COLLISION

gurlov ()
Ответ на: комментарий от gurlov

Ок, давай разбираться со случаем, когда все имена состоят только из латинских букв. Создай папку latinfoldername в корне шары, подключись к ней и попробуй удалить из win2003. Дальше на сервере

grep -r -C 3 latinfoldername /var/log/samba

Что на выходе?

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

Сделал как вы писали. Результат большой. На форуме не нашёл как прикрепить файл по этому : https://www.dropbox.com/s/lsyn1fo2pk2wqfr/grep.txt?dl=0 С вашего позволения ещё один отвлечённый вопрос: у меня сильно растёт файл log.nmbd, уже больше 300 МегаБайт. Как быть?

gurlov ()
Ответ на: комментарий от gurlov

Можно попробовать поставить log level = 1 smb:5 в smb.conf. По идее тогда не будет так быстро расти. Заодно я бы остановил службы smb, nmb и удалил логи, чтобы было меньше мусора при следующих попытках.

А что говорит ls -l /mnt/data/samba/share/latinfoldername ?

Какие-то из машин присоединены к домену?

Kiborg ★★★ ()
Ответ на: комментарий от gurlov

Еще было бы интересно посмотреть на те же логи, но когда подключается нормальный клиент, который может эту папку удалить. Можно опять остановить сервисы, удалить логи и попробовать. И эти логи посмотреть.

Kiborg ★★★ ()
Ответ на: комментарий от gurlov

Так, два исправления. Во-первых, уже прочитал что AD нету. И во-вторых, «ls -ld», а не «ls -l». Хотя выше уже был пример, но там как раз этого флага не было.

Короче, вот что интересно: ls -ld /mnt/data/samba/share/latinfoldername /mnt/data/samba/share/

Ну и как в прошлом комментарии написал, логи неуспешного и успешного удаления интересно посмотреть.

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

[Можно попробовать поставить log level = 1 smb:5 в smb.conf.

Спасибо, А заставить этот лог ротироваться можно как-то?

А что говорит ls -l /mnt/data/samba/share/latinfoldername ?

ls -l /mnt/data/samba/share/

drwxr-xr-x  2 nobody nogroup   4096 дек.  12 15:42 latinfoldername
drwxr-xr-x  2 nobody nogroup   4096 дек.  10 18:30 lat lat
drwxr-xr-x  2 nobody nogroup   4096 дек.  10 18:25 latф

ls -l /mnt/data/samba/share/latinfoldername

итого 0

Какие-то из машин присоединены к домену?

Домена вообще не существует в сети

Еще было бы интересно посмотреть на те же логи, но когда подключается нормальный клиент, который может эту папку удалить. Можно опять остановить сервисы, удалить логи и попробовать. И эти логи посмотреть.

Удалил все логи в /var/log/samba, перезагрузил комп, после загрузки зашёл на шару с другого компа и удалил папку. Сделал grep -r -C 3 latinfoldername /var/log/samba Результат в файле: https://www.dropbox.com/s/3c0196e2td9e091/grep2.txt?dl=0

gurlov ()
Ответ на: комментарий от Kiborg

Короче, вот что интересно: ls -ld /mnt/data/samba/share/latinfoldername /mnt/data/samba/share/

drwxr-xr-x 6 nobody nogroup 4096 дек.  12 18:40 /mnt/data/samba/share/
drwxr-xr-x 2 nobody nogroup 4096 дек.  12 18:40 /mnt/data/samba/share/latinfoldername
gurlov ()
Ответ на: комментарий от gurlov

/var/log/samba/log.win2003: unix_convert called on file «latinfoldername:(\0x0005)BnhqlkugBim0elg1M1pt2tjdZe:$DATA»

/var/log/samba/log.artem: unix_convert called on file «latinfoldername»

Вот и причина. Windows 2003 почему-то обращается к файловому потоку даже на удаленной шаре. А так как кроме дефолтного потока с пустым именем никаких других потоков у этого файла нет, возвращается NT_STATUS_OBJECT_NAME_NOT_FOUND.

Почему windows 2003 так себя ведет, это надо на ней разбираться. Похоже либо на вирус, либо на какие-то системные настройки, уж не знаю какие. В качестве эксперимента можно попробовать подключиться FAR-ом, а не через explorer, либо windows commander, либо еще отключить антивирус. Если при всём этом тот же результат, то вероятно вирус, если из фара папку удалить можно, значит скорее всего это какое-то расширение для Windows Explorer шалит. Попробуй для разнообразия виртуалку с чистой 2003 сделать для теста.

P. S. когда копипастил имя стрима, затесался непечатаемый символ, который я обозначил как 0x0005, и движок лора отказался принимать сообщение. Почти наверняка либо вирус (99%), либо (что вряд ли) антивирус.

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

Обалдеть!! Вот это вы ТЕМУ для изучения для меня открыли! Почитаю на выходных про это основательней, и в понедельник, во все оружие на борьбу с проблемой. ОГРОМНЕЙШЕЕ СПАСИБО.

P.S. в ANSII упомянутый непечатный символ - ENQ, 05 — Enquire. «Прошу подтверждения».

gurlov ()
Ответ на: комментарий от Kiborg

Значит, промежуточный отчёт.

TotalCommander действует так же. ОС проверил на вирусы двумя антивирусами + один раз через LiveCD одного из антивирусов - всё чисто. Поднял из того же дистрибутива чистую Win2003 - с файловым сервером работает нормально (удаляет папки на шаре). Устанавливал поочерёдно те же проги что и на первой Win2003 и проверял, поменяется ли поведение - не меняется, работает как надо. Чего ещё не сделал, что бы обе винды были одинаковыми:

  • не активировал новую Win2003
  • не установил apache
  • не сделал обновление Win2003
  • не активировал сервера управления антивирусами (Каспер и доктор web)

Интуиция подсказывает, что выполнив эти пункты, у меня всё равно будет нормально работать новая Win2003. Придётся мигрировать на свежую. Лишь бы это не обернулось проблемами.

P.S. На форуме Microsoft пока тишина по моему вопросу о найденом вами косяке.

gurlov ()
Ответ на: комментарий от gurlov

Товарищ выше привел полезную ссылку, которая гуглится по названию потока. Оказывается, в WinXP/2003 это был один из известных (Well-known) потоков, в котором хранится информация о файле, типа комментариев, авторстве, всякие ключевые слова и т. п. Не могу представить, что заставляет Explorer вычитывать информацию из этого потока. Возможно, это следы какой-то ранее установленной программы (офис, антивирусы). Попробуй сделать нового юзера, а также воспользоваться Process monitor, чтобы посмотреть какие dll подключены в процесс эксплорера там и там.

Kiborg ★★★ ()
Ответ на: комментарий от berrywizard

Property sets, when applied to files, use a number of different stream names. The initial character is Unicode U+2663, known as (BLACK CLUB).

Спасибо, но у меня в логах символ enquiry (U+0005). вместо U+2663. Или это не важно?

gurlov ()
Ответ на: комментарий от Kiborg

Попробуй сделать нового юзера

АЛЛЛЛИЛУЯ !!)))) Это сработало (интересно, почему?) Наконец-то могу делать резервные копии на файловый сервер с Win2003 Ещё раз ОГРОМНОЕ спасибо.

gurlov ()
Ответ на: комментарий от Kiborg

А могло это происходить из-за того, что на Win2003 и на Ubuntu (файловый сервер) совпадает логин и пароль пользователя?

gurlov ()
Ответ на: комментарий от gurlov

Ну это в общем несложно проверить: создать на самбе другого пользователя и подключаться им. Но я в это не верю: запрос исходит от клиента, а на нем нельзя проверить, совпадают учетные данные или нет.

Kiborg ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.