Mount error 12 cannot allocate memory

I encountered this problem a while ago when upgrading my kernel but put off upgrading until now. On my system I can happily mount network shares using CIFS running kernel 3.7.10, however when I've...

I encountered this problem a while ago when upgrading my kernel but put off upgrading until now.

On my system I can happily mount network shares using CIFS running kernel 3.7.10, however when I’ve tried with newer kernels (currently trying with 3.13.1, but have been trying since 3.12.6) I get the following errors when I attempt to mount them with /etc/init.d/netmount start (I’m running Gentoo):

# /etc/init.d/netmount restart
* Unmounting network filesystems  ...                                      [ ok ]
* Mounting network filesystems ...
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)   

Attempting to mount manually results in the same error…

# mount -t cifs //Server/to_mount1 /mnt/network1 -o credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

The error occurs three times as I’ve three network shares I’m attempting to mount, here are my /etc/fstab entries (which are completely unchanged between kernel versions):

# Network drives
//Server/to_mount1/mnt/network1 cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0
//Server/to_mount2/another/dir /mnt/network2    cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0
//Server/to_mount3  /mnt/network3   cifs        credentials=/etc/nfs_share.credentials,users,rw,uid=slackline,gid=slackline 0 0

Searching around I found quite an old solution to this problem which requires access to the Windows server to make some modifications, this is detailed here.

Unfortunately this is at work and not only do I not have access to the Windows server to test whether these changes would make any difference, but also its only happening with the newer 3.12.6 kernel, I can reboot into the 3.7.10 kernel and the network shares are mounted without any problem.

This leads me to think that there is a problem with the newer kernel, so I’ve looked at the CIFS options under both the 3.7.10 kernel configuration:

# grep -i cifs /usr/src/linux-3.7.10-gentoo-r1/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

…and under the 3.12.6 configuration:

# grep -i cifs /usr/src/linux-3.13.1-gentoo/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

…and they are the same (no real surprise there since I didn’t change anything!).

I re-emerged net-fs/cifs-utils just in case there was something awry there but it made no difference.

Is there a way I can work around this without having access to the Windows share to test the suggested solution (if that is indeed the underlying cause) or is there something else that is causing the problem?

Содержание

  1. mount.cifs и ошибки CIFS VFS: cifs_mount failed w/return code = -5 / -12 и Cannot allocate memory
  2. Boinst
  3. You say /təˈmeɪtoʊ/, I say /təˈmɑːtoʊ/.
  4. Mount.cifs cannot allocate memory mounting Windows share
  5. Share
  6. Like this:
  7. Related
  8. 15 comments on “ Mount.cifs cannot allocate memory mounting Windows share ”
  9. mount.cifs : mount error(12) : Cannot allocate memory
  10. Mount error 12 cannot allocate memory
  11. Нужна помощь: убунта перестала монтировать cifs?

mount.cifs и ошибки CIFS VFS: cifs_mount failed w/return code = -5 / -12 и Cannot allocate memory

Недавно поставил ещё одну винду (к сожалению, приходится пользоваться в своём домашнем хозяйстве), вспомнил о проблеме.

Собственно, как сделать всё без правки реестра? Возможно ли пропатчить самбу или указать ей какой-то флаг? Когда я раньше работал на ubuntu 10.04 и использовал smbmount, то проблем не было.

Монтирую так:
mount.cifs //192.168.x.x/share /mnt/share -o iocharset=utf8,username=admin

При копировании сначала отваливается после копирования нескольких файлов с ошибкой CIFS VFS: cifs_mount failed w/return code = -5 , потом не могу подключиться
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
с ошибкой CIFS VFS: cifs_mount failed w/return code = -12
в общем, всё как по ссылке выше.

eix samba:
net-fs/samba
Available versions: (

)3.5.2[2] 3.5.15^t 3.5.21^t 3.6.9^t 3.6.12^t (

А виндовс какой? Не семерка или 2008 ?

С вистой тоже глючило.

UAC конечно отключили? Что в логах виндовса в этот момент? В системных и в секурити

Хм. Видимо, да. Я сборочкой пользуюсь.

Что в логах виндовса в этот момент? В системных и в секурити

В безопасности — ничего. В системных ошибка:
Сервер не смог выделить память из невыгружаемого пула памяти, так как достигнут указанный в конфигурации верхний предел.

Тогда только правка реестра, увы. Похожая проблема описана как в многочисленных блогах, так и на support.microsoft.com. Других вариантов нет — это утечка памяти в Windows при сетевом доступе к папке.

А почему винда с виндой нормально работают, а также ubuntu 10.10 с виндой? Тут явно проёб самбы, а никак не винды. Я, конечно, понимаю, что в винде всё через жопу, но под это подстраиваться надо, а заставлять в реестр каждого компа с виндой лезть.

Исходя из того, что ошибка происходит при выделении буфера, а также из того, что размер твикаем в реестре мы тоже его, я прочел манул к mount.cifs и нашел там опции rsize и wsize, которые определяют размеры буферов. Мало того, там было написано, в старых ядрах размер буфера был статичен (без автоопределения) и равнялся 57344 (для чтения чуть больше). Я сделал так:
mount.cifs //192.168.x.x/share /mnt/share -o iocharset=utf8,username=admin,rsize=16000,wsize=16000

Причём нужно (не знаю почему, возможно именно это и позволяет избежать переполнения), чтобы значение было меньше кратного 4096.

И скопировал 20Гб по сети на :))

