From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <legion@altlinux.ru> X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 Date: Sat, 28 Mar 2020 23:28:41 +0100 From: Alexey Gladkov <legion@altlinux.ru> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Message-ID: <20200328222841.xwnmr456jv7umwsg@comp-core-i7-2640m-0182e6> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Subject: [devel] I: wlroots & drmhelper X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions <devel@lists.altlinux.org> List-Id: ALT Linux Team development discussions <devel.lists.altlinux.org> List-Unsubscribe: <https://lists.altlinux.org/mailman/options/devel>, <mailto:devel-request@lists.altlinux.org?subject=unsubscribe> List-Archive: <http://lists.altlinux.org/pipermail/devel> List-Post: <mailto:devel@lists.altlinux.org> List-Help: <mailto:devel-request@lists.altlinux.org?subject=help> List-Subscribe: <https://lists.altlinux.org/mailman/listinfo/devel>, <mailto:devel-request@lists.altlinux.org?subject=subscribe> X-List-Received-Date: Sat, 28 Mar 2020 22:28:49 -0000 Archived-At: <http://lore.altlinux.org/devel/20200328222841.xwnmr456jv7umwsg@comp-core-i7-2640m-0182e6/> List-Archive: <http://lore.altlinux.org/devel/> List-Post: <mailto:devel@altlinux.org> Привет! ПредыÑториÑ: Ñ ÑƒÐ¶Ðµ давно пользуюÑÑŒ только wayland. Раньше Ñто был e17, потом gnome3 и вот ÑÐµÐ¹Ñ‡Ð°Ñ sway. Одна из причин перехода было желание уйти от привилегированного Ñервера. Проблема: ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что вÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð° в wayland дейÑтвительно выполнÑетÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑким процеÑÑом выÑÑнилоÑÑŒ, что дизайнеры Ñтой ÑиÑтемы подложили волшебную мину. ÐеÑколько операций в модуле Ñдра DRM (direct rendering manager) Ñвным образом требуют повышенных привилегий [1] и не проÑто повышенных, а CAP_SYS_ADMIN [2]. Из-за Ñтого любой wayland-based compositor имеет лишь два варианта: 1. ИÑпользовать logind, который может выполнить привилегированные операции за композитор. Ðтот вариант мне не подходит из-за того, что Ñ Ð»ÑŽÐ±Ð»ÑŽ нежной любовью творение коллеги Поттеринга. Ðльтернативный elogind, который Ñ Ð¿Ñ‹Ñ‚Ð°Ð»ÑÑ Ð¿Ð¾Ð´Ð½Ñть, не полетел. 2. ÐапрÑмую требовать root-suid или cap_sys_admin на бинарник. Ð¥Ð¾Ñ‚Ñ Ñто Ñтавит креÑÑ‚ на желании избавитÑÑ Ð¾Ñ‚ привилегированного процеÑÑа. Workaround: Я напиÑал небольшую библиотеку-вреппер [3] Ð´Ð»Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ DRM, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ð½Ð¾Ñит привилегированные операции в отдельный root-suid бинарник. ДоÑтуп к нему ограничен группой drmpriv. Он вызываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ и Ñразу завершаетÑÑ. Также в wlroots добавлен Ñпециальный бÑкенд, работающий через drmhelper. Ðовый бÑкенд будет выбран автоматичеÑки еÑли у Ð²Ð°Ñ Ð½ÐµÑ‚ logind. Таким образом вÑе пользователи библиотеки wlroots могут переÑтать требовать права рута. API wlroots не изменилÑÑ. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_ioctl.c#n602 [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_ioctl.c#n540 [3] https://github.com/altlinux/drmhelper -- Rgrds, legion