ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] tunctl & udev rules
@ 2007-03-03 11:17 Nick S. Grechukh
  2007-03-03 11:56 ` Sergey Vlasov
  0 siblings, 1 reply; 3+ messages in thread
From: Nick S. Grechukh @ 2007-03-03 11:17 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]

я тут собрался делать дистрибутивное решение для qemu tun/tap
networking, по ходу нарисовался control-скрипт для tunctl.
обнаружилось что:

[root@gns facilities]# grep -Rw tun /etc/udev/rules.d/
/etc/udev/rules.d/50-udev-default.rules:KERNEL=="tun",
 NAME="net/%k", MODE="0600"
/etc/udev/rules.d/90-tun.rules:KERNEL=="tun", NAME="net/%k",
GROUP="tun" MODE="0660"

[root@gns facilities]# rpm -qf /etc/udev/rules.d/90-tun.rules
tunctl-20060323-alt0

[root@gns facilities]# rpm -q --scripts tunctl
preinstall scriptlet (through /bin/sh):
groupadd -r tun
postuninstall scriptlet (through /bin/sh):
groupdel tun

(тут сразу три баги - BLOCKER: /^groupdel.*$// ; ENH: s/tun/_tun/ ;
TRIVIAL: s/groupadd/%groupadd/ ;)

[root@gns facilities]# modprobe tun

[root@gns facilities]# ll /dev/net/tun
crw------- 1 root root 10, 200 Mar  2 23:00 /dev/net/tun

конечно, закоментить строчку в 50-udev-default.rules могy, но это не
наш метод. можно:

а) поставить группу tun в дефолт самого удева, из пакета убрать
рулезы. а кто создаст группу?

б) убрать из udev правило для tun, чтобы работало нужно будет ставить
пакет tunctl. да и так без него tun особо не поюзаешь  - qemu
разучился создавать их от пользователя.

в) изменить в пакете номер правила на меньше 50. это грязно :)

[-- Attachment #2: tun.control --]
[-- Type: application/x-shellscript, Size: 1614 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] tunctl & udev rules
  2007-03-03 11:17 [devel] tunctl & udev rules Nick S. Grechukh
@ 2007-03-03 11:56 ` Sergey Vlasov
  2007-03-04 10:21   ` Nick S. Grechukh
  0 siblings, 1 reply; 3+ messages in thread
From: Sergey Vlasov @ 2007-03-03 11:56 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 3087 bytes --]

On Sat, Mar 03, 2007 at 01:17:38PM +0200, Nick S. Grechukh wrote:
> я тут собрался делать дистрибутивное решение для qemu tun/tap
> networking, по ходу нарисовался control-скрипт для tunctl.
> обнаружилось что:
> 
> [root@gns facilities]# grep -Rw tun /etc/udev/rules.d/
> /etc/udev/rules.d/50-udev-default.rules:KERNEL=="tun",
> NAME="net/%k", MODE="0600"
> /etc/udev/rules.d/90-tun.rules:KERNEL=="tun", NAME="net/%k",
> GROUP="tun" MODE="0660"

Тут, кстати, есть ещё одна ошибка - пропущена запятая (текущая версия
udev эту ошибку игнорирует, но могут и исправить).  Похоже, эта же
ошибка была скопирована и в скрипт для control.

Кстати, из правила в 90-tun.rules можно просто убрать установку NAME.
Проблема в том, что NAME в udev может устанавливаться только один раз;
если обнаруживается, что NAME уже есть, udevd игнорирует не только
повторную установку NAME, но и вообще всё правило.

Можно оставить в пакете udev:

KERNEL=="tun", NAME="net/%k", MODE="0600"

а в 90-tun.rules правило, которое будет устанавливать только права:

KERNEL=="tun", GROUP="root", MODE="0600"

(вообще при использовании control рекомендуется ставить в файлах,
входящих в пакет, наиболее жёсткие права - при первой установке пакета
они будут исправлены вызовом %post_control на вариант, указанный в
опции -s).

> [root@gns facilities]# rpm -qf /etc/udev/rules.d/90-tun.rules
> tunctl-20060323-alt0
> 
> [root@gns facilities]# rpm -q --scripts tunctl
> preinstall scriptlet (through /bin/sh):
> groupadd -r tun
> postuninstall scriptlet (through /bin/sh):
> groupdel tun
> 
> (тут сразу три баги - BLOCKER: /^groupdel.*$// ; ENH: s/tun/_tun/ ;
> TRIVIAL: s/groupadd/%groupadd/ ;)

Да уж...

В случае kqemu группа kqemu уже была внесена в пакет setup, поэтому
_kqemu я делать не стал.

В данном случае можно просто собрать новый пакет tunctl, содержащий
%groupadd _tun в %pre, и проигнорировать действия с группой tun в
старой сборке пакета (при обновлении эта группа удалится).

> [root@gns facilities]# modprobe tun
> 
> [root@gns facilities]# ll /dev/net/tun
> crw------- 1 root root 10, 200 Mar  2 23:00 /dev/net/tun
> 
> конечно, закоментить строчку в 50-udev-default.rules могy, но это не
> наш метод. можно:
> 
> а) поставить группу tun в дефолт самого удева, из пакета убрать
> рулезы. а кто создаст группу?

Группу-то может создать и сам udev (группа video там уже создаётся), а
вот какой файл будет редактировать control?  Нет, такой вариант не
годится.

> б) убрать из udev правило для tun, чтобы работало нужно будет ставить
> пакет tunctl. да и так без него tun особо не поюзаешь  - qemu
> разучился создавать их от пользователя.

Убирать не надо - пусть хотя бы имя устройства будет правильное
независимо от того, установлен пакет tunctl или нет.  Достаточно
просто убрать установку NAME из того правила, которое ставит права.

> в) изменить в пакете номер правила на меньше 50. это грязно :)

И будет работать только за счёт побочного эффекта NAME, который в
данном случае будет отключать стандартное правило.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] tunctl & udev rules
  2007-03-03 11:56 ` Sergey Vlasov
@ 2007-03-04 10:21   ` Nick S. Grechukh
  0 siblings, 0 replies; 3+ messages in thread
From: Nick S. Grechukh @ 2007-03-04 10:21 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 278 bytes --]

вот исправленный скрипт и руоезы. я изменил формулировку на can use
interface owned by him, потом что *создавать* может в любом случае
только рут - tunctl -u gns -t gnstap.  а *использовать* может
пользователь которого указали в -u && который имеет право записи в
/dev/net/tun.

[-- Attachment #2: tun-control --]
[-- Type: application/x-shellscript, Size: 1450 bytes --]

[-- Attachment #3: 90-tun.rules --]
[-- Type: text/plain, Size: 41 bytes --]

KERNEL=="tun", GROUP="root", MODE="0666"

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-03-04 10:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-03 11:17 [devel] tunctl & udev rules Nick S. Grechukh
2007-03-03 11:56 ` Sergey Vlasov
2007-03-04 10:21   ` Nick S. Grechukh

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