Мало того, копирование мелких файлов почему-то было быстрее, чем на твикнутой семерке, где нормально работали большие буферы. Прошу проверить и распространить вышеуказанную инфу про буферы, т.к. я не нашел с полпинка в гугле такого (простого и удобного) решения.

C wifi вообще жопа: 500кбайт в сек. Но я им не пользуюсь, так что пофиг.

Источник

Boinst

You say /təˈmeɪtoʊ/, I say /təˈmɑːtoʊ/.

Mount.cifs cannot allocate memory mounting Windows share

Mounting a Windows (SMB) share on Ubuntu gives us a “cannot allocate memory” error.

Executing a command like this:

mount -t cifs //toad/Backup /media/backup -o user=username,password=password,iocharset=utf8,file_mode=0777,dir_mode=0777

We get an error like this:

mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Solution:

First, check the permissions on your shared folder. Right-click the folder and select Properties. Your Windows user must be allocated permissions on both the Security and the Sharing tabs.

Open regedit, and set the following registry key to ‘1’. This key tells Windows to set aside enough system cache for sharing large files. Commenter Raoul Duke (thanks!) adds that this change is unnecessary on Windows 7 and later.

HKLMSYSTEMCurrentControlSetControlSession ManagerMemory ManagementLargeSystemCache

And set the following registry key to ‘3’. This value tells Windows to prioritise file sharing over reducing memory usage. You can read more about this key here.

Reboot (or just restart the “Server” service in services.msc – thanks Sergio Francisco for the pointer!). Your problem should now be solved.

Links

Like this:

Instead of reboot computer, you can only restart “Server” service in services.msc. Thanks!

Thanks Sergio I have updated the OP to reflect your tip.

[…] but was receiving a “Mount.cifs cannot allocate memory mounting Windows share” message. These Windows registry edits might have solved the issue I was having… or perhaps it was the samba updates that […]

You don’t need to change “LargeSystemCache” on Win7. Only “…LanmanServerParametersSize”. And as Sergio wrote, no reboot either. Only restarting the Server service .

Thanks Raoul I have updated the OP to reflect this tip.

worked like a charm! thx!

it really worked. mine the registry settings was wrong

Had the same problem, but no access to the server, so I tried something else. The server was a Win2008 so I tried specifying the version (vers=2.1 in the options string). Worked like a charm.

This tip (specifying the version vers=2.1 in the options string) worked for me too. The server was Windows 7 Pro. Thank you very much!

Here was the error I was getting:

> sudo mount -t cifs //192.168.x.x/share

/share -o username=bob
Password for bob@//192.168.x.x/share:
mount error(121): Remote I/O error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Found this blog through Google search, but did not want to mess with registry settings on the Windows server. Ended up browsing man mount.cifs and found out about the “vers” option (should have read through these comments first!) Anyway, if you don’t specify vers, it defaults to 1.0, and apparently Windows 7 works better with 2.1.

From the man page:
vers=
SMB protocol version. Allowed values are:

· 1.0 – The classic CIFS/SMBv1 protocol. This is the default.

· 2.0 – The SMBv2.002 protocol. This was initially introduced in
Windows Vista Service Pack 1, and Windows Server 2008. Note
that the initial release version of Windows Vista spoke a
slightly different dialect (2.000) that is not supported.

· 2.1 – The SMBv2.1 protocol that was introduced in Microsoft
Windows 7 and Windows Server 2008R2.

· 3.0 – The SMBv3.0 protocol that was introduced in Microsoft
Windows 8 and Windows Server 2012.

Here is the corrected command which now works for me:
> sudo mount -t cifs //192.168.x.x/share

/share -o username=bob,vers=2.1

Bob … this was kicking my backside something fierce. Thanks! Should have checked the man pages.

Thank you very much!. I have the same problem and resolved following this post. I have win7 and change only lanmanserver. Thanks again.

Источник

mount.cifs : mount error(12) : Cannot allocate memory

