/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".
Created attachment 5286 [details] Кратко опишите вложение. (дополнительно) Добавьте комментарий для этого вложения.
собственно, auto.avahi -- моя самодеятельность, никаких устоявшихся практик, а тем более формальных документов насчёт того, как именно должны быть представлены опции монтирования в описании зоны, нет. я предполагал, что vers *не* входит в options, а указывается отдельно, что-то вроде: --- %< --- share._nfs._tcp SRV 0 0 2049 host TXT vers=4 options=ro path=/share --- %< --- впрочем, в общем случае замечание верно.
Перестало работать в p6 (или и не работало) :(. Патчик-то можно приложить, аль некошерен?
что мешает указать vers= отдельнолежащей опцией ?
Отсутствие прав root. Это имеет отношение к проблеме?
А что-таки мешает приложить патч?
правило, которое гласит, что в options содержатся только флаги (опции без значения). опции со значением указываются отдельно.
.
(В ответ на комментарий №7) > правило, которое гласит, что в options содержатся только флаги (опции без > значения). опции со значением указываются отдельно. А где содержится это правило?
(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 Давайте быстро исправим ошибку вместо того, чтобы искать пути ее объезда. Тем более что правильный патч уже давно готов.
указывать отдельно предлагается vers= path= и sec=, поскольку любые другие опции со значением игнорируются, о чём кстати выдаётся предупреждение. это не ошибка, это бай дизайн.
(In reply to comment #11) > указывать отдельно предлагается vers= path= и sec=, поскольку любые другие > опции со значением игнорируются, о чём кстати выдаётся предупреждение. Однако vers= в options= не игнорируется, и никаких предупреждений о том, что все плохо, при использовании vers= в options= не выдается. > это не ошибка, это бай дизайн. В таком случае это неправильный бай дизайн, который надо зафиксить.
о том, что всё плохо, недвусмысленно намекается: "В результате монтирование не происходит" бай дизайном я вполне удовлетворён, дополнительная диагностика о недопустимости foo=bar в options воспоследует.
(In reply to comment #13) > бай дизайном я вполне удовлетворён, дополнительная > диагностика о недопустимости foo=bar в options воспоследует. В чем причина недопустимости foo=bar в options? На соображения безопасности это не похоже. Что же это тогда?
в том, что, каламбурчик-с, options are optional, тогда как комбинация vers/path нужна. И собственно, ввиду отсутствия каких-либо документов, регламентирующих размещение в записи TXT параметров монтирования nfs, люди делятся на тех, кто написал скриптъ, и тех, кто уберёт лишние запятые из зоны.
(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?
(В ответ на комментарий №16) > (In reply to comment #15) > > в том, что, каламбурчик-с, options are optional, тогда как комбинация vers/path > > нужна. > > И собственно, ввиду отсутствия каких-либо документов, регламентирующих > > размещение в записи TXT параметров монтирования nfs, люди делятся на > > тех, кто написал скриптъ, и тех, кто уберёт лишние запятые из зоны. > > Как насчет символа "=" в значении path=? > Как насчет других опций со значениями, которые почему-то оказались хуже опций > без значений? > Будем и дальше отрицать здравый смысл, ссылаясь на отсутствие стандарта? Предложенный патч этих проблем не решает. К тому же, *мой* здравый смысл подсказывает мне избегать решений кажущихся проблем. > Мне в этом случае следует переписать скрипт /etc/auto.avahi? С такими запросами это явно необходимо. милости прошу.
Новые 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 кому-нибудь дадим? Тем более, что переписывать-то две строки надо всего.
mount без параметров v4 последние несколько лет, сборка с 4.2 в качестве дефолта опубликована не была.