30 октября 2009 г.

Подключение сетевого диска в Ubuntu

Updated 18.12.2010

Предположим, что на компьютере с IP адресом 192.168.0.1 открыта на доступ папка linux и нам нужно подключить ее в Ubuntu, чтобы получить к ней доступ, как к любой другой папке на диске.
  • Подключение сетевого диска вручную
    После выполнения следующих команд содержимое сетевой папки //192.168.0.1/linux будет доступно пользователю в директории /media/sharename на локальном компьютере:

    sudo mkdir /media/sharename
    sudo mount //192.168.0.1/linux /media/sharename/ -o username=myusername,password=mypassword

    Почему-то у меня при попытке подключиться к расшаренным windows-папкам пришлось указывать и username и password, даже для дисков, которые расшарены для всех. Если их вообще не писать, то попытка монтировки происходила под пользователем root, и mount возвращал ошибку -13 (permission denied), а если указать только имя пользователя — высвечивал приглашение ввести пароль доступа к папке.


  • Подключение сетевого диска вручную на чтение/запись для всех пользователей

    sudo mkdir /media/sharename
    sudo mount //192.168.0.1/linux /media/sharename/ -o username=myusername,password=mypassword,dmask=777,fmask=777


  • Подключение сетевого диска на этапе загрузки через fstab

    sudo mkdir /media/sharename
    sudo cp /etc/fstab /etc/fstab_backup


    Создать файл /root/.smbcredentials и добавить следующие строки:
    username=myusername
    password=mypassword


    Сделать файл /root/.smbcredentials недоступным для пользователей, а для root -- только на чтение:
    sudo chmod 400 /root/.smbcredentials

    В файл /etc/fstab добавить следующие строки:
    //192.168.0.1/linux /media/sharename smbfs credentials=/root/.smbcredentials 0 0


    Для доступа на чтение/запись для всех:
    //192.168.0.1/linux /media/sharename smbfs credentials=/root/.smbcredentials,dmask=777,fmask=777 0 0

    На данный момент (в Ubuntu 9.10) тип smbfs устарел, поэтому нужно использовать тип cifs. Для типа cifs вместо dmask и fmask нужно указывать параметры dir_mode и file_mode, причем числовые значения этих параметров должны начинаться с нуля — "dir_mode=0777,file_mode=0777".



  • Подключение дисков из fstab без перезагрузки операционой системы
    sudo mount -a

  • Синтаксис:
    Для smbfs -- //192.168.1.1/foldername
    Для nfs -- 192.168.1.1:/foldername