I encountered this problem a while ago when upgrading my kernel but put off upgrading until now.

On my system I can happily mount network shares using CIFS running kernel 3.7.10, however when I’ve tried with newer kernels (currently trying with 3.13.1, but have been trying since 3.12.6) I get the following errors when I attempt to mount them with /etc/init.d/netmount start (I’m running Gentoo):

Attempting to mount manually results in the same error.

The error occurs three times as I’ve three network shares I’m attempting to mount, here are my /etc/fstab entries (which are completely unchanged between kernel versions):

Searching around I found quite an old solution to this problem which requires access to the Windows server to make some modifications, this is detailed here.

Unfortunately this is at work and not only do I not have access to the Windows server to test whether these changes would make any difference, but also its only happening with the newer 3.12.6 kernel, I can reboot into the 3.7.10 kernel and the network shares are mounted without any problem.

This leads me to think that there is a problem with the newer kernel, so I’ve looked at the CIFS options under both the 3.7.10 kernel configuration:

. and under the 3.12.6 configuration:

. and they are the same (no real surprise there since I didn’t change anything!).

I re-emerged net-fs/cifs-utils just in case there was something awry there but it made no difference.

Is there a way I can work around this without having access to the Windows share to test the suggested solution (if that is indeed the underlying cause) or is there something else that is causing the problem?

Источник

Mount error 12 cannot allocate memory

Searching around I found quite an old solution to this problem which requires access to the Windows server to make some modifications, this is detailed here.

Unfortunately this is at work and not only do I not have access to the Windows server to test whether these changes would make any difference, but also its only happening with the newer 3.12.6 kernel, I can reboot into the 3.7.10 kernel and the network shares are mounted without any problem.

This leads me to think that there is a problem with the newer kernel, so I’ve looked at the CIFS options under both the 3.7.10 kernel configuration:

Код:
# grep -i cifs /usr/src/linux-3.7.10-gentoo-r1/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

. and under the 3.12.6 configuration:

Код:
# grep -i cifs /usr/src/linux-3.12.6-gentoo/.config
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
# CONFIG_CIFS_FSCACHE is not set

. and they are the same (no real surprise there since I didn’t change anything!).

I re-emerged net-fs/cifs-utils just in case there was something awry there but it made no difference.

Is there a way I can work around this without having access to the Windows share to test the suggested solution (if that is indeed the underlying cause) or is there something else that is causing the problem?

Thanks in advance for your time and assistance,

slackline
_________________
» Science is what we understand well enough to explain to a computer. Art is everything else we do. » — Donald Knuth Вернуться к началу

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Copyright 2001-2023 Gentoo Foundation, Inc. Designed by Kyle Manna © 2003; Style derived from original subSilver theme. | Hosting by Gossamer Threads Inc. © | Powered by phpBB 2.0.23-gentoo-p11 © 2001, 2002 phpBB Group
Privacy Policy

Источник

Нужна помощь: убунта перестала монтировать cifs?

Имею комп с убунтой-сервером 10.04. До вчерашнего дня работала нормально. Вчера поставил очередные обновления (не уверен, что дело в них, но вдруг). Сегодня ночью отвалились сетевые диски: скрипт, запущенный из крона сообщил (/net/win7 — сетевой диск от вин-7):

ls: cannot access /net/win7: Cannot allocate memory

На всякий случай перезагрузил сервер (бывало уже, что после обновлений все вставало в раскоряку до перезагрузки). Убунта радостно сообщила, что «Disk drive for /foo/bar is not ready yet or not present» и стала ждать, когда я нажму S (продолжить не монтируя). Причем /foo/bar — локальная директория, замонтированная через bindfs, сетью там и не пахнет.

Нажал S, все загрузилось, но ни сетевой диск, ни /foo/bar не замонтировались. Последний потом смонтировался руками — видимо, тут дело только в том, что он идет в fstab позже сетевого и до него просто не дошла очередь (но хотелось бы услышать подтверждение от знатоков).

Попытки подмонтировать руками сетевой диск ни к чему хорошему не приводят:

mount error(12): Cannot allocate memory

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Посмотрел dmesg, там написано:

CIFS: Unknown mount option codepage

CIFS: Unknown mount option unicode

CIFS VFS: Send error in SessSetup = -12

CIFS VFS: cifs_mount failed w/return code = -12

Похоже, что-то не так в fstab:

//WIN7/blah /net/win7 cifs guest,iocharset=utf8,codepage=unicode,unicode 0 0

До вчерашнего дня оно работало, потом почему-то перестало.

Вобщем, очень хотелось бы узнать, как вылечить пациента.

