ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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