diff -rNaud polkit-0.105-old/src/programs/pkexec.c polkit-0.105/src/programs/pkexec.c
--- polkit-0.105-old/src/programs/pkexec.c	2012-04-24 18:05:34.000000000 +0200
+++ polkit-0.105/src/programs/pkexec.c	2016-03-04 14:35:05.369004064 +0100
@@ -76,6 +76,7 @@
               "       --help |\n"
               "       --disable-internal-agent |\n"
               "       [--user username] PROGRAM [ARGUMENTS...]\n"
+              "       [--keep-user-env] PROGRAM [ARGUMENTS...]\n"
               "\n"
               "See the pkexec manual page for more details.\n");
 }
@@ -391,6 +392,7 @@
   gboolean opt_show_help;
   gboolean opt_show_version;
   gboolean opt_disable_internal_agent;
+  gboolean opt_keep_user_env;
   PolkitAuthority *authority;
   PolkitAuthorizationResult *result;
   PolkitSubject *subject;
@@ -417,6 +419,8 @@
     "LC_ALL",
     "TERM",
     "COLORTERM",
+    /* option to keep $USER env Jean-Philippe Guillemin <h1p8r10n@gmail.com> */
+    "USER",
 
     /* By default we don't allow running X11 apps, as it does not work in the
      * general case. See
@@ -478,6 +482,7 @@
   opt_show_help = FALSE;
   opt_show_version = FALSE;
   opt_disable_internal_agent = FALSE;
+  opt_keep_user_env = FALSE;
   for (n = 1; n < (guint) argc; n++)
     {
       if (strcmp (argv[n], "--help") == 0)
@@ -503,6 +508,11 @@
         {
           opt_disable_internal_agent = TRUE;
         }
+        /* option to keep $USER env Jean-Philippe Guillemin <h1p8r10n@gmail.com> */
+      else if (strcmp (argv[n], "--keep-user-env") == 0)
+        {
+          opt_keep_user_env = TRUE;
+        }
       else
         {
           break;
@@ -600,12 +610,16 @@
   /* Nuke the environment to get a well-known and sanitized environment to avoid attacks
    * via e.g. the DBUS_SYSTEM_BUS_ADDRESS environment variable and similar.
    */
-  if (clearenv () != 0)
-    {
-      g_printerr ("Error clearing environment: %s\n", g_strerror (errno));
-      goto out;
-    }
-
+   
+  /* option to keep $USER env Jean-Philippe Guillemin <h1p8r10n@gmail.com> */
+  if (opt_keep_user_env == FALSE)
+  {
+	  if (clearenv () != 0)
+		{
+		  g_printerr ("Error clearing environment: %s\n", g_strerror (errno));
+		  goto out;
+		}
+  }
   /* Initialize the GLib type system - this is needed to interact with the
    * PolicyKit daemon
    */
@@ -783,13 +797,19 @@
   else
     s = g_strdup_printf ("/usr/sbin:/usr/bin:/sbin:/bin:%s/bin", pw->pw_dir);
   g_ptr_array_add (saved_env, s);
-  g_ptr_array_add (saved_env, g_strdup ("LOGNAME"));
-  g_ptr_array_add (saved_env, g_strdup (pw->pw_name));
-  g_ptr_array_add (saved_env, g_strdup ("USER"));
-  g_ptr_array_add (saved_env, g_strdup (pw->pw_name));
+  
+  /* option to keep $USER env Jean-Philippe Guillemin <h1p8r10n@gmail.com> */
+  if (opt_keep_user_env == FALSE)
+  {
+    g_ptr_array_add (saved_env, g_strdup ("USER"));
+    g_ptr_array_add (saved_env, g_strdup (pw->pw_name));
+
+  }
   g_ptr_array_add (saved_env, g_strdup ("HOME"));
   g_ptr_array_add (saved_env, g_strdup (pw->pw_dir));
-
+  g_ptr_array_add (saved_env, g_strdup ("LOGNAME"));
+  g_ptr_array_add (saved_env, g_strdup (pw->pw_name));
+  
   s = g_strdup_printf ("%d", getuid ());
   g_ptr_array_add (saved_env, g_strdup ("PKEXEC_UID"));
   g_ptr_array_add (saved_env, s);