И еще вопрос: можно ли сделать так, чтобы убунта не просила меня нажимать кнопки при ошибках монтирования, а продолжала грузиться (диск-то некритичный)? Я с этим сервером общаюсь чаще всего удаленно и нажать кнопку не могу.

Источник

Adblock
detector

Ссылки по теме

  • Интеграция Active Directory
  • Samba/Контроллер домена Active Directory
  • NFS (Русский)

Состояние перевода: На этой странице представлен перевод статьи Samba. Дата последней синхронизации: 2014-10-08. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Samba — это реализация сетевого протокола SMB. Она облегчает организацию общего доступа к файлам и принтерам между системами Linux и Windows и является альтернативой NFS (Русский).

Contents

  • 1 Настройка сервера
    • 1.1 Установка
      • 1.1.1 Настройка межсетевого экрана
    • 1.2 Создание ресурсов для общего доступа
    • 1.3 Запуск служб
    • 1.4 Создание ресурсов общего доступа от имени обычного пользователя
    • 1.5 Добавление пользователя
    • 1.6 Смена пароля Samba-пользователя
  • 2 Настройка клиента
    • 2.1 Ручное монтирование
      • 2.1.1 Добавление ресурса в /etc/fstab
      • 2.1.2 Монтирование пользователями
    • 2.2 Имена хостов WINS
    • 2.3 Автоматическое монтирование
      • 2.3.1 smbnetfs
        • 2.3.1.1 Демон
      • 2.3.2 autofs
    • 2.4 Настройка файлового менеджера
      • 2.4.1 Nautilus, Nemo, Thunar и PCManFM
      • 2.4.2 KDE
      • 2.4.3 Другие графические окружения
  • 3 Решение проблем
    • 3.1 Проблемы подключения к Windows 7 — mount error(12): cannot allocate memory
    • 3.2 Проблемы получения доступа к ресурсам, защищенным паролем, из Windows
    • 3.3 Диалоговое окно появляется с большой задержкой
    • 3.4 Ошибка: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
    • 3.5 Не удается предоставить общий доступ к папке
    • 3.6 «Просмотр» сети выдает ошибку «Не удалось получить список ресурсов с сервера» (Failed to retrieve share list from server)
    • 3.7 Вы не являетесь владельцем каталога
    • 3.8 protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
    • 3.9 Подключение к серверу завершилось неудачей: (Error NT_STATUS_UNSUCCESSFUL)
  • 4 Смотрите также
  • 5 Больше информации

Настройка сервера

Установка

Установите пакет samba.

Samba настраивается с помощью конфигурационного файла /etc/samba/smb.conf, который широко документирован на странице руководства smb.conf(5).

В связи с тем, что пакет samba поставляется без данного файла, вам нужно создать его перед запуском smbd.

Вы можете воспользоваться документированным примером, как в smb.conf.default из git-репозитория Samba для создания /etc/samba/smb.conf.

Примечание:

  • Файл настроек по умолчанию задаёт log file место, доступное только для чтения, что будет вызывать ошибки. Вы можете воспользоваться одним из следующих решений:
    • Задайте файлу регистрации расположение с возможностью записи: log file = /var/log/samba/%m.log
    • Используйте бекенд для нефайлового журналирования: замените logging = syslog на syslog only = yes или используйте logging = systemd
  • Если требуется; workgroup, указанная в секции [global], должна соответствовать домашней группе (workgroup) Windows (по умолчанию: WORKGROUP).

Совет: Каждый раз, когда вы изменяете файл smb.conf, запускайте команду testparm(1) для проверки файла на синтаксические ошибки.

Настройка межсетевого экрана

Если вы используете межсетевой экран, не забудьте открыть необходимые порты (как правило, 137-139 + 445). Для получения информации о полном списке портов, смотрите использование портов Samba.

Создание ресурсов для общего доступа

Откройте файл /etc/samba/smb.conf и прокрутите текст вниз до секции Share Definitions. В конфигурации по умолчанию автоматически предоставляется общий доступ к домашним каталогам всех пользователей. Также по умолчанию он предоставляется для принтеров. Здесь есть несколько закомментированных примеров конфигурации. Больше информации о доступных опциях для ресурсов с общим доступом можно найти на странице руководства smb.conf(5), которая также доступна в онлайн версии.

Со стороны Windows не забудьте изменить файл smb.conf для Windows Workgroup (в Windows по умолчанию: WORKGROUP).

Запуск служб

Примечание: В samba 4.8.0-1, службы были переименованы из smbd.service и nmbd.service в smb.service и nmb.service.

Для организации базовых возможностей обмена файлами при помощи SMB запустите/включите службы smb.service и nmb.service. Для получения дополнительной информации смотрите страницы справочного руководства (man) smbd и nmbd.

