Bug 37710 - добавить в подпакет capability
Summary: добавить в подпакет capability
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: collectd-ping (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-12-31 11:15 MSK by Sergey Y. Afonin
Modified: 2021-09-16 19:54 MSK (History)
14 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2019-12-31 11:15:55 MSK
https://lists.altlinux.org/pipermail/community/2019-October/687673.html

плагин ping по умолчанию не работает, если используется systemd. Надо добавить в подпакет файл /etc/systemd/system/collectd.service.d/ping-override.conf с таким содержимым:

[Service]

CapabilityBoundingSet=CAP_NET_RAW

Вероятно, надо проверить остальные плагины на необходимость добавления capability. Но надо как-то придумать, чтобы этот файл попадал в систему только в случае наличия systemd.
Comment 1 Dmitry V. Levin 2019-12-31 15:03:09 MSK
(In reply to comment #0)
> https://lists.altlinux.org/pipermail/community/2019-October/687673.html
> 
> плагин ping по умолчанию не работает, если используется systemd. Надо добавить
> в подпакет файл /etc/systemd/system/collectd.service.d/ping-override.conf с
> таким содержимым:
> 
> [Service]
> 
> CapabilityBoundingSet=CAP_NET_RAW
> 
> Вероятно, надо проверить остальные плагины на необходимость добавления
> capability. Но надо как-то придумать, чтобы этот файл попадал в систему только
> в случае наличия systemd.

Обратите внимание, что утилите ping CAP_NET_RAW не требуется.
Comment 2 Anton Farygin 2020-01-09 17:58:09 MSK
Предлагаю оставить эту настройку системному администратору.
Comment 3 Sergey Y. Afonin 2020-01-09 18:07:24 MSK
(In reply to comment #2)

> Предлагаю оставить эту настройку системному администратору.

Ещё бы вспоминать про неё.
Comment 4 Anton Farygin 2021-09-16 16:35:44 MSK
(Ответ для Dmitry V. Levin на комментарий #1)
> (In reply to comment #0)
> 
> Обратите внимание, что утилите ping CAP_NET_RAW не требуется.

Дим, а какому именно ping не нужен CAP_NET_RAW ? Я начал смотреть, можно ли это задачу закрыть как-то иначе, но пока что вижу, что в ping CAP_NET_RAW используется.

# strace -e capset  ping ya.ru -c 1
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=1<<CAP_SETGID|1<<CAP_SETUID, permitted=1<<CAP_SETGID|1<<CAP_SETUID|1<<CAP_NET_ADMIN|1<<CAP_NET_RAW, inheritable=0}) = 0
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=1<<CAP_NET_ADMIN|1<<CAP_NET_RAW, inheritable=0}) = 0
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=1<<CAP_NET_RAW, permitted=1<<CAP_NET_ADMIN|1<<CAP_NET_RAW, inheritable=0}) = 0
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=1<<CAP_NET_ADMIN|1<<CAP_NET_RAW, inheritable=0}) = 0
PING ya.ru(ya.ru (2a02:6b8::2:242)) 56 data bytes
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=0, inheritable=0}) = 0
64 bytes from ya.ru (2a02:6b8::2:242): icmp_seq=1 ttl=54 time=8.34 ms

--- ya.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.337/8.337/8.337/0.000 ms
+++ exited with 0 +++
Comment 5 Dmitry V. Levin 2021-09-16 18:46:06 MSK
(In reply to Anton Farygin from comment #4)
> (Ответ для Dmitry V. Levin на комментарий #1)
> > (In reply to comment #0)
> > 
> > Обратите внимание, что утилите ping CAP_NET_RAW не требуется.
> 
> Дим, а какому именно ping не нужен CAP_NET_RAW ? Я начал смотреть, можно ли
> это задачу закрыть как-то иначе, но пока что вижу, что в ping CAP_NET_RAW
> используется.
> 
> # strace -e capset  ping ya.ru -c 1

В этом примере пользователь уже настолько привилегированный, что CAP_NET_RAW уже есть.
Но если CAP_NET_RAW нет, то используется другой механизм:

# control ping help
public: Any user can execute ping command
netadmin: Only "netadmin" group members can execute ping command
restricted: Only root can execute ping command
public_caps: Any user can execute ping command (for containers only)
netadmin_caps: Only "netadmin" group members can execute ping command (for containers only)
# control ping
netadmin

$ ls -lL /bin/ping
-rwx--s--x 1 root iputils 76784 Aug  6 13:34 /bin/ping
$ ping -c1 ya.ru.
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=53 time=5.41 ms

linux$ sed -n '/ping_group_range/,/^$/p' Documentation/networking/ip-sysctl.rst
ping_group_range - 2 INTEGERS
	Restrict ICMP_PROTO datagram sockets to users in the group range.
	The default is "1 0", meaning, that nobody (not even root) may
	create ping sockets.  Setting it to "100 100" would grant permissions
	to the single group. "0 4294967295" would enable it for the world, "100
	4294967295" would enable it for the users, but not daemons.
Comment 6 Anton Farygin 2021-09-16 19:54:40 MSK
ага, понял. Посмотрю ещё внимательнее.