* [devel] nfs mountd --manage-gids problem
@ 2011-06-01 12:20 Pavel Shilovsky
2011-06-01 15:11 ` Rinat Bikov
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Pavel Shilovsky @ 2011-06-01 12:20 UTC (permalink / raw)
To: devel
Здравствуйте!
После включения опции --manage-gids появилась такая проблема:
пользователю перестали применяться группы на сервере.
Выяснилось, что getgrouplist как-то некорректно работает со static
переменными groups и group_len в вызове auth_unix_gid в
utils/mountd/cache.c: первый вызов срабатывает, второй - нет с ошибкой
-1, но количество групп у пользователя много меньше чем размер
передаваемого массива. Если убрать static атрибуты - вызовы
завершаются удачно.
Причиной же сломанной работы стал коммит
http://git.altlinux.org/people/piastry/packages/?p=nfs.git;a=commit;h=9274e94db85bac04e170414cb8e0f4be271cde90.
Я его отревертил и всё заработало корректно. Текущий вариант лежит
тут: http://git.altlinux.org/people/piastry/packages/?p=nfs.git;a=summary.
Отправил письмо в апстрим, но пока ответа нет
http://article.gmane.org/gmane.linux.nfs/40958.
Собственно вопроса два:
1) чем может быть объяснено такое странное поведение getgrouplist со
статик переменными (проверял его отдельно, вне кода mountd)?
2) есть ли лучшее решение на текущий момент, чем просто отревертить
сломанной коммит?
--
Best regards,
Pavel Shilovsky.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 12:20 [devel] nfs mountd --manage-gids problem Pavel Shilovsky
@ 2011-06-01 15:11 ` Rinat Bikov
2011-06-01 18:25 ` Pavel Shilovsky
2011-06-01 15:23 ` Rinat Bikov
2011-06-01 15:49 ` Rinat Bikov
2 siblings, 1 reply; 9+ messages in thread
From: Rinat Bikov @ 2011-06-01 15:11 UTC (permalink / raw)
To: ALT Linux Team development discussions
1 июня 2011 г. 16:20 Pavel Shilovsky написал:
> Собственно вопроса два:
> 1) чем может быть объяснено такое странное поведение getgrouplist со
> статик переменными (проверял его отдельно, вне кода mountd)?
Отладил в gdb, разобрался: ngroups у вас 0 в случае использования
static при вызове getgrouplist :).
А это ожидаемая длинна массива :).
--
С уважением, Ринат Биков.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 12:20 [devel] nfs mountd --manage-gids problem Pavel Shilovsky
2011-06-01 15:11 ` Rinat Bikov
@ 2011-06-01 15:23 ` Rinat Bikov
2011-06-01 15:36 ` Rinat Bikov
2011-06-01 15:49 ` Rinat Bikov
2 siblings, 1 reply; 9+ messages in thread
From: Rinat Bikov @ 2011-06-01 15:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 203 bytes --]
1 июня 2011 г. 16:20 Pavel Shilovsky написал:
> 2) есть ли лучшее решение на текущий момент, чем просто отревертить
> сломанной коммит?
Соответственно, что-то вроде этого.
--
С уважением, Ринат Биков.
[-- Attachment #2: nfs.patch --]
[-- Type: text/x-patch, Size: 346 bytes --]
--- utils/mountd/cache.c.orig 2011-06-01 19:18:28.866799186 +0400
+++ utils/mountd/cache.c 2011-06-01 19:18:40.529799186 +0400
@@ -148,7 +148,8 @@ static void auth_unix_gid(FILE *f)
return;
groups_len = ngroups = INITIAL_MANAGED_GROUPS;
- }
+ } else
+ ngroups = groups_len;
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 15:23 ` Rinat Bikov
@ 2011-06-01 15:36 ` Rinat Bikov
0 siblings, 0 replies; 9+ messages in thread
From: Rinat Bikov @ 2011-06-01 15:36 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 279 bytes --]
1 июня 2011 г. 19:23 Rinat Bikovнаписал:
> 1 июня 2011 г. 16:20 Pavel Shilovsky написал:
>> 2) есть ли лучшее решение на текущий момент, чем просто отревертить
>> сломанной коммит?
> Соответственно, что-то вроде этого.
Хотя, я бы лучше сделал так.
--
С уважением, Ринат Биков.
[-- Attachment #2: nfs2.patch --]
[-- Type: text/x-patch, Size: 392 bytes --]
--- utils/mountd/cache.c.orig 2011-06-01 19:18:28.866799186 +0400
+++ utils/mountd/cache.c 2011-06-01 19:34:30.763799186 +0400
@@ -147,8 +147,9 @@ static void auth_unix_gid(FILE *f)
if (!groups)
return;
- groups_len = ngroups = INITIAL_MANAGED_GROUPS;
+ groups_len = INITIAL_MANAGED_GROUPS;
}
+ ngroups = groups_len;
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 12:20 [devel] nfs mountd --manage-gids problem Pavel Shilovsky
2011-06-01 15:11 ` Rinat Bikov
2011-06-01 15:23 ` Rinat Bikov
@ 2011-06-01 15:49 ` Rinat Bikov
2 siblings, 0 replies; 9+ messages in thread
From: Rinat Bikov @ 2011-06-01 15:49 UTC (permalink / raw)
To: ALT Linux Team development discussions
1 июня 2011 г. 16:20 Pavel Shilovsky написал:
> 1) чем может быть объяснено такое странное поведение getgrouplist со
> статик переменными (проверял его отдельно, вне кода mountd)?
Ну, ещё причина ошибки в том, что для static-переменных память
выделяется всего один раз, а инициализация с объявлением:
static int var = 0;
происходит во время выделения памяти под переменную, при дальнейшем
использовании переменной в последующих вызовах берётся её значение,
которое осталось после предыдущего вызова.
--
С уважением, Ринат Биков.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 15:11 ` Rinat Bikov
@ 2011-06-01 18:25 ` Pavel Shilovsky
2011-06-09 6:28 ` Pavel Shilovsky
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Shilovsky @ 2011-06-01 18:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
1 июня 2011 г. 19:11 пользователь Rinat Bikov <becase@altlinux.org> написал:
> 1 июня 2011 г. 16:20 Pavel Shilovsky написал:
>> Собственно вопроса два:
>> 1) чем может быть объяснено такое странное поведение getgrouplist со
>> статик переменными (проверял его отдельно, вне кода mountd)?
> Отладил в gdb, разобрался: ngroups у вас 0 в случае использования
> static при вызове getgrouplist :).
> А это ожидаемая длинна массива :).
Спасибо, я теперь понял в чём дело! Так как groups_len в
последующих вызовах уже не 0, то ngroups не меняется из-за условия:
145 >-------if (groups_len == 0) {
146 >------->-------groups = malloc(sizeof(gid_t) * INITIAL_MANAGED_GROUPS);
147 >------->-------if (!groups)
148 >------->------->-------return;
149
150 >------->-------groups_len = ngroups = INITIAL_MANAGED_GROUPS;
151 >-------}
Видимо, можно просто наложить такой патч:
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index df6b38f..8248e9c 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -147,9 +147,11 @@ static void auth_unix_gid(FILE *f)
if (!groups)
return;
- groups_len = ngroups = INITIAL_MANAGED_GROUPS;
+ groups_len = INITIAL_MANAGED_GROUPS;
}
+ ngroups = groups_len;
+
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
--
Best regards,
Pavel Shilovsky.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-01 18:25 ` Pavel Shilovsky
@ 2011-06-09 6:28 ` Pavel Shilovsky
2011-06-09 8:23 ` Sergey Bolshakov
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Shilovsky @ 2011-06-09 6:28 UTC (permalink / raw)
To: ALT Linux Team development discussions
Патч, решающий данную проблему, принят в апстрим:
http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=40aed2c3fb5164195a9975ae7f15ebd4b992839d;hp=8935933dedcd820c2fb3dddff8b79fd5841dc217.
Ринат, ещё раз спасибо за помощь!
--
Best regards,
Pavel Shilovsky.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-09 6:28 ` Pavel Shilovsky
@ 2011-06-09 8:23 ` Sergey Bolshakov
2013-01-11 13:20 ` Evgeny Sinelnikov
0 siblings, 1 reply; 9+ messages in thread
From: Sergey Bolshakov @ 2011-06-09 8:23 UTC (permalink / raw)
To: devel
>>>>> "Pavel" == Pavel Shilovsky <piastry-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org> writes:
> Патч, решающий данную проблему, принят в апстрим:
> http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=40aed2c3fb5164195a9975ae7f15ebd4b992839d;hp=8935933dedcd820c2fb3dddff8b79fd5841dc217.
Позавчера в сизифе.
--
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] nfs mountd --manage-gids problem
2011-06-09 8:23 ` Sergey Bolshakov
@ 2013-01-11 13:20 ` Evgeny Sinelnikov
0 siblings, 0 replies; 9+ messages in thread
From: Evgeny Sinelnikov @ 2013-01-11 13:20 UTC (permalink / raw)
To: ALT Linux Team development discussions
2011/6/9 Sergey Bolshakov <sbolshakov@altlinux.ru>:
>>>>>> "Pavel" == Pavel Shilovsky <piastry-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org> writes:
>
> > Патч, решающий данную проблему, принят в апстрим:
> > http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=40aed2c3fb5164195a9975ae7f15ebd4b992839d;hp=8935933dedcd820c2fb3dddff8b79fd5841dc217.
>
> Позавчера в сизифе.
В p6 так и остался сломанный вариант, исправления доступны в репозитории:
http://git.etersoft.ru/people/piastry/packages/nfs.git
--
Sin (Sinelnikov Evgeny)
Etersoft
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-01-11 13:20 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-01 12:20 [devel] nfs mountd --manage-gids problem Pavel Shilovsky
2011-06-01 15:11 ` Rinat Bikov
2011-06-01 18:25 ` Pavel Shilovsky
2011-06-09 6:28 ` Pavel Shilovsky
2011-06-09 8:23 ` Sergey Bolshakov
2013-01-11 13:20 ` Evgeny Sinelnikov
2011-06-01 15:23 ` Rinat Bikov
2011-06-01 15:36 ` Rinat Bikov
2011-06-01 15:49 ` Rinat Bikov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git