]> source.dussan.org Git - tigervnc.git/commitdiff
Support the "%u" username alias in PlainUsers 1671/head
authorCarlos Santos <casantos@redhat.com>
Tue, 3 Oct 2023 18:00:02 +0000 (15:00 -0300)
committerCarlos Santos <casantos@redhat.com>
Tue, 3 Oct 2023 18:00:02 +0000 (15:00 -0300)
This permits to enable PAM for the effective user of the Xvnc process by
adding this to ~/.vnc/config or /etc/tigervnc/vncserver-config-defaults:

   SecurityTypes=TLSPlain
   PlainUsers=%u

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2233204
Signed-off-by: Carlos Santos <casantos@redhat.com>
common/rfb/SSecurityPlain.cxx
unix/x0vncserver/x0vncserver.man
unix/xserver/hw/vnc/Xvnc.man

index 42f5009b2dd100561df0a25edcc7df5b2e9353ce..a100a7570b5d2b6923ebb38f4bc9b4c2877522c0 100644 (file)
@@ -28,6 +28,8 @@
 #include <rdr/InStream.h>
 #if !defined(WIN32) && !defined(__APPLE__)
 #include <rfb/UnixPasswordValidator.h>
+#include <unistd.h>
+#include <pwd.h>
 #endif
 #ifdef WIN32
 #include <rfb/WinPasswdValidator.h>
@@ -53,6 +55,13 @@ bool PasswordValidator::validUser(const char* username)
   for (size_t i = 0; i < users.size(); i++) {
     if (users[i] == "*")
       return true;
+#if !defined(WIN32) && !defined(__APPLE__)
+    if (users[i] == "%u") {
+      struct passwd *pw = getpwnam(username);
+      if (pw && pw->pw_uid == getuid())
+        return true;
+    }
+#endif
     if (users[i] == username)
       return true;
   }
index c36ae34e2f4b45573ba8d9c18cdb46f4e57c29de..122efa73a4bc277de8d9e3b6ea4ecc64b25be79e 100644 (file)
@@ -125,8 +125,9 @@ parameter instead.
 .B \-PlainUsers \fIuser-list\fP
 A comma separated list of user names that are allowed to authenticate via
 any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
-to allow any user to authenticate using this security type. Default is to
-deny all users.
+to allow any user to authenticate using this security type. Specify \fB%u\fP
+to allow the effective user of the server process. Default is to deny all
+users.
 .
 .TP
 .B \-pam_service \fIname\fP, \-PAMService \fIname\fP
index ea87deaf119d91c0ff14790f871b08e5ef42ea57..ff5dbfd540f2f5c1ff672bb07c609dc82d0120f3 100644 (file)
@@ -200,8 +200,9 @@ parameter instead.
 .B \-PlainUsers \fIuser-list\fP
 A comma separated list of user names that are allowed to authenticate via
 any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
-to allow any user to authenticate using this security type. Default is to
-deny all users.
+to allow any user to authenticate using this security type. Specify \fB%u\fP
+to allow the effective user of the server process. Default is to deny all
+users.
 .
 .TP
 .B \-pam_service \fIname\fP, \-PAMService \fIname\fP