<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>55130</bug_id>
          
          <creation_ts>2025-07-09 21:43:41 +0300</creation_ts>
          <short_desc>Не запускается пользовательская systemd служба</short_desc>
          <delta_ts>2025-07-22 15:26:19 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kiosk</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Volkov">qualimock</reporter>
          <assigned_to name="Олег Соловьев">mcpain</assigned_to>
          <cc>antohami</cc>
    
    <cc>armatik</cc>
    
    <cc>jqt4</cc>
    
    <cc>mcpain</cc>
    
    <cc>oleg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268692</commentid>
    <comment_count>0</comment_count>
      <attachid>19020</attachid>
    <who name="Alexey Volkov">qualimock</who>
    <bug_when>2025-07-09 21:43:41 +0300</bug_when>
    <thetext>Created attachment 19020
Лог службы user@1000.service

С активированным режимом Kiosk при логине не стартует служба user@.service (в моем случае user@1000.service).

Происходит это из-за того, что /usr/lib/systemd/systemd --user не может взять переменные окружения XDG_RUNTIME_DIR и DBUS_SESSION_BUS_ADDRESS, что приводит к завершению systemd --user. Она падает с ошибкой, что не может определить путь до RuntimeDirectory. Посмотрев код systemd, увидел, что там используется функция secure_getenv(), которая сравнивает UID с EUID и GID с EGID и только при их равенстве вызывает getenv(), который уже получает нужные переменные окружения (XDG_RUNTIME_DIR и DBUS_SESSION_BUS_ADDRESS).

Я в качестве эксперимента менял secure_getenv() на просто getenv() и служба успешно запускалась с работающим Киоском.

Проверялось на ALT Workstation 11.0 с профилем user-gnome-startup из пакета kiosk-gnome-profiles: https://packages.altlinux.org/en/sisyphus/srpms/kiosk-gnome-profiles/
Если выключить режим Kiosk, вручную запустить службу, обратно включить Kiosk, и потом залогиниться в GDM, то GNOME с этим профилем запустится без проблем.