Совет: Вместо того, чтобы запускать службу сразу после каждой загрузки системы, вы можете включить smb.socket, благодаря чему она будет запускаться лишь при появлении первого входящего соединения. При этом не забудьте отключить службу smb.service

Создание ресурсов общего доступа от имени обычного пользователя

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

«Usershare» — это возможность, позволяющая обычным пользователям добавлять, изменять и удалять собственные ресурсы общего доступа.

Эта команда создает необходимый каталог в /var/lib/samba:

# mkdir -p /var/lib/samba/usershare

Эта команда создает группу sambashare:

Эта команда меняет владельца и группу каталога, который вы только что создали, на суперпользователя:

# chown root:sambashare /var/lib/samba/usershare

Эта команда меняет разрешения каталога usershares таким образом, что пользователи, входящие в группу sambashare, могут читать, записывать и выполнять файлы:

# chmod 1770 /var/lib/samba/usershare

Задайте эти переменные в конфигурационном файле smb.conf:

/etc/samba/smb.conf

...
[global]
  usershare path = /var/lib/samba/usershare
  usershare max shares = 100
  usershare allow guests = yes
  usershare owner only = yes
  ...

Добавьте вашего пользователя в группу sambashares. Замените ваше_имя_пользователя на имя вашего linux-пользователя:

# usermod -a -G sambashare *ваше_имя_пользователя*

Перезапустите службы smbd и nmbd.

Завершите сеанс и войдите в него вновь. Теперь у вас должна появиться возможность настраивать общий доступ samba, используя графический интерфейс. Например, в Thunar вы можете нажать правую кнопку мыши на любом каталоге и предоставить для него общий доступ в сети.

Добавление пользователя

Создайте учетную запись пользователя Linux для пользователя samba. При необходимости замените *пользователь_samba* на желаемое имя:

# useradd *пользователь_samba*

Затем создайте учетную запись пользователя Samba с тем же именем:

# pdbedit -a -u *пользователь_samba*

Смена пароля Samba-пользователя

Чтобы сменить пароль пользователя, используйте smbpasswd:

# smbpasswd *пользователь_samba*

Настройка клиента

Для доступа к файлам с использованием сервера Samba/SMB/CIFS необходим только пакет smbclient. Он доступен в официальных репозиториях.

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

Существует две «части» предоставления общего доступа. Первая лежит в основе механизма работы файловой системы, а вторая является интерфейсом, который позволяет пользователю выбирать монтируемые ресурсы общего доступа. В некоторых окружениях первая часть уже встроена.

Ручное монтирование

Установите пакет smbclient из официальных репозиториев. Если вы желаете получить более легкий подход и не нуждаетесь в возможности вывода списка общедоступных ресурсов, необходимо установить только cifs-utils, чтобы предоставить файл /usr/bin/mount.cifs.

Чтобы вывести список общедоступных ресурсов на сервере:

$ smbclient -L *hostname* -U%

Создать точку монтирования для ресурса:

# mkdir /mnt/*точка_монтирования*

Примонтируйте ресурс, используя в качестве образца файл mount.cifs. Не все опции из перечисленных ниже необходимы или хороши (например, password).

# mount -t cifs //*СЕРВЕР*/*имя_ресурса* /mnt/*точка_монтирования* -o user=*имя_пользователя*,password=*пароль*,workgroup=*рабочая_группа*,ip=*IP_сервера*

SERVER

имя_ресурса

точка_монтирования

Локальный каталог, в который будет примонтирован ресурс.

-o [options]

