[RFC PATCH] gnu: linux-pam: Change path to unix_chkpwd helper.

  • Done
  • quality assurance status badge
Details
4 participants
  • Andrew Tropin
  • Leo Famulari
  • Ludovic Courtès
  • wolf
Owner
unassigned
Submitted by
Andrew Tropin
Severity
normal
A
A
Andrew Tropin wrote on 13 Jan 2022 19:41
(address . guix-patches@gnu.org)
87tudu38yz.fsf@trop.in
* gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file
* gnu/packages/linux.scm (linux-pam): Add patch.
* gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid
binaries.
---
The quote from unix_chkpwd.c:
Toggle quote (5 lines)
> * This program is designed to run setuid(root) or with sufficient
> * privilege to read all of the unix password databases. It is designed
> * to provide a mechanism for the current user (defined by this
> * process's uid) to verify their own password.

Without suid bit it will fail in various use cases: for example utilities like
xlock or swaylock compiled with pam support won't be able to unlock the
screen. To fix it I added unix_chkpwd binary to list of Guix System's setuid
programs and added a patch, which hardcodes /run/setuid-programs/unix_chkpwd
path in pam_unix module source code of linux-pam package. However, I'm not
sure if it's a proper solution, please share your thoughts and conserns.

gnu/packages/linux.scm | 3 +-
.../patches/change-path-to-unix_chkpwd.patch | 54 +++++++++++++++++++
gnu/system/pam.scm | 8 ++-
3 files changed, 62 insertions(+), 3 deletions(-)
create mode 100644 gnu/packages/patches/change-path-to-unix_chkpwd.patch

Toggle diff (95 lines)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7b12cb8ec1..ee0df3c625 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1590,7 +1590,8 @@ (define-public linux-pam
(sha256
(base32
"1z4jayf69qyyxln1gl6ch4qxfd66ib1g42garnrv2d8i1drl0790"))
- (patches (search-patches "linux-pam-no-setfsuid.patch"))))
+ (patches (search-patches "change-path-to-unix_chkpwd.patch"
+ "linux-pam-no-setfsuid.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/patches/change-path-to-unix_chkpwd.patch b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
new file mode 100644
index 0000000000..90a8b639f6
--- /dev/null
+++ b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
@@ -0,0 +1,54 @@
+From f314ab148b488e23a2e48e7222964e46d0d03447 Mon Sep 17 00:00:00 2001
+From: Andrew Tropin <andrew@trop.in>
+Date: Wed, 12 Jan 2022 17:17:42 +0300
+Subject: [PATCH] Change path to unix_chkpwd.
+
+---
+ modules/pam_unix/pam_unix_acct.c | 4 ++--
+ modules/pam_unix/support.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c
+index 8f5ed3e0..2fdec6c7 100644
+--- a/modules/pam_unix/pam_unix_acct.c
++++ b/modules/pam_unix/pam_unix_acct.c
+@@ -122,12 +122,12 @@ int _unix_run_verify_binary(pam_handle_t *pamh, unsigned long long ctrl,
+ }
+
+ /* exec binary helper */
+- args[0] = CHKPWD_HELPER;
++ args[0] = "/run/setuid-programs/unix_chkpwd";
+ args[1] = user;
+ args[2] = "chkexpiry";
+
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+- execve(CHKPWD_HELPER, (char *const *) args, envp);
++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
+ DIAG_POP_IGNORE_CAST_QUAL;
+
+ pam_syslog(pamh, LOG_ERR, "helper binary execve failed: %m");
+diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
+index 27ca7127..d02f394e 100644
+--- a/modules/pam_unix/support.c
++++ b/modules/pam_unix/support.c
+@@ -523,7 +523,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+ }
+
+ /* exec binary helper */
+- args[0] = CHKPWD_HELPER;
++ args[0] = "/run/setuid-programs/unix_chkpwd";
+ args[1] = user;
+ if (off(UNIX__NONULL, ctrl)) { /* this means we've succeeded */
+ args[2]="nullok";
+@@ -532,7 +532,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+ }
+
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+- execve(CHKPWD_HELPER, (char *const *) args, envp);
++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
+ DIAG_POP_IGNORE_CAST_QUAL;
+
+ /* should not get here: exit with error */
+--
+2.34.0
+
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index 2574e019f1..48cd2ebf2c 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -375,8 +375,12 @@ (define (extend-configuration initial extensions)
(define pam-root-service-type
(service-type (name 'pam)
- (extensions (list (service-extension etc-service-type
- /etc-entry)))
+ (extensions
+ (list (service-extension etc-service-type /etc-entry)
+ (service-extension
+ setuid-program-service-type
+ (list (file-like->setuid-program
+ (file-append linux-pam "/sbin/unix_chkpwd"))))))
;; Arguments include <pam-service> as well as procedures.
(compose concatenate)
--
2.34.0
-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmHtUNQPHGFuZHJld0B0
cm9wLmluAAoJECII0glYwd6w44gP/Rsgp6txUKnq2IE4hGGjXSYKf0aS8yPr5013
2AT5SSw3cjqadR4Df0+YyNuRr0EPATrqmcYKU6xyggoiRDMR0Ydw21euEmgloziQ
NFB5gdiOFqCYexW2TuFFKCAWnAy3FDbhjrTl5ziU2BeNRoK1rNj+ZbQG8uek+g3g
upXm1++feBAiE/kFFWE4EFaju4HWU7u0nrYtyotqsK/+TYmY5dJIphOUMUlyqHbQ
N2zW/+Utj7tCKtmkStHz2xYF0PrXicp2femV099ViKUV1/3Kjbeo0ejT7701xlZV
EwuLAGrmtLCtZjfy0OZRzqvR15NUl1DwP+Cj12CEWB1IO7KXWLlOKfz313MH53aY
TMil58GupD8t58zCq3o+e48//felGv2NwAgP5NZAToGg4Ww8YbHoSY8Ly1QCfAZ7
qc1iRi+cKtVrXfdDS2hgxAmK0Nd+tnjqoUp1v6pvcwygba9eO2/NLBDriYwoCpwZ
AnauiBOqvUzarOB/lNEVseW9RDbEUuem2sgk+IhdCH7gbndlgJtDBOQnks0+gJqJ
DmQT1Ky/+3+WeEVIr/n8CUJ50HEafQ9sgMmKj73kmMjq6PXnlpd1NJZ1HlFZU7DJ
xuAGu2+SmOqUtcprqFIzKUsd7OMC7jU3OYt6zfys74LOoNmI/xD5QezjGH15jcnO
SyqxgLVA
=SQKf
-----END PGP SIGNATURE-----

A
A
Andrew Tropin wrote on 23 Jan 2022 15:08
(address . 53468@debbugs.gnu.org)
87sftetuhg.fsf@trop.in
Attaching a second version of the patch, added missing import and
lambda.
From ad876e5b134072601fa97d82a39b320a269f34a5 Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Thu, 13 Jan 2022 21:41:58 +0300
Subject: [RFC PATCH v2] gnu: linux-pam: Change path to unix_chkpwd helper.

* gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file
* gnu/packages/linux.scm (linux-pam): Add patch.
* gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid
binaries.
---
gnu/packages/linux.scm | 3 +-
.../patches/change-path-to-unix_chkpwd.patch | 54 +++++++++++++++++++
gnu/system/pam.scm | 10 +++-
3 files changed, 64 insertions(+), 3 deletions(-)
create mode 100644 gnu/packages/patches/change-path-to-unix_chkpwd.patch

Toggle diff (104 lines)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7b12cb8ec1..ee0df3c625 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1590,7 +1590,8 @@ (define-public linux-pam
(sha256
(base32
"1z4jayf69qyyxln1gl6ch4qxfd66ib1g42garnrv2d8i1drl0790"))
- (patches (search-patches "linux-pam-no-setfsuid.patch"))))
+ (patches (search-patches "change-path-to-unix_chkpwd.patch"
+ "linux-pam-no-setfsuid.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/patches/change-path-to-unix_chkpwd.patch b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
new file mode 100644
index 0000000000..90a8b639f6
--- /dev/null
+++ b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
@@ -0,0 +1,54 @@
+From f314ab148b488e23a2e48e7222964e46d0d03447 Mon Sep 17 00:00:00 2001
+From: Andrew Tropin <andrew@trop.in>
+Date: Wed, 12 Jan 2022 17:17:42 +0300
+Subject: [PATCH] Change path to unix_chkpwd.
+
+---
+ modules/pam_unix/pam_unix_acct.c | 4 ++--
+ modules/pam_unix/support.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c
+index 8f5ed3e0..2fdec6c7 100644
+--- a/modules/pam_unix/pam_unix_acct.c
++++ b/modules/pam_unix/pam_unix_acct.c
+@@ -122,12 +122,12 @@ int _unix_run_verify_binary(pam_handle_t *pamh, unsigned long long ctrl,
+ }
+
+ /* exec binary helper */
+- args[0] = CHKPWD_HELPER;
++ args[0] = "/run/setuid-programs/unix_chkpwd";
+ args[1] = user;
+ args[2] = "chkexpiry";
+
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+- execve(CHKPWD_HELPER, (char *const *) args, envp);
++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
+ DIAG_POP_IGNORE_CAST_QUAL;
+
+ pam_syslog(pamh, LOG_ERR, "helper binary execve failed: %m");
+diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
+index 27ca7127..d02f394e 100644
+--- a/modules/pam_unix/support.c
++++ b/modules/pam_unix/support.c
+@@ -523,7 +523,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+ }
+
+ /* exec binary helper */
+- args[0] = CHKPWD_HELPER;
++ args[0] = "/run/setuid-programs/unix_chkpwd";
+ args[1] = user;
+ if (off(UNIX__NONULL, ctrl)) { /* this means we've succeeded */
+ args[2]="nullok";
+@@ -532,7 +532,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
+ }
+
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+- execve(CHKPWD_HELPER, (char *const *) args, envp);
++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
+ DIAG_POP_IGNORE_CAST_QUAL;
+
+ /* should not get here: exit with error */
+--
+2.34.0
+
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index 2574e019f1..b635681642 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -21,6 +21,7 @@ (define-module (gnu system pam)
#:use-module (guix derivations)
#:use-module (guix gexp)
#:use-module (gnu services)
+ #:use-module (gnu system setuid)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -375,8 +376,13 @@ (define (extend-configuration initial extensions)
(define pam-root-service-type
(service-type (name 'pam)
- (extensions (list (service-extension etc-service-type
- /etc-entry)))
+ (extensions
+ (list (service-extension
+ setuid-program-service-type
+ (lambda (_)
+ (list (file-like->setuid-program
+ (file-append linux-pam "/sbin/unix_chkpwd")))))
+ (service-extension etc-service-type /etc-entry)))
;; Arguments include <pam-service> as well as procedures.
(compose concatenate)
--
2.34.0
Reconfigured my system with the patch above.

I tested it with the swaylock built with pam support:

Toggle snippet (24 lines)
(define-public swaylock
(package
(name "swaylock")
(version "1.6")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/swaywm/swaylock")
(commit "5150d3869cd801cb2badb3c645fa41c01bbfbbbf")))
(file-name (git-file-name name version))
(sha256
(base32 "16n389w5hx8f8dqnhzjgimxmaw648cnnmifazx6zwx2v5vhxa38r"))))
(build-system meson-build-system)
(inputs (list cairo gdk-pixbuf libxkbcommon
linux-pam
wayland))
(native-inputs (list pango pkg-config scdoc wayland-protocols))
(home-page "https://github.com/swaywm/sway")
(synopsis "Screen locking utility for Wayland compositors")
(description "Swaylock is a screen locking utility for Wayland compositors.")
(license license:expat)))

and following system service:
Toggle snippet (7 lines)
(simple-service
'sway-add-swaylock-pam
pam-root-service-type
(list
(unix-pam-service "swaylock")))

I'll make a patch for swaylock separately, when this ticket will be
resolved.

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmHtYWwPHGFuZHJld0B0
cm9wLmluAAoJECII0glYwd6wFuQP/iHU8//zTDyOGY9XOy6vMhsYfonZD3R4ZzIR
jSu2GM5LFlduzXMarNzMufYjyPyT8ht1xp4HVR6fX8QYtS4x9/I8nmqQjZhN1vFo
HTnyRRu8nDjRUKqjFIsJmT3VnMsck+zQLqCuk98yfMNFjAuYsVuuN9DKuD07TkQ4
W/9ynqb5FuErTaLtfWDWdIygnBcjUR61FpmqgsFKKlpxSwZlPP72fEBW7tGx3pWR
BmzMolDYTF4fCkforyMYtXSy2YS0INooW/4CJCGXCHi4CevRepz0pFmR+Ws1UBAS
+lagCjDynM367THQ6zmfoP5zWwBAe0RTtDiPE3AqwenFiL8FmEum2fnMb4JwGEHb
PsjzRqvtaBZuebAPcvdq1rjHH+Ergu+hVZ4WlwOScfLUwhx0wvdYI1g2VYd1R4XC
faq8oo8cRb0FRiKMNb7W56pyZcD1T0+VzAc6eEx7zF76aAQOH+aaf19B4phGTnGS
aBDaxMGP47BmNA96rGEFcgzN5QBmYTZQnwMF+jBWyeF15xQ23t57QDjD3e6jKGD/
xiP4HGY3dZJPLPuRe5PIKmF0gOv18jg62QqNkoFmW+u6BId/F4huEKC6KB0VO6BP
FWbImLJcUOGcJbMq1OLnOC4cepASVtxySNFYikXkpYZI4OXgecynuZ9nwFEBzYE5
XrNr+TzX
=A/5x
-----END PGP SIGNATURE-----

A
A
Andrew Tropin wrote on 4 Feb 2022 12:07
(address . 53468@debbugs.gnu.org)
877daayjob.fsf@trop.in
Yesterday I also discovered this thread on NixOS bug tracker:

They apply the same technique and remove dirtier workaround they had

Also, they patch the makefile template instead of source code, which
maybe a little cleaner solution than the one I proposed above.

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmH9COQPHGFuZHJld0B0
cm9wLmluAAoJECII0glYwd6wS1YP/3+g5N5uhzr5eKQ4c8Uc11vFYZJOZHvSxFKz
oAwoxwIqfHPYBfhr9Mi61hrhi5+gxDJzt9BBfxtGdVpfrOYREWwD3l/e7HrkdsMO
L1E+74EAkZ2lqae+tfrwh3+V0n4z58YR8Bk/efNgMe4ZH1NxcbWBUHVbnxNMfokC
Y0OgHpOH7bGvCJyNxF0vZSEbrox16HCQg8P53x9yHXZHTD2SaK2TgcvnVm3lnt6c
NtaGUEB3BsE0Njfiwwlzwg25uIu8bIBBWiNvb6Gjb4XmnodhXSd21/SJhmOSjOhb
QVh+RCbqmMHI7Jnj0DEToBBwqhLVle4uYwVZEeZaZ++6ufTO9odQIQRywgLmxCzD
iJ28QfOI09QP/6W8CS8rmWy3NJIAkYMHey+HkfKV+lQFzT1FOP8Mb8TTdYoMx/5F
nwWDp7EQ+uUQOqaxoadJcg9/4fXua7aVZLoX2WJlqt4AAyWdlZefswZp+h+SIMO4
IV+5q03Blfl6cc8y347BwKYDdOylemSl1T/yCAOBeQSL2ompP9yugnbsHoXIICdU
bwbvU1IoxfaCc+iQ5pZ0Z3zz6Jjbf9LlxUd50tZMdlpkbyGWrePHhVjI/8DIiAQo
/s736nSj3B7mCSGiHyTC4od61bRVsd2TE9A4oqdtPb2x8RXmq2pOabYT1ArVdxTy
uRAf31p0
=QXVK
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 4 Feb 2022 23:10
Re: bug#53468: [RFC PATCH] gnu: linux-pam: Change path to unix_chkpwd helper.
(name . Andrew Tropin)(address . andrew@trop.in)(address . 53468@debbugs.gnu.org)
877daamgf2.fsf_-_@gnu.org
Hi!

Andrew Tropin <andrew@trop.in> skribis:

Toggle quote (10 lines)
> From ad876e5b134072601fa97d82a39b320a269f34a5 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin <andrew@trop.in>
> Date: Thu, 13 Jan 2022 21:41:58 +0300
> Subject: [RFC PATCH v2] gnu: linux-pam: Change path to unix_chkpwd helper.
>
> * gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file
> * gnu/packages/linux.scm (linux-pam): Add patch.
> * gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid
> binaries.

[...]

Toggle quote (5 lines)
> + DIAG_PUSH_IGNORE_CAST_QUAL;
> +- execve(CHKPWD_HELPER, (char *const *) args, envp);
> ++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
> + DIAG_POP_IGNORE_CAST_QUAL;

Looks reasonable to me. However, could you change the CHKPWD_HELPER
macro definition in the Makefile template, as you suggested, instead of
patching the file?

Thanks!

Ludo’.
A
A
Andrew Tropin wrote on 6 Feb 2022 06:16
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 53468@debbugs.gnu.org)
878ruo60c9.fsf@trop.in
On 2022-02-04 23:10, Ludovic Courtès wrote:

Toggle quote (25 lines)
> Hi!
>
> Andrew Tropin <andrew@trop.in> skribis:
>
>> From ad876e5b134072601fa97d82a39b320a269f34a5 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin <andrew@trop.in>
>> Date: Thu, 13 Jan 2022 21:41:58 +0300
>> Subject: [RFC PATCH v2] gnu: linux-pam: Change path to unix_chkpwd helper.
>>
>> * gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file
>> * gnu/packages/linux.scm (linux-pam): Add patch.
>> * gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid
>> binaries.
>
> [...]
>
>> + DIAG_PUSH_IGNORE_CAST_QUAL;
>> +- execve(CHKPWD_HELPER, (char *const *) args, envp);
>> ++ execve("/run/setuid-programs/unix_chkpwd", (char *const *) args, envp);
>> + DIAG_POP_IGNORE_CAST_QUAL;
>
> Looks reasonable to me. However, could you change the CHKPWD_HELPER
> macro definition in the Makefile template, as you suggested, instead of
> patching the file?

Sure, done in v3.
From e96d3f6d82b134829fcb31777e81928c73847dcc Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Sun, 6 Feb 2022 08:13:49 +0300
Subject: [PATCH v3] gnu: linux-pam: Change path to unix_chkpwd helper.

* gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file.
* gnu/packages/linux.scm (linux-pam): Add patch.
* gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid.
---
gnu/packages/linux.scm | 3 ++-
.../patches/change-path-to-unix_chkpwd.patch | 13 +++++++++++++
gnu/system/pam.scm | 10 ++++++++--
3 files changed, 23 insertions(+), 3 deletions(-)
create mode 100644 gnu/packages/patches/change-path-to-unix_chkpwd.patch

Toggle diff (63 lines)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 2e2d01c656..bc2927d0b4 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1625,7 +1625,8 @@ (define-public linux-pam
(sha256
(base32
"1z4jayf69qyyxln1gl6ch4qxfd66ib1g42garnrv2d8i1drl0790"))
- (patches (search-patches "linux-pam-no-setfsuid.patch"))))
+ (patches (search-patches "change-path-to-unix_chkpwd.patch"
+ "linux-pam-no-setfsuid.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/patches/change-path-to-unix_chkpwd.patch b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
new file mode 100644
index 0000000000..e5c6d2649c
--- /dev/null
+++ b/gnu/packages/patches/change-path-to-unix_chkpwd.patch
@@ -0,0 +1,13 @@
+From: Andrew Tropin <andrew@trop.in>
+Date: Sat, 5 Feb 2022 21:06:42 +0300
+Subject: [PATCH] Change path to unix_chkpwd.
+
+unix_chkpwd is designed to have a suid bit, but it's not possible to set it
+for files in /gnu/store, and this patch tells unix_pam.so to lookup up for
+unix_chkpwd in directory generated by setuid-program system service.
+
+--- a/modules/pam_unix/Makefile.in
++++ b/modules/pam_unix/Makefile.in
+@@ -651,1 +651,1 @@
+- -DCHKPWD_HELPER=\"$(sbindir)/unix_chkpwd\" \
++ -DCHKPWD_HELPER=\"/run/setuid-programs/unix_chkpwd\" \
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index 2574e019f1..b635681642 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -21,6 +21,7 @@ (define-module (gnu system pam)
#:use-module (guix derivations)
#:use-module (guix gexp)
#:use-module (gnu services)
+ #:use-module (gnu system setuid)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -375,8 +376,13 @@ (define (extend-configuration initial extensions)
(define pam-root-service-type
(service-type (name 'pam)
- (extensions (list (service-extension etc-service-type
- /etc-entry)))
+ (extensions
+ (list (service-extension
+ setuid-program-service-type
+ (lambda (_)
+ (list (file-like->setuid-program
+ (file-append linux-pam "/sbin/unix_chkpwd")))))
+ (service-extension etc-service-type /etc-entry)))
;; Arguments include <pam-service> as well as procedures.
(compose concatenate)
--
2.34.0
--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmH/WccPHGFuZHJld0B0
cm9wLmluAAoJECII0glYwd6wRmwQAIfjH18DlBQfHarDxPLXNBBAnRBB6D/HV2v0
0DZ7pZi6kI6EwHSCm3fIXooEzFdBVQWWw77nLu6VSgdY00lFYIr31xUtqX/vfI/b
YnpDPZ3MYBeW2Y1GOo0Zjqdco1J3u7oJdBlpt7U92Zh3KV6jBwQg7i5u8407PMYj
R810YoKU7mO8Cgf8oSSkK4JuN+3btyrXQ947cOSYPhY0gqAf9CPi3hKPTnjbUi83
tGH4UsI8E+bJpZUfhutbsK++faviByjFphz1XgHrzXttBmNp591LvUghVIIt5du4
tyVuWLRA99dQu+8PX1DJMGqFOG/fS2jJrpj5UiYKGNVleAnjV8K7DkjPadMxh4II
cHBDAaFnN7kR+SoJXct7c4wbScibzRqclTCuRe2EXMy3MNOxSSoXQHtnuhbyqUkf
spJSraVEdUF6VfxmeR9SeY4gJpKcd2WsJz3qe0NXE6lFmuZoxpzRLAhl2TcmVZaq
7/iCr+cMSc5Am7mgH6Q0q/PSEkvbfWuryKpCxH0+Tc/yJBibAuyhc/ClM6aWYVdJ
6DqNSMLKpywyeCAFF85DLkcdtEYhGjMXGt3J4yCmi0eDm4HdXj64/ZlTX7X8z5D0
a6wpc3JfT3bHJ81VbbuIEpekDUUZsaJIaLYvymZW+cLKeItGp+KLta29OovPoykI
ewmScXMb
=O9fk
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 10 Feb 2022 23:42
(name . Andrew Tropin)(address . andrew@trop.in)(address . 53468-done@debbugs.gnu.org)
8735kq2vje.fsf_-_@gnu.org
Hi,

Andrew Tropin <andrew@trop.in> skribis:

Toggle quote (9 lines)
> From e96d3f6d82b134829fcb31777e81928c73847dcc Mon Sep 17 00:00:00 2001
> From: Andrew Tropin <andrew@trop.in>
> Date: Sun, 6 Feb 2022 08:13:49 +0300
> Subject: [PATCH v3] gnu: linux-pam: Change path to unix_chkpwd helper.
>
> * gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file.
> * gnu/packages/linux.scm (linux-pam): Add patch.
> * gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid.

LGTM, minor the patch file name as reported by ‘guix lint’ and missing
‘gnu/local.mk’.

However, it looks like my brain wasn’t fully operational when I
previously replied, because:

Toggle snippet (5 lines)
$ guix refresh -l linux-pam
Building the following 2418 packages would ensure 6038 dependent
packages are rebuilt: […]

So I went ahead, fixed up the issues above, and pushed to
‘core-updates’.

Thanks!

Ludo’.
Closed
A
A
Andrew Tropin wrote on 26 Feb 2022 08:11
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 53468-done@debbugs.gnu.org)
87o82udruv.fsf@trop.in
On 2022-02-10 23:42, Ludovic Courtès wrote:

Toggle quote (28 lines)
> Hi,
>
> Andrew Tropin <andrew@trop.in> skribis:
>
>> From e96d3f6d82b134829fcb31777e81928c73847dcc Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin <andrew@trop.in>
>> Date: Sun, 6 Feb 2022 08:13:49 +0300
>> Subject: [PATCH v3] gnu: linux-pam: Change path to unix_chkpwd helper.
>>
>> * gnu/packages/patches/change-path-to-unix_chkpwd.patch: New file.
>> * gnu/packages/linux.scm (linux-pam): Add patch.
>> * gnu/system/pam.scm (pam-root-service-type): Add unix_chkpwd to setuid.
>
> LGTM, minor the patch file name as reported by ‘guix lint’ and missing
> ‘gnu/local.mk’.
>
> However, it looks like my brain wasn’t fully operational when I
> previously replied, because:
>
> --8<---------------cut here---------------start------------->8---
> $ guix refresh -l linux-pam
> Building the following 2418 packages would ensure 6038 dependent
> packages are rebuilt: […]
> --8<---------------cut here---------------end--------------->8---
>
> So I went ahead, fixed up the issues above, and pushed to
> ‘core-updates’.

Thank you very much!)

When is the next core-update to master merge scheduled?

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmIZ0rgPHGFuZHJld0B0
cm9wLmluAAoJECII0glYwd6wg0MP/Rx+powCeCNaHQ0XnakliIkI9NHztDx8qC+N
eEoTO6uTfreZWs0EqKoTawGKAlNQk4GQUfO9MmoUFbzScT5t3bMYln7geYJbmD+k
bwkmxypvPb9pOLeLsbrJ7MROqljiSU4tldH9s9QuWk/BKNWJvdDpPwFz7aX5I+ec
iPxiUiHmz71cJCTrKJQNVuPgi+GS6qKIAkvJs1/M6Awk2nJzNMwJgTCP8GCsKvRr
kd6egCsHVhgfrqkcBqnKQofGJ3h+90ax34oPm/Imhg7hYkxznXivWZBQgIPzBcVd
ZkDNC0EGIneQGpJ25Qxhv9Olgb+NeMf2x+wheQJJ4aM1Vr5MJgxUgDycU9rJiUEa
nMC/fhN27BiqwsFJEZEXi4kicd0nvhJ6jMLYH8axuEzFUwLtistzccNNROlHI4zp
OyW/Byanyc8J6N9694tdbwVb3HWAUyLPPb59pwF7m9wVT+9f410ySBdOBrFzI8K/
YY22Rb3+G0kOOzYicqWHC9csLrAQ6no5srjxF04tfp/IgbrFBoASDgccRtHbxSn6
5q5EPUanLFg4+Yhp9oXBKTizuYgGO17db4oqFF0Szpkq+ySBe/UolbfsQ7oc3nm/
ANEhclKPWRi9RmGsYjasbSj/a/SDnqTE262JG3aZriNz+nGtcL4QRx/KQCHg2ZSe
dAZhzs/P
=Jx+Y
-----END PGP SIGNATURE-----

Closed
L
L
Ludovic Courtès wrote on 27 Feb 2022 23:03
(name . Andrew Tropin)(address . andrew@trop.in)(address . 53468-done@debbugs.gnu.org)
87bkyst1at.fsf@gnu.org
Hi,

Andrew Tropin <andrew@trop.in> skribis:

Toggle quote (2 lines)
> When is the next core-update to master merge scheduled?

It’s not scheduled, but it’s likely several months from now… maybe less
if motivated people help drive the effort. :-)

Ludo’.
Closed
W
Unarchive
(address . control@debbugs.gnu.org)
ZAKG5Uc8MCprXC8H@ws
unarchive 53468

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmQChuUACgkQL7/ufbZ/
wanglBAAqOKhJa7VRQdI+6wMdONasqfNBjEOxYmJLjocQD3zoB6Cri+loy0EdAPh
BeeuYt+5iD3dIz3TcWzNCf49q9of0sPB7mcUtWvl2EEWy5ZA9rvvhyupl7FQpMQJ
qqtxaSrRyOXpgla9ltSdOItMpJnYYEhtIV09pE7Eea97qJlVM1s6KprxP66ZqCii
GdlrQPUUetFZeQY4Sm4fs1P3ANcoZkJB1kepwEfYm0Dur8bLM8PlcQkVB+G1B2lq
Zhw14kgPWntAP3OjaJb8qww26V21jpQnK9CTfw970AGQs0LY8whuODjD0gqyDGgw
j+8G74IeEb5S8iWIgecERUXnhtFXVlOFcdMZYCrJvGNOrqDnYEe/74zbhwIE1bVb
1OeLGIDR6RdEmh8R1W0KOYngxglX8KmoxLwS5eUHfS05V2lmi/+inC5Y4WVP6gAU
TliWXy3CCZdMX5CIo33QOpUVYkiN3TLcLv5yHMow8KiRYFhxda18QLYFIs8Aj6gO
zwBg8AmS7No+M0c2Ncubi4MZWja6ETq0MEJdZh8EdlDe5y0Mo1/PbuNF0IsV4uVQ
yQMM1Ae5ylARwDURg/FrpFkOKc0Cut6/dryrmBLReq7IPhSsj8zFF32f8vSY8NG2
jOnEBs7aMAFjc2OSDxVJ3c5/Hjaje2O+Q4R5Xj+LUJvefGcLBvk=
=DLp9
-----END PGP SIGNATURE-----


W
Re: [RFC PATCH] gnu: linux-pam: Change path to unix_chkpwd helper.
(address . 53468@debbugs.gnu.org)
ZAKD5PIWBQ6TUpCD@ws
Hello,

I would like to ask when this could be available on master? It seems it was
added into core-updates more then a year ago. As far as I understand this is the
only blocker preventing me from using xscreensaver. Last update under the bug
is:

Toggle quote (2 lines)
> It’s not scheduled, but it’s likely several months from now…

So I would like to ask if there is any update on this. No pressure, just asking.

Thanks and have a nice day,

W.

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmQCg94ACgkQL7/ufbZ/
wakvCw//eckQXoHo9fG150iZRl+o/+iQj+vFO871eYlGaWtXwi7T8n9iJNgs1ypJ
abvM5iH/DLQzqKsAEDoC0V8Wwp4OqF0vIKJ59AcGRIOx2cGRtOdUWthmjJ/SNT8K
pemkkuj9iPeyWuB6h8g3WMhk3foRzVILq3DdNXEm6Qme+ik8pwcsLeuT2VepxTV6
8O+6gH8uudB1H0cy/snL5Szdw2/4rNLeeWkcbpEBFWSlxxJwxtsmUvTFaEIoWXLO
Xr5O3xlV0f9fzXu9IuDiDRmna9ZNVTLGg6584rekSkYr7seJkBXFcmGKROKvVd+P
rtX4ApeJV10AGGt+mZiSpPijF/IqIUhYnjHWmWedu1rZh3M0ZVZ1SobWXEyrtQYv
AbHVeCsUtR2N8yMUGvtPs3LcGh8CDKpbVFBO7Fq+5/WF+iOrUVP4WTjl3Pg6vO1U
KZ5cjqdZGLF9OxJyw46WkShB4XtvOeEd2wYdpqZKCKkHXgR4xAQSejtLKSjGqwLo
/gvkXaqiwdP8dbxs9m4SoCyVmUpXGo8gW0BOyFtVaLGvm1sRZmndDMcy60OebBw9
W/G5miGVkNPnStr0utjEnxJT98eMNKm1RCzZCkXRY7sNsENznCGF+52eRavtdOP0
qkb/JNZd9+lj1qs+/sONN47+8XcnyOoCcOXsRzRj9kbHneBzJTY=
=G6QJ
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 7 Mar 2023 18:57
Re: [bug#53468] [RFC PATCH] gnu: linux-pam: Change path to unix_chkpwd helper.
(name . wolf)(address . wolf@wolfsden.cz)(address . 53468@debbugs.gnu.org)
ZAd7Cc3wk1GsI4Eq@jasmine.lan
On Sat, Mar 04, 2023 at 12:33:56AM +0100, wolf wrote:
Toggle quote (2 lines)
> So I would like to ask if there is any update on this. No pressure, just asking.

The core-updates branch is now actively being prepared for the merge
into master. It's probably still at least one month away, if not several
months. Unfortunately we can't predict the timeframe.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmQHewkACgkQJkb6MLrK
fwg01xAA6GiTyxFz9WXN2KIjj/XdHTrkiFNHn5WAxBG+C/2iZS6Ae+QjHVDhSW6N
vJRkGO+JUCjGrO2XQr1M882bh8lkiTMYtg9kpp2jls70vewBMO7BjOFHkjHws0Q6
hdJl1h2Z8zi9IiFf2OF5KTkoPoCeXVOyXfBqUjlqwM+iNuDXdvseeTmCIaH5I0YZ
zXAnmQ4nSJ6RM8p6HBXas10hAa8JT17coe5pXuaOZEfdayvTu1HIpR3dD8ec/A9b
gBfmie0hJRuOwkRa4MjcQYjfXWOiNObLI93R8nMVxBxbQD8ver+DSZOmfYv3Eqpo
qCEYfZrMyUmEUoGo2/PDKPDp8pVnk/6ZboBA+nm5oAr7B8ir8Q6YNPSLpgJfbWKV
eDqEIJYDXvHti3l2YjczJhu0EbgortPG52aXdVrrUA6zlYMJX4nzwjtKkUChWn4V
za1ESJSAlvMN4JVC5JY1brKy0RN9ncOoDtWA5E2XSVL1JCoodkqnh1J12RTWgsfO
o1CEHb2mBG8wUUM6ztM/u1dfU9HQBET1Dl6ZXJTXENuqrasClmg0W8qWFBqNcU0M
AhPyVTxJq93ZEmSkGD3Gzw59ojYj/DIgFsMewgbOjxbJsgUA8IrMYaQaI4cJsSBV
E/PG0GpCmzl70CFrHFB6CbaBxZp1mArgFKW5j80AFMmFt950MOI=
=Ex7r
-----END PGP SIGNATURE-----


?