[PATCH v2 0/2] Make accounting database no-op

Thorsten Kukuk kukuk@suse.com
Mon Nov 11 08:00:29 GMT 2024


Hello,

any update on this patch? I haven't seen any followup.

Thanks,
Thorsten

On Fri, Aug 16, 2024 at 10:27 AM Thorsten Kukuk <kukuk@suse.com> wrote:
>
> Hi,
>
> thank you for the patch. I would have preferred for the beginning, if
> this would be configurable, since not all distributions switched or,
> like rawhide, are using utmp as fallback. But since SUSE/openSUSE
> switched already completely, I'm fine with removing the complete code
> ;)
> Which also forces other developers to react and adjust their code and
> Linux distributions will not compile with reenabled utmp functionality
> for the next 33 years.
>
> musl libc returns getenv("LOGNAME") or ENXIO if the variable is not
> set for getlogin()/getlogin_r(). The glibc solution is better.
>
> getutmp(): there is no way for an application to find out that nothing
> was done. But I doubt that any application is using this function, I
> never saw one, and it should not really create problems.
>
> login()/logout(): musl libc does not have them, so code using this
> functions expects they are implemented and not stub. Will create
> several error messages in the beginning until the code is adjusted. As
> we speak only about a low one digit number, not a problem for me.
>
> Else the behavior is the same as with musl libc, so I don't expect any problems.
>
>   Thorsten
>
> On Fri, Aug 9, 2024 at 4:22 PM Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
> >
> > The utmp/utmpx interface is the missing piece to enable full y2038
> > support on glibc, and even some 64 bit architectures are not fully
> > compatible (the ones that define __WORDSIZE_TIME64_COMPAT32).  The
> > recent 5361ad3910c257bc327567be76fde532ed238e42 (login: Use unsigned
> > 32-bit types for seconds-since-epoch) postpone the issue to y2106;
> > however it still does not fix long-standing issues with the API [1][2].
> >
> > The current implementation has some design flaws that are not
> > straightforward to fix without a complete rewrite [4].  A utmp/utmpx
> > daemon will also require a security model and support for multiple
> > different IPC systems, which is out of scope for glibc.  Also, this is
> > what systemd-logind essentially does so it would be a double effort
> > (the pt_chwon daemon is a remind that it is not easy to get this right).
> >
> > This patchset removes all accounting database implementation and makes
> > the function no-op and/or return an error.  There is not much gain in
> > moving the current implementation to compat symbols, it does not solve
> > the 64 bit time_t support for old binaries, nor it is guaranteed that
> > the UTMP/UTMPX files will exist in future environments.
> >
> > Keeping a compat symbol also does not help with some design flags
> > like BZ#24492, which I am not sure why it did not raise more security
> > concerns since it is easy to create DoS attacks by preventing utmp
> > updates.
> >
> > The utmp.h/utmpx.h headers are kept as is, even though glibc does not
> > use its definition. The related path  _PATH_UTMP/_PATH_WTMP/etc.  points
> > to invalid paths, and stub link warnings are added to the affected
> > symbols.
> >
> > More information of alternative solutions and how to adapt applications
> > on newer accounting database support can be found at
> > https://www.thkukuk.de/blog/Y2038_glibc_utmp_64bit/.
> >
> > [1] https://sourceware.org/bugzilla/show_bug.cgi?id=28146
> > [2] https://sourceware.org/bugzilla/show_bug.cgi?id=17470
> > [3] https://sourceware.org/bugzilla/show_bug.cgi?id=30701
> > [4] https://sourceware.org/bugzilla/show_bug.cgi?id=24492
> >
> > Adhemerval Zanella (2):
> >   login: Remove utmp fallback for getlogin
> >   login: Make user accounting database no-op
> >
> >  NEWS                                          |  22 +-
> >  include/set-freeres.h                         |   3 -
> >  include/unistd.h                              |   3 -
> >  include/utmp.h                                |  29 -
> >  login/Makefile                                |   9 +-
> >  login/endutxent.c                             |  25 -
> >  login/getlogin.c                              |  13 +-
> >  login/getutent.c                              |  28 +-
> >  login/getutent_r.c                            |  45 +-
> >  login/getutid.c                               |  25 +-
> >  login/getutid_r.c                             |  34 +-
> >  login/getutline.c                             |  27 +-
> >  login/getutline_r.c                           |  21 +-
> >  login/getutmp.c                               |  12 +-
> >  login/getutmpx.c                              |  34 --
> >  login/getutxent.c                             |  25 -
> >  login/getutxid.c                              |  25 -
> >  login/getutxline.c                            |  25 -
> >  login/login.c                                 | 118 +---
> >  login/logout.c                                |  44 +-
> >  login/logwtmp.c                               |  22 +-
> >  login/programs/utmpdump.c                     |  62 ---
> >  login/pututxline.c                            |  25 -
> >  login/setutxent.c                             |  25 -
> >  login/tst-pututxline-cache.c                  | 193 -------
> >  login/tst-pututxline-lockfail.c               | 176 ------
> >  login/tst-updwtmpx.c                          | 112 ----
> >  login/tst-utmp.c                              | 377 -------------
> >  login/tst-utmpx.c                             |   2 -
> >  login/updwtmp.c                               |  13 +-
> >  login/updwtmpx.c                              |  25 -
> >  login/utmp-private.h                          |  44 --
> >  login/utmp_file.c                             | 506 ------------------
> >  login/utmpname.c                              |  57 +-
> >  login/utmpxname.c                             |  25 -
> >  malloc/set-freeres.c                          |   6 -
> >  manual/users.texi                             | 446 ++-------------
> >  sysdeps/generic/paths.h                       |   6 +-
> >  sysdeps/gnu/Makefile                          |  13 -
> >  sysdeps/gnu/getutmp.c                         |  34 --
> >  sysdeps/gnu/getutmpx.c                        |   1 -
> >  sysdeps/gnu/updwtmp.c                         |  30 --
> >  sysdeps/gnu/utmp_file.c                       |  30 --
> >  sysdeps/mach/hurd/getlogin.c                  |  35 --
> >  sysdeps/unix/getlogin.c                       |  81 ---
> >  sysdeps/unix/getlogin_r.c                     | 103 ----
> >  sysdeps/unix/sysv/linux/getlogin.c            |  39 --
> >  sysdeps/unix/sysv/linux/getlogin_r.c          |  34 +-
> >  sysdeps/unix/sysv/linux/paths.h               |   4 +-
> >  sysdeps/unix/sysv/linux/s390/s390-32/Makefile |   5 -
> >  .../unix/sysv/linux/s390/s390-32/getutent.c   |  19 +-
> >  .../unix/sysv/linux/s390/s390-32/getutent_r.c |  11 +-
> >  .../unix/sysv/linux/s390/s390-32/getutid.c    |   4 +-
> >  .../unix/sysv/linux/s390/s390-32/getutid_r.c  |   2 +-
> >  .../unix/sysv/linux/s390/s390-32/getutline.c  |   4 +-
> >  .../sysv/linux/s390/s390-32/getutline_r.c     |   2 +-
> >  .../unix/sysv/linux/s390/s390-32/getutmp.c    |  20 +-
> >  .../unix/sysv/linux/s390/s390-32/getutxent.c  |  29 -
> >  .../unix/sysv/linux/s390/s390-32/getutxid.c   |  29 -
> >  .../unix/sysv/linux/s390/s390-32/getutxline.c |  29 -
> >  sysdeps/unix/sysv/linux/s390/s390-32/login.c  |   1 +
> >  .../unix/sysv/linux/s390/s390-32/login32.c    |  37 --
> >  .../unix/sysv/linux/s390/s390-32/pututxline.c |  29 -
> >  .../unix/sysv/linux/s390/s390-32/updwtmp.c    |   6 +-
> >  .../unix/sysv/linux/s390/s390-32/updwtmpx.c   |  29 -
> >  .../sysv/linux/s390/s390-32/utmp-convert.h    |  85 ---
> >  sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c | 183 -------
> >  sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h |  51 --
> >  .../sysv/linux/s390/s390-32/utmpx-convert.h   |  84 ---
> >  .../unix/sysv/linux/s390/s390-32/utmpx32.c    | 138 -----
> >  .../unix/sysv/linux/s390/s390-32/utmpx32.h    |  59 --
> >  sysdeps/unix/sysv/linux/utmp_file.c           |  36 --
> >  72 files changed, 185 insertions(+), 3800 deletions(-)
> >  delete mode 100644 login/endutxent.c
> >  delete mode 100644 login/getutmpx.c
> >  delete mode 100644 login/getutxent.c
> >  delete mode 100644 login/getutxid.c
> >  delete mode 100644 login/getutxline.c
> >  delete mode 100644 login/programs/utmpdump.c
> >  delete mode 100644 login/pututxline.c
> >  delete mode 100644 login/setutxent.c
> >  delete mode 100644 login/tst-pututxline-cache.c
> >  delete mode 100644 login/tst-pututxline-lockfail.c
> >  delete mode 100644 login/tst-updwtmpx.c
> >  delete mode 100644 login/tst-utmp.c
> >  delete mode 100644 login/tst-utmpx.c
> >  delete mode 100644 login/updwtmpx.c
> >  delete mode 100644 login/utmp-private.h
> >  delete mode 100644 login/utmp_file.c
> >  delete mode 100644 login/utmpxname.c
> >  delete mode 100644 sysdeps/gnu/getutmp.c
> >  delete mode 100644 sysdeps/gnu/getutmpx.c
> >  delete mode 100644 sysdeps/gnu/updwtmp.c
> >  delete mode 100644 sysdeps/gnu/utmp_file.c
> >  delete mode 100644 sysdeps/mach/hurd/getlogin.c
> >  delete mode 100644 sysdeps/unix/getlogin.c
> >  delete mode 100644 sysdeps/unix/getlogin_r.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/getlogin.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/login32.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
> >  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
> >  delete mode 100644 sysdeps/unix/sysv/linux/utmp_file.c
> >
> > --
> > 2.43.0
> >
>
>
> --
> Thorsten Kukuk, Distinguished Engineer, Senior Architect, Future Technologies
> SUSE Software Solutions Germany GmbH, Frankenstraße 146, 90461
> Nuernberg, Germany
> Managing Director: Ivo Totev, Andrew McDonald, Werner Knoblich (HRB
> 36809, AG Nürnberg)



-- 
Thorsten Kukuk, Distinguished Engineer, Senior Architect, Future Technologies
SUSE Software Solutions Germany GmbH, Frankenstraße 146, 90461
Nuernberg, Germany
Managing Director: Ivo Totev, Andrew McDonald, Werner Knoblich (HRB
36809, AG Nürnberg)


More information about the Libc-alpha mailing list