Bug 26797 - Неправильно разбираются параметры монтирования NFS
: Неправильно разбираются параметры монтирования NFS
Status: REOPENED
: Sisyphus
(All bugs in Sisyphus/autofs)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2012-01-10 13:01 by
Modified: 2015-02-12 23:20 (History)


Attachments
Кратко опишите вложение. (393 bytes, patch)
2012-01-10 13:02, Fr. Br. George
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2012-01-10 13:01:13
/etc/auto.avahi неправильно обрабатывает параметры монтирования NFS, если в них
содержится "=", например:

=;n/a;n/a;space;Network File
System;office.altlinux.ru;altair.office.altlinux.ru;10.1.0.2;2049;"options=ro,noexec,nosuid,nodev,nolock,hard,intr,vers=3"
"path=/space"

превращается в
-o sec=sys,3 вместо -osec=sys,ro,noexec,nosuid,nodev,nolock,hard,intr,vers=3

В результате монтирование не происходит из-за некорректного параметра "3".
------- Comment #1 From 2012-01-10 13:02:22 -------
Created an attachment (id=5286) [details]
Кратко опишите вложение.

(дополнительно) Добавьте комментарий для этого вложения.
------- Comment #2 From 2012-01-10 14:09:04 -------
собственно, auto.avahi -- моя самодеятельность, никаких устоявшихся практик,
а тем более формальных документов насчёт того, как именно должны быть
представлены опции монтирования в описании зоны, нет.
я предполагал, что vers *не* входит в options, а указывается отдельно,
что-то вроде:
--- %< ---
share._nfs._tcp                 SRV     0       0       2049    host
                                TXT     vers=4 options=ro path=/share
