Используем клиент WebDAV - davfs2 совместно с ThunarПодписка на Комментарии к "Используем клиент WebDAV - davfs2 совместно с Thunar"

Аватар yars

Доброго времени суток, друзья!
Это - моя первая запись здесь, и я надеюсь, что она будет кому-нибудь полезна. Итак, о чем я хочу рассказать: я столкнулся с проблемой, пытаясь использовать с Thunar'ом клиент davfs2. Разумеется, Thunar имеет собственные возможности по использованию WebDAV, но мне они показались не слишком-то удобными, и я решил прикрутить к нему davfs2.
Этот клиент консольный, выполненный в виде fuse-модуля. Информацию о сервере WebDAV, точке монтирования, опциях он берет из файла /etc/fstab, что и было нужно мне. Но тут я столкнулся с тем, что он воспринимает только те опции, что описаны в mount.davfs(8), и потому примонтировать удаленный WebDAV-ресурс можно (sic!) только из консоли. Но мне-то хотелось сделать следующее: указав опцию "comment=x-gvfs-show" в fstab, монтировать WebDAV по щелчку мышью в левой панели Thunar'а, в которой он показывает различные устройства.
Я использую Slackware Linux, поэтому и порядок действий буду расписывать на примере своего дистрибутива, а вы, друзья, я надеюсь, сможете разобраться сами, учитывая особенности ваших дистрибутивов. Но если что-то пойдет не так, я готов ответить на ваши вопросы. Что ж, начинаем. Забираем исходники davfs2, слакбилд, собираем, устанавливаем (не забыв создать группу и пользователя davfs2, как это описано в README или MINI_HOWTO, поставляющихся со слакбилдом):

$ mkdir bld
$ wget http://download.savannah.gnu.org/releases/davfs2/davfs2-1.4.7.tar.gz
$ wget http://slackbuilds.org/slackbuilds/14.0/system/davfs2.tar.gz
$ tar xf davfs2.tar.gz
# groupadd -g 230 davfs2
# useradd -u 230 -d /var/cache/davfs2 -g davfs2 -s /bin/false davfs2
# ./*Build
# upgradepkg --install-new /tmp/SBo/davfs2*t?z

Хорошо, установили, теперь в /etc/fstab добавим строку
https://webdav.somesite.org /mnt/webdav davfs noauto,user,_netdev,gid=230,nodev,nosuid,noexec,dir_mode=770,file_mode=660,comment=x-gvfs-show 0 0
и добавим нашего пользователя в группу davfs2:
# usermod -a -G davfs2 yars
Перелогиниваемся, запускаем Thunar, видим появившийся в левой панели новый значок, радостно щелкаем на нем мышью и... получаем сообщение о том, что, мол, только рут может примонтировать каталог. А дело в том, что, во-первых, davfs2 не знает опции comment (что легко обнаружить, попытавшись примонтировать WebDAV из консоли), а во-вторых, без этой опции, он ждал бы от нас ввода данных авторизации. Но Thunar'у о том неведомо. Значит, нам нужно научить клиента отсеивать эту опцию, чем мы сейчас и займемся. Удаляем распакованные исходники, повторно их распаковываем, и идем в каталог davfs2-1.4.7/src. Открываем на редактирование mount_davfs.c и пишем пару строк, вот патч:
*** ./src/mount_davfs.c.orig    2014-01-20 04:18:04.915307265 +0400
--- ./src/mount_davfs.c 2014-01-20 04:31:35.238722977 +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,1681 ----
          case AUTO:
          case NOAUTO:
          case DEFAULTS:
+         // Need to use with DEs that have support comment= mount option
+         // This normally does not passed by davfs2.
+         case COMMENT:
              break;
          default:
              if (so == -1) {

Модифицируем слакбилд, добавив в него команду наложения патча:
zcat $CWD/add_comment_option.diff.gz | patch -p1 --verbose || exit 1
перед вызовом configure и пересобираем davfs2:

# BUILD=2 ./*Build
# upgradepkg --reinstall /tmp/SBo/davfs2*t?z

С этим все, но как быть с запросами логина и пароля? Открываем руководство davfs2.conf(5) и узнаем из него о существовании файла ~/.davfs2/secrets. Этот файл содержит в себе все необходимое (и снабжен подробными комментариями), чтобы настроить авторизацию без запроса. Во-первых, в конфиге ~/.davfs2/davfs2.conf необходимо изменить вот эти два праметра:
secrets ~/.davfs2/secrets
ask_auth 0

и, во-вторых, в вышеназванный файл ~/.davfs2/secrets вписать /mnt/webdav your_login your_password
Вуаля! Теперь все прекрасно работает.
Огорчает только одно - файл secrets содержит в себе незашифрованный пароль! Но с этим, думаю, каждый справится и сам.
Удачи!

Добавить комментарий