Доводка davfs2 для использования с Thunar

Материал из Слакваря

Перейти к: навигация, поиск

Содержание

Краткое отступление

Thunar имеет свою реализацию протокола WebDAV, основанную на возможностях gvfs. Несмотря на это, мне захотелось сделать монтирование ресурсов WebDAV более удобным для меня, и я выбрал davfs2.

Davfs2

Программа davfs2 — это FUSE-драйвер, позволяющий примонтировать удаленный сервер как обычную файловую систему по протоколу WebDAV, который является расширением протокола HTTP. Критериями выбора послужили две вещи: davfs2 позволяет использовать удаленные WebDAV ресурсы даже в программах, не имеющих поддержки WebDAV, а также достаточно гибок в настройке, и позволяет задавать права доступа на файлы и каталоги, их владельца и группу и некоторые другие параметры, например, noexec. Последним он выгодно отличается от gvfs, не имеющего файлов конфигурации и использующего некие параметры по умолчанию (хотя их можно изменить при помощи параметров командной строки).

Установка davfs2

Davfs2 доступен на slackbuilds.org. Скачайте архивы с исходным кодом программы и сборочный сценарий (так называемый слакбилд). Порядок сборки и установки подробно описан в распространяющемся вместе со сценарием сборки файле README, поэтому я приведу лишь стандартную последовательность действий (помните, что перед началом сборки необходимо создать пользователя и группу, как это описано в README):

$ wget  http://slackbuilds.org/slackbuilds/14.0/system/davfs2.tar.gz
$ mkdir bld
$ cd bld
$ tar xf ../davfs2.tar.gz
$ . davfs2.info
$ wget $DOWNLOAD
# ./*Build
# upgradepkg --install-new --reinstall /tmp/SBo/davfs2*t?z

Доводка

Так как davfs2 не игнорирует неизвестные параметры, которые могут быть указаны в поле параметров монтирования в файле /etc/fstab, а Thunar не может взаимодействовать с davfs2 для, например, ответа на запрос авторизации, необходимо внести изменения в исходный код davfs2, чтобы он отбрасывал параметр comment= и настроить автоматическую авторизацию на сервере.

Правка исходного кода

Код, который необходимо изменить, находится в файле davfs2-1.4.7/src/mount_davfs.c. Скопируем этот файл:

$ cd davfs2-1.4.7
$ cp ./src/mount_davfs.c ./src/mount_davfs.c.orig

И теперь внесем следующие изменения:

*** ./src/mount_davfs.c.orig	2014-01-21 01:34:47.412016778 +0400
--- ./src/mount_davfs.c	2014-01-21 01:37:32.386425617 +0400
***************
*** 1539,1544 ****
--- 1539,1545 ----
          AUTO,
          NOAUTO,
          DEFAULTS,
+         COMMENT,
          END
      };
      char *suboptions[] = {
***************
*** 1565,1570 ****
--- 1566,1572 ----
          [AUTO] = "auto",
          [NOAUTO] = "noauto",
          [DEFAULTS] = "defaults",
+         [COMMENT] = "comment",
          [END] = NULL
      };
  
***************
*** 1671,1676 ****
--- 1673,1679 ----
          case AUTO:
          case NOAUTO:
          case DEFAULTS:
+         case COMMENT:
              break;
          default:
              if (so == -1) {

Сохраним изменения в файл (патч) командой (находясь в каталоге davfs2-1.4.7):

$ diff -c ./src/mount_davfs.c.orig ./src/mount_davfs.c | gzip -9 > ../ignore_comment_option.diff.gz

Теперь необходимо модифицировать сборочный сценарий, добавив в него строку

zcat $CWD/ignore_comment_option.diff.gz | patch -p1 --verbose || exit 1

перед вызовом configure. Теперь пересоберем и переустановим davfs2 как это описано выше и перейдем к его настройке.

Настройка davfs2

Необходимо изменить в глобальном конфигурационном файле (/etc/davfs2/davfs2.conf) параметры

dav_user = davfs2
dav_group = davfs2

а в конфигурационном файле пользователя (~/.davfs2/davfs2.conf) —

secrets         ~/.davfs2/secrets # user config file only
ask_auth        0
use_locks       1
lock_owner      user

Для автоматизации авторизации необходимо в файле ~/.davfs2/secrets указать точку монтирования, имя пользователя и пароль. ВНИМАНИЕ, имя пользователя и пароль хранятся в этом файле в открытом виде! Поэтому необходимо, чтобы файл был доступен на чтение и запись только владельцу. Описания параметров монтирования, настроек самой программы находятся в руководствах mount.davfs(8), davfs2.conf(5), а также в комментариях в файлах конфигурации.

Личные инструменты