--- %< ---
впрочем, в общем случае замечание верно.
------- Comment #3 From 2012-04-03 13:36:09 -------
Перестало работать в p6 (или и не работало) :(. Патчик-то можно приложить, аль
некошерен?
------- Comment #4 From 2012-04-03 13:47:31 -------
что мешает указать vers= отдельнолежащей опцией ?
------- Comment #5 From 2012-04-20 11:22:39 -------
Отсутствие прав root. Это имеет отношение к проблеме?
------- Comment #6 From 2012-11-13 14:26:22 -------
А что-таки мешает приложить патч?
------- Comment #7 From 2012-11-13 14:29:55 -------
правило, которое гласит, что в options содержатся только флаги (опции без
значения). опции со значением указываются отдельно.
------- Comment #8 From 2012-11-13 14:30:35 -------
.
------- Comment #9 From 2012-11-14 11:56:02 -------
(В ответ на комментарий №7)
> правило, которое гласит, что в options содержатся только флаги (опции без
> значения). опции со значением указываются отдельно.

А где содержится это правило?
------- Comment #10 From 2012-11-16 18:55:09 -------
(In reply to comment #4)
> что мешает указать vers= отдельнолежащей опцией ?

Какие еще из нижеперечисленных опций предлагается указывать отдельно?
$ man mount |colcrt |grep =value
       uid=value and gid=value
       ownmask=value and othmask=value
       uid=value and gid=value
       setuid=value and setgid=value
       mode=value
       reserved=value
       root=value
       bs=value
       uid=value and gid=value
       mode=value
       ptmxmode=value
              ptmxmode=value specifies a more useful mode for the ptmx node and
 is  highly  recommended  when  the
       uid=value and gid=value
       umask=value
       dmask=value
       fmask=value
       allow utime=value
       check=value
       codepage=value
       iocharset=value
       uid=value and gid=value
       umask=value
       uid=value and gid=value
       mode=value
       iocharset=value
       resize=value
       uid=value, gid=value and umask=value
       uid=value and gid=value
       ufstype=value
       onerror=value
       ihashsize=value
       logbufs=value
       logbsize=value
       sunit=value and swidth=value

Давайте быстро исправим ошибку вместо того, чтобы искать пути ее объезда.
Тем более что правильный патч уже давно готов.
------- Comment #11 From 2012-11-16 19:14:54 -------
указывать отдельно предлагается vers= path= и sec=, поскольку любые другие
опции со значением игнорируются, о чём кстати выдаётся предупреждение.
это не ошибка, это бай дизайн.
------- Comment #12 From 2012-11-16 19:32:17 -------
(In reply to comment #11)
> указывать отдельно предлагается vers= path= и sec=, поскольку любые другие
> опции со значением игнорируются, о чём кстати выдаётся предупреждение.

Однако vers= в options= не игнорируется, и никаких предупреждений о том, что
все плохо, при использовании vers= в options= не выдается.

> это не ошибка, это бай дизайн.

В таком случае это неправильный бай дизайн, который надо зафиксить.
------- Comment #13 From 2012-11-16 19:48:11 -------
о том, что всё плохо, недвусмысленно намекается:
"В результате монтирование не происходит"
бай дизайном я вполне удовлетворён, дополнительная
диагностика о недопустимости foo=bar в options воспоследует.
------- Comment #14 From 2012-11-16 20:55:52 -------
(In reply to comment #13)
> бай дизайном я вполне удовлетворён, дополнительная
> диагностика о недопустимости foo=bar в options воспоследует.

В чем причина недопустимости foo=bar в options?
На соображения безопасности это не похоже.  Что же это тогда?
------- Comment #15 From 2012-11-16 21:05:42 -------
в том, что, каламбурчик-с, options are optional, тогда как комбинация vers/path
нужна.
И собственно, ввиду отсутствия каких-либо документов, регламентирующих
размещение в записи TXT параметров монтирования nfs, люди делятся на
тех, кто написал скриптъ, и тех, кто уберёт лишние запятые из зоны.
------- Comment #16 From 2012-11-16 21:25:48 -------
(In reply to comment #15)
> в том, что, каламбурчик-с, options are optional, тогда как комбинация vers/path
> нужна.
> И собственно, ввиду отсутствия каких-либо документов, регламентирующих
> размещение в записи TXT параметров монтирования nfs, люди делятся на
> тех, кто написал скриптъ, и тех, кто уберёт лишние запятые из зоны.

Как насчет символа "=" в значении path=?
Как насчет других опций со значениями, которые почему-то оказались хуже опций
без значений?
Будем и дальше отрицать здравый смысл, ссылаясь на отсутствие стандарта?

Допустим, я хочу передать одну из нижеперечисленных опций:
$ man nfs |colcrt |grep '^[[:space:]]*[^[:space:]=]\+='
       timeo=n        The  time  in  deciseconds (tenths of a second) the NFS
client waits for a response before it
       retrans=n      The  number  of  times  the  NFS client retries a request
before it attempts further recovery
       rsize=n        The maximum number of bytes in each network READ request
that the NFS client can receive when
       wsize=n        The maximum number of bytes per network WRITE request
that the NFS client can send when writ‐
       acregmin=n     The  minimum time (in seconds) that the NFS client caches
attributes of a regular file before
       acregmax=n     The  maximum time (in seconds) that the NFS client caches
attributes of a regular file before
       acdirmin=n     The  minimum time (in seconds) that the NFS client caches
attributes of a directory before it
       acdirmax=n     The  maximum time (in seconds) that the NFS client caches
attributes of a directory before it
       actimeo=n      Using  actimeo  sets all of acregmin, acregmax, acdirmin,
and acdirmax to the same value.  If
       retry=n        The number of minutes that the mount(8) command retries
an NFS mount operation in  the  fore‐
       sec=mode       The RPCGSS security flavor to use for accessing files on
this mount point.  If the sec option
       lookupcache=mode
       proto=netid    The  transport  protocol name and protocol family the NFS
client uses to transmit requests to
       port=n         The  numeric  value  of  the  server's  NFS service port.
 If the server's NFS service is not
       mountport=n    The numeric value of the server's mountd port.  If the
server's mountd service is not  avail‐
       mountproto=netid
       mounthost=name The  hostname of the host running mountd.  If this option
is not specified, the mount(8) com‐
       mountvers=n    The RPC version number used to contact the server's
mountd.  If this option is not specified,
       namlen=n       The maximum length of a pathname component on this mount.
 If this option is  not  specified,
       nfsvers=n      The NFS protocol version number used to contact the
server's NFS service.  If the server does
       vers=n         This option is an alternative to the nfsvers option.  It
is included for  compatibility  with
       proto=netid    The  transport  protocol name and protocol family the NFS
client uses to transmit requests to
       port=n         The  numeric  value  of  the  server's  NFS service port.
 If the server's NFS service is not
       clientaddr=n.n.n.n

Мне в этом случае следует переписать скрипт /etc/auto.avahi?
------- Comment #17 From 2012-11-16 21:50:41 -------
(В ответ на комментарий №16)
> (In reply to comment #15)
> > в том, что, каламбурчик-с, options are optional, тогда как комбинация vers/path
> > нужна.
> > И собственно, ввиду отсутствия каких-либо документов, регламентирующих
> > размещение в записи TXT параметров монтирования nfs, люди делятся на
> > тех, кто написал скриптъ, и тех, кто уберёт лишние запятые из зоны.
> 
> Как насчет символа "=" в значении path=?
> Как насчет других опций со значениями, которые почему-то оказались хуже опций
> без значений?
> Будем и дальше отрицать здравый смысл, ссылаясь на отсутствие стандарта?

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

> Мне в этом случае следует переписать скрипт /etc/auto.avahi?

С такими запросами это явно необходимо. милости прошу.
------- Comment #18 From 2015-02-12 18:48:50 -------
Новые nfs-utils актуализировали эту багу в ещё одном месте:

@@ -46,6 +46,7 @@ discover_nfs() {
        case "$vers,$path" in
            ,|4,) printf -- '-fstype=nfs4 %s %s:/' $options $addr ;;
            4,*) printf -- '-fstype=nfs4 %s %s:%s' $options $addr $path ;;
+           3,*) printf -- '%s %s:%s' $options,vers=3 $addr $path ;;
            *,*) printf -- '%s %s:%s' $options $addr $path ;;
        esac
        break

Суть в том, что mount без параметров теперь v4.2 (а не v3), и обработать ни
vers=3, ни -onfsversion=3 auto.avahi не может.

> > Мне в этом случае следует переписать скрипт /etc/auto.avahi?
> С такими запросами это явно необходимо. милости прошу.

Давайте, давайте уже ACL кому-нибудь дадим? Тем более, что переписывать-то две
строки надо всего.
------- Comment #19 From 2015-02-12 23:20:26 -------
mount без параметров v4 последние несколько лет,
сборка с 4.2 в качестве дефолта опубликована не была.