Смотрите страницу руководства [mount.cifs(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mount.cifs.8) для получения информации.

Примечание:

  • Воздержитесь от использования слэша / на конце. //*СЕРВЕР*/*имя_ресурса***/** не будет работать
  • Если примонтированный вами ресурс работает нестабильно или зависает (freeze), попробуйте включить другую версию протокола SMB, используя опцию vers=. Например, vers=2.0 для Windows Vista.

Добавление ресурса в /etc/fstab

Самый простой способ добавить запись в fstab — использовать что-то вроде этого:

/etc/fstab //*СЕРВЕР*/*имя_ресурса* /mnt/*точка_монтирования* cifs username=*имя_пользователя*,password=*пароль* 0 0

Однако, хранение паролей в легкочитаемом файле не рекомендуется! Более безопасным методом является использование файла полномочий. Например, создайте файл и выполните команду chmod 600 *имя_файла*, в результате чего только пользователь-владелец файла сможет читать и писать в него. Файл должен содержать следующую информацию:

/путь/к/полномочиям/sambacreds

username=*имя_пользователя*
password=*пароль*

а запись в вашем fstab должна выглядеть примерно так:

/etc/fstab //СЕРВЕР/ИМЯ_РЕСУРСА /mnt/*точка_монтирования* cifs credentials=*/путь/к/полномочиям/sambacreds* 0 0

При использовании systemd (современные установки) можно использовать опцию comment=systemd.automount, которая увеличивает скорость загрузки сервиса на несколько секунд. Также можно указать текущего пользователя и группу, чтобы сделать жизнь немного проще, используя опции uid и gid.

Важно: Использование опций uid и gid может вызвать ошибки ввода-вывода в программах, пытающихся получить данные с сетевых устройств
/etc/fstab //*СЕРВЕР*/*ИМЯ_РЕСУРСА* /mnt/*точка_монтирования* cifs credentials=*/путь/к/полномочиям*,comment=systemd.automount,uid=*имя_пользователя*,gid=*группа_пользователя* 0 0
Примечание: Пробелы в именах ресурсов должны быть заменены на 40 (восьмеричный ASCII-код для пробелов). Например, //*СЕРВЕР*/имя ресурса должно быть заменено на //*СЕРВЕР*/имя40ресурса в /etc/fstab

Монтирование пользователями

/etc/fstab //*СЕРВЕР*/*ИМЯ_РЕСУРСА* /mnt/*точка_монтирования* cifs users,credentials=*/путь/к/полномочиям*,workgroup=*рабочая_группа*,ip=*IP_сервера* 0 0
Примечание: Необходимо писать users (во множественном числе). Для других типов файловых систем, обрабатываемых командой mount, эта опция обычно имеет вид user, без «s«

Это позволит пользователям монтировать ресурс, если точка монтирования находится в каталоге, владельцами которого они являются, например, в свою домашнюю директорию. Чтобы пользователи могли монтировать и размонтировать ресурсы Samba в точках монтирования, владельцами которых они не являются, используйте smbnetfs или дайте им необходимые привилегии с помощью sudo.

Имена хостов WINS

Пакет smbclient предоставляет драйвер для использования имен хостов WINS. Чтобы его включить, добавьте “wins” в строку “hosts” файла /etc/nsswitch.conf.

Автоматическое монтирование

Есть несколько способов легко просматривать ресурсы общего доступа:

smbnetfs

Примечание: для smbnetfs необходима целая (нетронутая?) (intact) установка сервера Samba. Смотрите выше, как это сделать

Для начала удостоверьтесь, что вам доступны все ресурсы, которые вам нужны для монтирования:

$ smbtree -U *удаленный_пользователь*

Если это не работает, найдите и измените следующую строку в /etc/samba/smb.conf подобным образом:

Теперь перезапустите службы smbd.service и nmbd.service.

Если все работает, как и ожидалось, установите пакет smbnetfs из официальных репозиториев.

Затем добавьте следующую строку в файл /etc/fuse.conf:

и загрузите модуль ядра fuse:

Скопируйте каталог /etc/smbnetfs/.smb в вашу домашнюю директорию:

$ cp -a /etc/smbnetfs/.smb ~

Затем создайте ссылку на файл smb.conf:

$ ln -sf /etc/samba/smb.conf ~/.smb/smb.conf

Если для доступа к некоторым общим каталогам необходимы имя пользователя и пароль, отредактируйте файл ~/.smb/smbnetfs.auth, включив одну или несколько записей, как эта:

~/.smb/smbnetfs.auth

auth			"hostname" "имя_пользователя" "пароль"

Также возможно добавление записей для специфичных хостов, чтобы они были примонтированы smbnetfs, если это необходимо. Больше информации можно найти в ~/.smb/smbnetfs.conf.

Когда вы закончите настройку, необходимо выполнить

$ chmod 600 ~/.smb/smbnetfs.*

В противном случае smbnetfs пожалуется: ‘insecure config file permissions’.

Наконец, чтобы примонтировать сетевое окружение Samba в каталог по вашему выбору, выполните

$ smbnetfs *точка_монтирования*

Демон

Пакет в Arch Linux также поддерживает дополнительный «общесистемный» режим для smbnetfs. Чтобы его включить, вам необходимо выполнить указанные изменения в каталоге /etc/smbnetfs/.smb.

Затем вы можете запустить и/или включить в автозагрузку демон smbnetfs обычным способом. Общесистемной точкой монтирования является /mnt/smbnet/.

autofs

Смотрите статью Autofs для получения информации об автомонтировщике ядра (kernel-based) Linux.

Настройка файлового менеджера

Nautilus, Nemo, Thunar и PCManFM

Чтобы получить доступ к ресурсам samba через Nautilus, Nemo, Thunar или PCManFM, установите пакет gvfs-smb, доступный в официальных репозиториях.

Нажмите Ctrl+l и введите smb://*имя_сервера*/*ресурс* в панель адреса, чтобы получить доступ к ресурсу.

Примонтированный ресурс, вероятно, будет представлен в файловой системе по пути /run/user/*ваш_UID*/gvfs.

KDE

KDE имеет встроенную возможность просмотра ресурсов Samba, в этом случае нет необходимости в дополнительных пакетах. Однако, для графического интерфейса в Системных Настройках KDE установите пакет kdenetwork-filesharing из официальных репозиториев.

Если при использовании Dolphin вы получите ошибку «Time Out», необходимо раскомментировать и отредактировать эту строку в файле smb.conf: name resolve order = lmhosts bcast host wins

как показано на этой странице.

Другие графические окружения

Есть несколько полезных программ, но им могут требоваться пакеты, созданные для них. Это может быть сделано с помощью Arch package build system. Хорошая новость заключается в том, что они не нуждаются в особом окружении, устанавливаемом для их поддержки, так что они «тянут» за собой меньше пакетов.

  • pyneighborhood доступен в официальных репозиториях
  • Плагины LinNeighborhood, RUmba, xffm-samba для Xffm недоступен в официальных репозиториях или в AUR. Поскольку они не поддерживаются официально (или поддерживаются, но неофициально), они могут быть устаревшими и не работать в полной мере

Решение проблем

Проблемы подключения к Windows 7 — mount error(12): cannot allocate memory

Известная ошибка Windows 7 «mount error(12): cannot allocate memory» может быть исправлена установкой пары ключей в реестре системы Windows:

  • HKLMSYSTEMCurrentControlSetControlSession ManagerMemory ManagementLargeSystemCache (установить значение 1)
  • HKLMSYSTEMCurrentControlSetServicesLanmanServerParametersSize (установить значение 3)

В качестве альтернативы можно запустить командную строку от имени Администратора и выполнить следующее:

reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v "LargeSystemCache" /t REG_DWORD /d 1 /f
reg add "HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters" /v "Size" /t REG_DWORD /d 3 /f

Выполните одно из следующих действий, чтобы изменения вступили в силу:

  • Перезагрузите Windows
  • Перезапустите службу на сервере через services.msc
  • Выполните в командной строке net stop lanmanserver и net start lanmanserver; после остановки служба может перезапуститься автоматически

Примечание: Поиск решения в интернете подскажет другое решение, рекомендующее пользователям добавить ключ, изменяющий размер «IRPStackSize». Это неправильное решение для устранения проблемы в Windows 7. Не применяйте его

Исходная статья.

Проблемы получения доступа к ресурсам, защищенным паролем, из Windows

При проблемах получения доступа к ресурсам, защищенным паролем, из Windows попробуйте добавить следующее в файл /etc/samba/smb.conf:[1]

Обратите внимание, что это должно быть добавлено в локальный файл smb.conf, а не в файл сервера

[global]
# lanman fix
client lanman auth = yes
client ntlmv2 auth = no

Диалоговое окно появляется с большой задержкой

У меня была проблема, связанная с тем, что диалоговое окно для ввода пароля появлялось с задержкой около 30 секунд, когда я пытался установить соединение из Windows XP/Windows 7. Когда я посмотрел файл error.log на сервере, я увидел:

[2009/11/11 06:20:12,  0] printing/print_cups.c:cups_connect(103)
Unable to connect to CUPS server localhost:631 - Interrupted system call

Эта опция предотвращает поиск cups и файла /etc/printcap:

printing = bsd
printcap name = /dev/null

Ошибка: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL

Если вы являетесь домашним пользователем, используете samba исключительно для организации общего доступа к файлам с сервера или NAS и не заинтересованы в организации общего доступа к принтерам, вы можете исправить эту ошибку, добавив следующие строки в файл /etc/samba/smb.conf:

load printers = No
printing = bsd
printcap name = /dev/null
disable spoolss = Yes

Перезапустите samba:

systemctl restart smbd

…проверьте ваши логи:

cat /var/log/samba/smbd.log

и больше ошибка не должна появляться.

Не удается предоставить общий доступ к папке

Проблема проявляется в том, что, когда вы пытаетесь предоставить общий доступ к папке через Dolphin (файловый менеджер), и вначале, вроде бы, все работает нормально, после перезапуска Dolphin иконка ресурса исчезла из папки, а в терминале (Konsole) вы видите следующий вывод:

‘net usershare’ returned error 255: net usershare: usershares are currently disabled

Для решения проблемы включите пользовательские общие ресурсы, как это описано в разделе #Создание ресурсов общего доступа от имени обычного пользователя.

«Просмотр» сети выдает ошибку «Не удалось получить список ресурсов с сервера» (Failed to retrieve share list from server)

И вы используете firewall (iptables), поскольку не доверяете вашей локальной (школа, университет, отель) сети. Это может происходить по следующей причине: когда smbclient просматривает локальную сеть, он посылает широковещательный запрос на udp-порт 137. Затем серверы сети отвечают вашему клиенту, но, поскольку исходный адрес ответа отличается от адреса назначения, который видел iptables при отправке запроса, iptables не признает ответ как «установленное соединение» или «относящийся к запросу», и, следовательно, пакет отбрасывается. Возможное решение — добавление:

iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns

в вашу конфигурацию iptables.

Вы не являетесь владельцем каталога

Попробуйте просто перезагрузить систему.

protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

Вероятно, клиент не имеет доступа к общим ресурсам. Удостоверьтесь, что IP-адрес клиента прописан в строке hosts allow = файла /etc/samba/smb.conf.

Подключение к серверу завершилось неудачей: (Error NT_STATUS_UNSUCCESSFUL)

Вероятно, вы указываете smbclient неправильное имя сервера. Чтобы узнать его, запустите на сервере команду hostnamectl и найдите строку «Transient hostname».

Смотрите также

  • Samba: An Introduction
  • Официальный сайт Samba

Больше информации

  • Samba Samba (German) (archlinux.de)
  • Ускорение работы Samba

Server: RHEL 5.9 / smbd 3.0.33
— Clients: various, though all were using current mount.cifs (5.2)

I already solved this problem, but it was such a nightmare to hunt down these error codes I felt like it needed universal documenting.

Symptoms: Unpredictable, intermittent mount failure from one specific cifs client to linux samba server. All my linux clients pam_mount user homes at login. Randomly, and sporadically the home dir mounts began to fail on one machine. Logins and mounts continued to work flawlessly on all other clients. Initially I thought an unusual amount of activity on the broken client was causing smbd to freak, but intermittent failures lingered even after usage died down.

Attempting to mount by hand fails and reports:

Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Set <debug enable="1"/> in /etc/security/pam_mount.conf.xml to get more info from pam_mount:

command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0)
pam_mount(mount.c:64): Errors from underlying mount program:
pam_mount(mount.c:68): mount error(12): Cannot allocate memory
pam_mount(mount.c:68): Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)`

/var/log/kern.log also reported on this event:

kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12

‘echo 1 > /proc/fs/cifs/cifsFYI’ cranks up mount.cifs debug (writes to /var/log/debug). Here’s the good part (look familiar?):

CIFS Session Established successfully
For smb_command 117
Sending smb:  total_len 88
cifs_sync_mid_result: cmd=117 mid=54307 state=4
Mapping smb error code 0xc0000205 to POSIX err -12

At this point there is literally no other information available on the client side. cifs mount request goes out and the client dies almost immediately. mount.cifs error(12) is pretty uninformative (man page doesn’t help, thx guys). Extensive internet searching reveals this is a common error code, also confirms it as uninformative.

Time to check on the server! Set log level = 3 for smbd in /etc/samba/smb.conf (from the Using Samba book: «Levels above 3 are for use by the developers and dump enormous amounts of cryptic information.» lol!). Here’s the relevant line:

[2013/02/08 10:18:03, 3] smbd/error.c:error_packet_set(106)
error packet at smbd/reply.c(514) cmd=117 (SMBtconX) NT_STATUS_INSUFF_SERVER_RESOURCES

Almost there… from smb mailing list archive I found someone reporting a sort of similar issue, identified as a pegged share limit on an individual smb connection. List open shares on the server:

smbstatus -S | grep <serverIP> | wc -l returned 2048. Very conspicuous.

Actually examining the output of smbstatus -S revealed thousands of entries for ‘IPC$’. Samba docs on IPC$ reveal it is involved with anonymous share browsing and access to «some other resources». I set host deny on the server in /etc/samba/smb.conf:

[IPC$]
hosts deny = 0.0.0.0/0

Works great now. OK, hopefully something here helps some poor soul some time in the future.

I guess in the spirit of the site I will ask a question: Why would smbd not clean up IPC$ shares? Why establish one IPC$ per user connection to a share rather than one per client connection? Can you disable IPC$ share creation from the client side? Is there a way to increase the max # connections per share (not that this would have helped in this case)? I didn’t see it in the docs.

Понравилась статья? Поделить с друзьями:
  • Mount and blade 2 bannerlord как изменить культуру персонажа
  • Mount and blade 2 bannerlord как изменить культуру города
  • Mount and blade 2 bannerlord как изменить имя спутника
  • Mount and blade 2 bannerlord как изменить имя персонажа
  • Mount and blade 2 bannerlord как изменить возраст персонажа