Ошибка воспроизводится на ALT Workstation K, но так как KDE не так зависит от D-Bus как GNOME, KDE после логина запускается без ошибок, но служба все равно не запускается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269620</commentid>
    <comment_count>1</comment_count>
    <who name="Олег Соловьев">mcpain</who>
    <bug_when>2025-07-22 15:26:19 +0300</bug_when>
    <thetext>(In reply to Alexey Volkov from comment #0)
&gt; Посмотрев код systemd, увидел, что там
&gt; используется функция secure_getenv(), которая сравнивает UID с EUID и GID с
&gt; EGID и только при их равенстве вызывает getenv(), который уже получает
&gt; нужные переменные окружения (XDG_RUNTIME_DIR и DBUS_SESSION_BUS_ADDRESS).

А вот что я нашёл:

В glibc/sysdeps/unix/sysv/linux/dl-parse_auxv.h [1]:
/* Copy the auxiliary vector into AUXV_VALUES and set up GLRO
   variables.  */
static inline
void _dl_parse_auxv (ElfW(auxv_t) *av, dl_parse_auxv_t auxv_values)
{
  ...
  unsigned security_mask = 0;
  ...
  security_mask |= auxv_values[AT_SECURE] != 0;
  security_mask |= ((uid != 0) &lt;&lt; 1) | ((gid != 0) &lt;&lt; 2);
  __libc_security_mask = security_mask;
  __libc_enable_secure = __libc_security_mask != 0;
  ...
}

В glibc/stdlib/secure-getenv.c [2]:
/* Some programs and especially the libc itself have to be careful
   what values to accept from the environment.  This special version
   checks for SUID or SGID first before doing any work.  */
char *
__libc_secure_getenv (const char *name)
{
  return __libc_enable_secure ? NULL : getenv (name);
}
weak_alias (__libc_secure_getenv, secure_getenv)
libc_hidden_weak (__libc_secure_getenv)

В https://man7.org/linux/man-pages/man3/secure_getenv.3.html:
&gt; The GNU-specific secure_getenv() function is just like getenv()
&gt;   except that it returns NULL in cases where &quot;secure execution&quot; is
&gt;   required.
&gt; ...
&gt; Secure execution may also be required if triggered by some Linux security modules.

А kiosk - LSM и включает secure execution для всех процессов, запущенных пользователем с uid &gt;= 1000.
В kernel-image-6.12/security/kiosk/kiosk_lsm.c [3]:
static int kiosk_bprm_check_security(struct linux_binprm *bprm)
{
         uid_t cur_uid = __kuid_val(bprm-&gt;cred-&gt;uid);
         struct kiosk_list_struct *node;
 
         if (kiosk_mode == KIOSK_PERMISSIVE)
                 return 0;
 
         if (cur_uid &gt;= 1000) {
                 bprm-&gt;secureexec = 1;
         ...
}

[1] https://git.altlinux.org/gears/g/glibc.git?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/dl-parse_auxv.h;h=fb4124050f827dcd8c9567388886dc266212e12e;hb=8c5965291fac4d9814d13c492d45574fccf331c7#l27
[2] https://git.altlinux.org/gears/g/glibc.git?p=glibc.git;a=blob;f=stdlib/secure-getenv.c;h=88bff1b47abdb5a69614d6d7fc62d7f49ba3a83b;hb=8c5965291fac4d9814d13c492d45574fccf331c7#l24
[3] https://git.altlinux.org/gears/k/kernel-image-6.12.git?p=kernel-image-6.12.git;a=blob;f=security/kiosk/kiosk_lsm.c;h=18f810a1ce0f17631b5a18e40a92bad3f9ab8447;hb=5c8a6837cbfaf345ebf52635e02135793aaed3b8#l286

Таким образом, secure_getenv() в недрах systemd возвращает NULL из-за установленного в LSM-модуле флага AT_SECURE.
Если бы флага не было и нет другой необходимости в secureexec, то вызывается уже getenv()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>19020</attachid>
            <date>2025-07-09 21:43:41 +0300</date>
            <delta_ts>2025-07-09 21:43:41 +0300</delta_ts>
            <desc>Лог службы user@1000.service</desc>
            <filename>kiosk.log</filename>
            <type>text/x-log</type>
            <size>4805</size>
            <attacher name="Alexey Volkov">qualimock</attacher>
            
              <data encoding="base64">SnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IFRy
eWluZyB0byBlbnF1ZXVlIGpvYiB1c2VyQDEwMDAuc2VydmljZS9zdGFydC9yZXBsYWNlCkp1bCAw
OSAyMToyMTo0NiBob3N0LTM0IHN5c3RlbWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBJbnN0YWxs
ZWQgbmV3IGpvYiB1c2VyQDEwMDAuc2VydmljZS9zdGFydCBhcyAyNjMzCkp1bCAwOSAyMToyMTo0
NiBob3N0LTM0IHN5c3RlbWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBFbnF1ZXVlZCBqb2IgdXNl
ckAxMDAwLnNlcnZpY2Uvc3RhcnQgYXMgMjYzMwpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0
ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogc3RhcnRpbmcgaGVsZCBiYWNrLCB3YWl0aW5nIGZv
cjogdXNlci1ydW50aW1lLWRpckAxMDAwLnNlcnZpY2UKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQg
c3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IE1lcmdlZCB1c2VyQDEwMDAuc2VydmljZS9z
dGFydCBpbnRvIGluc3RhbGxlZCBqb2IgdXNlckAxMDAwLnNlcnZpY2Uvc3RhcnQgYXMgMjYzMwpK
dWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogc3Rh
cnRpbmcgaGVsZCBiYWNrLCB3YWl0aW5nIGZvcjogdXNlci1ydW50aW1lLWRpckAxMDAwLnNlcnZp
Y2UKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6
IFdpbGwgc3Bhd24gY2hpbGQgKHNlcnZpY2VfZW50ZXJfc3RhcnQpOiAvdXNyL2xpYi9zeXN0ZW1k
L3N5c3RlbWQKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNl
cnZpY2U6IFBhc3NpbmcgMCBmZHMgdG8gc2VydmljZQpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBz
eXN0ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogQWJvdXQgdG8gZXhlY3V0ZTogL3Vzci9saWIv
c3lzdGVtZC9zeXN0ZW1kIC0tdXNlcgpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFd
OiBTZXJpYWxpemluZyBzZC1leGVjdXRvci1zdGF0ZSB0byBtZW1mZC4KSnVsIDA5IDIxOjIxOjQ2
IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IEZvcmtlZCAvdXNyL2xpYi9z
eXN0ZW1kL3N5c3RlbWQgYXMgMjYwMQpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFd
OiB1c2VyQDEwMDAuc2VydmljZTogQ2hhbmdlZCBkZWFkIC0+IHN0YXJ0Ckp1bCAwOSAyMToyMTo0
NiBob3N0LTM0IHN5c3RlbWRbMV06IFN0YXJ0aW5nIHVzZXJAMTAwMC5zZXJ2aWNlIC0gVXNlciBN
YW5hZ2VyIGZvciBVSUQgMTAwMC4uLgpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFd
OiB1c2VyQDEwMDAuc2VydmljZTogVXNlciBsb29rdXAgc3VjY2VlZGVkOiB1aWQ9MTAwMCBnaWQ9
MTAwMApKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCAoc3lzdGVtZClbMjYwMV06IEZvdW5kIGNncm91
cDIgb24gL3N5cy9mcy9jZ3JvdXAvLCBmdWxsIHVuaWZpZWQgaGllcmFyY2h5Ckp1bCAwOSAyMToy
MTo0NiBob3N0LTM0IChzeXN0ZW1kKVsyNjAxXTogRm91bmQgY2dyb3VwMiBvbiAvc3lzL2ZzL2Nn
cm91cC8sIGZ1bGwgdW5pZmllZCBoaWVyYXJjaHkKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgKHN5
c3RlbWQpWzI2MDFdOiBwYW1fdGNiKHN5c3RlbWQtdXNlcjpzZXNzaW9uKTogU2Vzc2lvbiBvcGVu
ZWQgZm9yIHRlc3QgYnkgKHVpZD0wKQpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCAoc3lzdGVtZClb
MjYwMV06IHBhbV9zZXRjcmVkKCkgZmFpbGVkLCBpZ25vcmluZzogRmFpbHVyZSBzZXR0aW5nIHVz
ZXIgY3JlZGVudGlhbHMKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgKHN5c3RlbWQpWzI2MDFdOiBT
dWNjZXNzZnVsbHkgZm9ya2VkIG9mZiAnKHNkLXBhbSknIGFzIFBJRCAyNjA2LgpKdWwgMDkgMjE6
MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzI2MDFdOiBGYWlsZWQgdG8gcmVhZCAkY29udGFpbmVyIG9m
IFBJRCAxLCBpZ25vcmluZzogUGVybWlzc2lvbiBkZW5pZWQKSnVsIDA5IDIxOjIxOjQ2IGhvc3Qt
MzQgc3lzdGVtZFsyNjAxXTogRm91bmQgY29udGFpbmVyIHZpcnR1YWxpemF0aW9uIG5vbmUuCkp1
bCAwOSAyMToyMTo0NiBob3N0LTM0IHN5c3RlbWRbMjYwMV06IHN5c3RlbWQgMjU1LjIxLWFsdDEg
cnVubmluZyBpbiB1c2VyIG1vZGUgZm9yIHVzZXIgMTAwMC90ZXN0LiAoK1BBTSArQVVESVQgK1NF
TElOVVggLUFQUEFSTU9SICtJTUEgK1NNQUNLICtTRUNDT01QICtHQ1JZUFQgK0dOVVRMUyArT1BF
TlNTTCArQUNMICtCTEtJRCArQ1VSTCArRUxGVVRJTFMgK0ZJRE8yICtJRE4yIC1JRE4gK0lQVEMg
K0tNT0QgK0xJQkNSWVBUU0VUVVAgK0xJQkZESVNLICtQQ1JFMiAtUFdRVUFMSVRZICtQMTFLSVQg
K1FSRU5DT0RFICtUUE0yICtCWklQMiArTFo0ICtYWiArWkxJQiArWlNURCAtQlBGX0ZSQU1FV09S
SyArWEtCQ09NTU9OICtVVE1QICtTWVNWSU5JVCBkZWZhdWx0LWhpZXJhcmNoeT11bmlmaWVkKQpK
dWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzI2MDFdOiBGYWlsZWQgdG8gY3JlYXRlICcv
cnVuL3VzZXIvMTAwMC9zeXN0ZW1kL2luYWNjZXNzaWJsZS9ibGsnLCBpZ25vcmluZzogT3BlcmF0
aW9uIG5vdCBwZXJtaXR0ZWQKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsyNjAxXTog
RmFpbGVkIGF0IHNldHRpbmcgcmxpbWl0IDUxMzQ1NDA4MCBmb3IgcmVzb3VyY2UgUkxJTUlUX01F
TUxPQ0suIFdpbGwgYXR0ZW1wdCBzZXR0aW5nIHZhbHVlIDIwOTcxNTIgaW5zdGVhZC4KSnVsIDA5
IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsyNjAxXTogRmFpbGVkIHRvIGxvb2t1cCBSdW50aW1l
RGlyZWN0b3J5IHBhdGg6IE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MKSnVsIDA5IDIxOjIxOjQ2
IGhvc3QtMzQgc3lzdGVtZFsyNjAxXTogRmFpbGVkIHRvIGFsbG9jYXRlIG1hbmFnZXIgb2JqZWN0
OiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzCkp1bCAwOSAyMToyMTo0NiBob3N0LTM0IHN5c3Rl
bWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBHb3Qgbm90aWZpY2F0aW9uIG1lc3NhZ2UgZnJvbSBQ
SUQgMjYwMSAoRVJSTk89NikKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNl
ckAxMDAwLnNlcnZpY2U6IEdvdCBub3RpZmljYXRpb24gbWVzc2FnZSBmcm9tIFBJRCAyNjAxIChF
WElUX1NUQVRVUz0xKQpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEw
MDAuc2VydmljZTogQ2hpbGQgMjYwMSBiZWxvbmdzIHRvIHVzZXJAMTAwMC5zZXJ2aWNlLgpKdWwg
MDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogTWFpbiBw
cm9jZXNzIGV4aXRlZCwgY29kZT1leGl0ZWQsIHN0YXR1cz0xL0ZBSUxVUkUKSnVsIDA5IDIxOjIx
OjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IENoYW5nZWQgc3RhcnQg
LT4gc3RvcC1zaWdraWxsCkp1bCAwOSAyMToyMTo0NiBob3N0LTM0IHN5c3RlbWRbMV06IHVzZXJA
MTAwMC5zZXJ2aWNlOiBDaGlsZCAyNjA2IGJlbG9uZ3MgdG8gdXNlckAxMDAwLnNlcnZpY2UuCkp1
bCAwOSAyMToyMTo0NiBob3N0LTM0IHN5c3RlbWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBDb250
cm9sIGdyb3VwIGlzIGVtcHR5LgpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1
c2VyQDEwMDAuc2VydmljZTogRmFpbGVkIHdpdGggcmVzdWx0ICdleGl0LWNvZGUnLgpKdWwgMDkg
MjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogU2VydmljZSB3
aWxsIG5vdCByZXN0YXJ0IChyZXN0YXJ0IHNldHRpbmcpCkp1bCAwOSAyMToyMTo0NiBob3N0LTM0
IHN5c3RlbWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBDaGFuZ2VkIHN0b3Atc2lna2lsbCAtPiBm
YWlsZWQKSnVsIDA5IDIxOjIxOjQ2IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZp
Y2U6IEpvYiAyNjMzIHVzZXJAMTAwMC5zZXJ2aWNlL3N0YXJ0IGZpbmlzaGVkLCByZXN1bHQ9ZmFp
bGVkCkp1bCAwOSAyMToyMTo0NiBob3N0LTM0IHN5c3RlbWRbMV06IEZhaWxlZCB0byBzdGFydCB1
c2VyQDEwMDAuc2VydmljZSAtIFVzZXIgTWFuYWdlciBmb3IgVUlEIDEwMDAuCkp1bCAwOSAyMToy
MTo0NiBob3N0LTM0IHN5c3RlbWRbMV06IHVzZXJAMTAwMC5zZXJ2aWNlOiBVbml0IGVudGVyZWQg
ZmFpbGVkIHN0YXRlLgpKdWwgMDkgMjE6MjE6NDYgaG9zdC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEw
MDAuc2VydmljZTogQ29uc3VtZWQgMzJtcyBDUFUgdGltZS4KSnVsIDA5IDIxOjIxOjQ2IGhvc3Qt
MzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IFJlbGVhc2luZyByZXNvdXJjZXMuLi4K
SnVsIDA5IDIxOjIxOjU3IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IFRy
eWluZyB0byBlbnF1ZXVlIGpvYiB1c2VyQDEwMDAuc2VydmljZS9zdG9wL2ZhaWwKSnVsIDA5IDIx
OjIxOjU3IGhvc3QtMzQgc3lzdGVtZFsxXTogdXNlckAxMDAwLnNlcnZpY2U6IEluc3RhbGxlZCBu
ZXcgam9iIHVzZXJAMTAwMC5zZXJ2aWNlL3N0b3AgYXMgMzE5NwpKdWwgMDkgMjE6MjE6NTcgaG9z
dC0zNCBzeXN0ZW1kWzFdOiB1c2VyQDEwMDAuc2VydmljZTogRW5xdWV1ZWQgam9iIHVzZXJAMTAw
MC5zZXJ2aWNlL3N0b3AgYXMgMzE5NwpKdWwgMDkgMjE6MjE6NTcgaG9zdC0zNCBzeXN0ZW1kWzFd
OiB1c2VyQDEwMDAuc2VydmljZTogSm9iIDMxOTcgdXNlckAxMDAwLnNlcnZpY2Uvc3RvcCBmaW5p
c2hlZCwgcmVzdWx0PWRvbmU=
</data>

          </attachment>
      

    </bug>

</bugzilla>