Дополнения:
  1. Если подключения диска не происходит, то можно посмотреть коды возвращаемых ошибок с помощью команды dmesg, а еще лучше запустить mount с помощью утилиты strace — sudo strace mount ....

  2. Если mount возвращает ошибку (или вообще происходит нечно непонятное), то в первую очередь убедитесь, что у вас установлен mount, соответствующий типу файловой системы, которую вы хотите подключить. Например, для nfs в системе должен быть установлен mount.nfs, для smbfs — mount.smbfs, для cifs — mount.cifs и т.д. В качестве иллюстрации проблемы можно привести пример с cifs: при отсутствующем mount.cifs можно вполне успешно примонтировать cifs-диск используя параметры "username=...,password=...", но при этом попытка использования credential-файлов, будет заканчиваться ошибкой (http://ubuntuforums.org/archive/index.php/t-79612.html).

  3. Ошибка монтирования "mount error 12 = Cannot allocate memory" при попытке подключения к расшаренной папке Windows.

    Возможная причина — не хватает памяти на сервере (то есть, в Windows), а не на клиенте. В этом случае, могут помочь изменения в реестре Windows: ...\LanmanServer
    \Parameters\IRPStackSize
    (для XP, 2000, NT) или .../LanmanServer\Parameters\Size и ...\Session Manager\Memory Management\LargeSystemCache (для Windows 7).

  4. Ошибка монтирования "mount error 5 = Input/output error". В логах dmesg сообщается об ошибке "CIFS VFS: cifs_read_super: get root inode failed".

    Если при этом упоминается "Malformed FILE_UNIX_BASIC_INFO response", то возможно поможет добавление nounix в параметры вызова команды mount.

    Еще одна возможная причина — проблемы с правами доступа к расшаренной папке. У меня такая ошибка возникла, когда на папку, которую, я хотел примонтировать, в числе прочих были установлены права "Everyone - Access denied". После корректировки прав доступа всё успешно примонтировалось.

  5. Проблема монтирования CIFS диска на Ubuntu 9.10 — ресурс расшарен на другой unix-системе и успешно монтируется, но доступен только на чтение, хотя, если подключиться к этому ресурсу с помощью smbclient, то ресурс доступен и на чтение, и на запись.

    Скорее всего проблема в несовпадении uid и gid на клиенте и на сервере. Исправляется добавлением в параметры запуска команды mount значений nounix, а также uid и gid, которые соответствуют вашему пользователю на сервере — "mount //server /client -o username=someone,gid=1000,uid=1000,nounix,file_mode=0777,dir_mode=0777". (http://ubuntuforums.org/showthread.php?t=1310273)

По мотивам ubuntuguide.org, ubuntuforums.org и собственного опыта.

21 комментарий:

  1. Здравствуйте.
    Все сделал по первому пункту, работает.
    только вот как сделать чтоб при перезагрузки заново не прописывать в терминале путь?

    ОтветитьУдалить
  2. Смотрите пункт "Подключение сетевого диска на этапе загрузки через fstab"

    ОтветитьУдалить
  3. Проблема с русским языком. В консоли после монтирования одни вопросы. В окнах вообще пустота.

    ОтветитьУдалить
  4. Переписал немного строчку и русский появился:
    "cifs credentials=/root/.smbcredentials,codepage=cp866,iocharset=utf8,dir_mode=0777,file_mode=0777"

    ОтветитьУдалить
  5. Анонимный11 июля 2011 г., 13:23

    не появился русский! =(

    ОтветитьУдалить
  6. Приветствую.
    Совсем недавно стал пытаться поковырять Линукс.
    Причём не нормальный Юбунту, например, а встроенный в жестяки WD MyBook
    Поставил Optware. Но transmission так пока и не запустил по-человечески.
    И ещё вот один вопрос прям-таки мучает - как подключить/примонтировать nsf/cifs шару?
    Блин - вручную отвечает - нет такого файла,
    через fstab (которого, кстати, не существовало) и mount -a = говорит, No such device...
    В поисках ответа набрёл на этот блог :) :) :)

    ЗЫ
    буквально на днях открыл для себя этот сайт - у меня телефон умеет на него грузить по-умолчанию :) :) :) ПРавда, редактировать загруженное я не могу - сайт ругается и не пускает %) %) %)

    ОтветитьУдалить
  7. А озадачился вопросом примонтирования как раз ведомый желанием научиться копировать, например, файлы с одного жестяка WD на другой - минуя комп.
    Раз там линукс - он и сам всё может делать. И тихо, и незаметно :)
    Но во-первых - проблемы с монтированием. А через smbclient - это нужно всё равно окно терминала держать открытым - на том же компе.
    А во-вторых, так и не научился отправлять процесс в фон, чтобы он не зависел от активного TTY....

    Вот такая вот загогулина.
    Буду признателен за любые мысли на этот счёт.
    Спасибо :)

    ОтветитьУдалить
  8. Не очень понятно, в чем у васпроблема, но возможно, вам поможет 'screen'.

    ОтветитьУдалить
  9. Супер! Спасибо. Screen - то, что я пытался найти. Очень удобно.

    Теперь о проблеме.
    Нужно гонять с одного NAS WD на другой большие объемы файлов.
    Расшаривать они умеют сами априори - и нфс и самба и фтп.
    А как подключиться?
    smbclient - очень неудобная оболочка.
    А командой mount - никак не получается примонтироваться.
    smbmount - отсутствует.
    Конечно, самый лучший вариант - подключаться по nfs...

    Вот.Постарался как-то более развёрнуто суть проблемы :)
    На связи,
    благодарю за отклик.

    ОтветитьУдалить
  10. А отредактировать fstab, как описано в этой статье?

    ОтветитьУдалить
  11. первым делом так и сделал, раз из ком.строки не вышло. No such device.
    Как определить, чего не хватает?
    Мне уже пофигу nfs, cifs - просто тупо хочу хоть как-то примонтировать расшаренный ресурс.

    Серверное-то ПО крутится, раз это NAS и всё видно из сети. А клиенты как-то не фурычат ни фига...

    ОтветитьУдалить
  12. Попробуйте задать вопрос производителю NAS - если производитель запретил монтирование, значит либо у него были на то причины, либо есть какой-то другой способ.

    ОтветитьУдалить
  13. Ок. Попробую, там вроде даже форум есть.
    За Screen - отдельный нубский респект.
    Очень гуд улетита :)

    ОтветитьУдалить
  14. Здравствуйте!
    Мне нужно подсоединить сетевой диск, чтобы монтировался он при загрузке автоматически. Делаю все по инструкции "Подключение сетевого диска на этапе загрузки через fstab", единственное не уверен, там в конце вы указали, что вместо smbfs надо использовать cifs, т.е. я в fstab пишу следующее:
    //my.ip.adress/folder /media/docs cifs credentials=/root/.smbcredentials 0 0
    //my.ip.adress/folder /media/docs cifs credentials=/root/.smbcredentials,dir_mode=0777,file_mode=0777 0 0

    Когда так делаю, выходит ошибка:
    "wrong fs type, bad option, bad superblock on //my.ip.adress/folder,
    missing codepage or helper program, or other error
    (for several filesystems (e.g. nfs, cifs) you might
    need a /sbin/mount. helper program)
    В некоторых случаях полезная информация может быть
    найдена в syslog - попробуйте dmesg | tail или что-то
    в этом роде"

    Командой sudo mount -t cifs //192.168.0.2/sharedFolder /media -o user=guest,password=,iocharset=utf8 монтируется прекрасно, но после каждой перезагрузки вводить пароль задолбался =)

    ОтветитьУдалить
    Ответы
    1. Владислав, а mount.cifs у вас установлен в системе? Что говорит dmesg | tail?
      Попробуйте для начала указать логин и пароль в fstab напрямую, без credentials. Также попробуйте тип smbfs, может сработает.

      Удалить
  15. Думаю, что mount.cifs установлен, ведь при разовом монтировании все подключается успешно. Я спрашивал совета еще на другом ресурсе, там посоветовали просто прописать в fstab следующее:
    //192.168.0.2/sharedFolder /media cifs _netdev,username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
    И теперь все работает без credentials`ов. Не могли бы вы пояснить, чем ваш способ лучше этого?

    ОтветитьУдалить
    Ответы
    1. Дополнения, пункт 2:

      "...при отсутствующем mount.cifs можно вполне успешно примонтировать cifs-диск используя параметры "username=...,password=...", но при этом попытка использования credential-файлов, будет заканчиваться ошибкой..."


      Но если у вас пароль пустой, то действительно не было смысла использовать credentials.

      Удалить
    2. Нет, пароль у меня не пустой, я просто привел форму. Так в чем смысл использования credential?

      Удалить
    3. Файл fstab доступен на чтение другим пользователям системы, поэтому записанный там пароль увидят все. Credential-файл доступен на чтение только администратору.

      Удалить