Error - Perl execution failed Undefined subroutine &main::authentic called at /usr/share/webmin/authentic-theme/index.cgi line 12

Ubuntu 18.04.5 LTS (Bionic Beaver) (GNU/Linux 4.15.0-129-generic x86_64)
Perl version 5.26.1
Virtualmin version: 6.14.gpl
Webmin version: 1.970
root: /usr/share/webmin
Authentic theme version: 19.70

Originally installed webmin and virtualmin around 2016-ish? I don’t remember which method.
Webmin has been working fine for years without issue.

On Jan 6 I updated Webmin to Version 1.970 (6th January 2021)

After the update, attempting to log into Webmin/Virtualmin produces:

Error - Perl execution failed
Undefined subroutine &main::authentic called at /usr/share/webmin/authentic-theme/index.cgi line 12.

There is no Webmin or Virtualmin interface.

What I have tried:

I’m having the same issue after the latest update, Webmin has been deployed on Raspberry Pi 3 and has always worked after upgrades in the past.

Hi,

Could you please guys share content of /etc/webmin/config and /etc/webmin/miniserv.conf files?

Does it fail for authenticated or for unauthenticated user?

pi@raspberrypi:~ $ sudo cat /etc/webmin/config
passwd_cindex=2
real_os_type=Raspbian Linux
deftab=webmin
find_pid_command=ps auwwwx | grep NAME | grep -v grep | awk '{ print $2 }'
real_os_version=8
theme=gray-theme
nomoduleup=
tempdelete_days=7
notabs=0
theme_root=authentic-theme
md5pass=1
nowebminup=
log=1
os_type=debian-linux
webprefix=
referers_none=1
passwd_uindex=0
passwd_file=/etc/shadow
path=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
gotomodule=
os_version=8
lang=en.UTF-8
nohostname=0
ld_env=LD_LIBRARY_PATH
passwd_pindex=1
product=webmin
gotoone=0
by_view=0
passwd_mindex=4
pi@raspberrypi:~ $ sudo cat /etc/webmin/miniserv.conf
port=10000
addtype_cgi=internal/cgi
realm=Webmin Server
logfile=/var/webmin/miniserv.log
errorlog=/var/webmin/miniserv.error
pidfile=/var/webmin/miniserv.pid
logtime=168
ppath=
ssl=1
no_ssl2=1
no_ssl3=1
no_tls1=1
no_tls1_1=1
ssl_honorcipherorder=1
no_sslcompression=1
env_WEBMIN_CONFIG=/etc/webmin
env_WEBMIN_VAR=/var/webmin
atboot=1
logout=/etc/webmin/logout-flag
listen=10000
denyfile=\.pl$
log=1
blockhost_failures=5
blockhost_time=60
syslog=1
session=1
premodules=WebminCore
userfile=/etc/webmin/miniserv.users
keyfile=/etc/webmin/miniserv_self_signed.pem
passwd_file=/etc/shadow
passwd_uindex=0
passwd_pindex=1
passwd_cindex=2
passwd_mindex=4
passwd_mode=0
preroot=gray-theme
passdelay=1
cipher_list_def=1
sudo=1
logouttimes=
preroot_root=authentic-theme
nolog=\/stats\.cgi\?xhr\-stats\=general
no_tls1_2=
extracas=
ssl_redirect=0
root=/usr/share/webmin
mimetypes=/usr/share/webmin/mime.types
server=MiniServ/1.970

As requested

Thanks! And to be clear, what is happening with this config? Does it fail with 1.970 for authenticated user, for unauthenticated user or for both? Which version of Webmin this config works? I assume 1.962?

You are prompted for the user and password, if you enter the correct user and password then you get the aforementioned error. If you enter the incorrect user/password then you are notified and allows you to re-enter the information.

Also, the last version I had is 1.962 or the last version prior 1.970. I always keep the system updated as soon as there is a new version.

Interesting.

For some reason your config works just perfectly fine for me.

Restarting Webmin or rebooting the server fixes a problem for you?

I have rebooted the server multiple times and I still get the same error.

This is the error:
Undefined subroutine &main::authentic called at /usr/share/webmin/authentic-theme/index.cgi line 12.

where is main::authentic defined?

It’s not about line 12 but about failing line 10, which is:

do("@{[miniserv::getenv('theme_root')]}/authentic-lib.pl");

If you open /usr/share/webmin/authentic-theme/index.cgi and add above line 10:

die("@{[miniserv::getenv('theme_root')]}/authentic-lib.pl ----- $ENV{'THEME_ROOT'}");

… and reload the page – what output you get?

this ia the new error:

Error - Perl execution failed

/usr/share/webmin/gray-theme/authentic-lib.pl ----- /usr/share/webmin/gray-theme at /usr/share/webmin/authentic-theme/index.cgi line 10.

It should be:

/usr/share/webmin/authentic-theme/authentic-lib.pl

… and this is exactly what I get on my servers …

Is there a way I could login and see it myself. Considering your config and restarted Webmin, I don’t see an obvious reason for this to happen.

What if you try:

pkill -9 webmin
pkill -9 miniserv

… and then restart Webmin using /etc/webmin/restart - the error still the same?

I have exactly the same problem using the same ubuntu version. I have following this today. Can it be that I’m not using root but my log in as user name?

I modified the script, is this correct as per your instructions.

use strict;

die("@{[miniserv::getenv(‘theme_root’)]}/authentic-lib.pl ----- $ENV{‘THEME_ROOT’}");

do("@{[miniserv::getenv(‘theme_root’)]}/authentic-lib.pl");

authentic();

We can try, remote logon. How do I send the the URL and Port number securely ?

You could send it to me using my website’s contact form.

I have tried other users. Works just fine. What user was that? Is it Unix user? Is it privileged or safe Webmin user?

@rhis Could you share your /etc/webmin/config and /etc/webmin/miniserv.conf files?

As Marc say, until you write the right password it doesn’t crash, but when I use the right combination it crashes

find_pid_command=ps auwwwx | grep NAME | grep -v grep | awk ‘{ print $2 }’
showlogin=0
tempdelete_days=7
referers_none=1
log=1
md5pass=1
ld_path=
by_view=0
help_width=
os_type=debian-linux
dateformat=dd/mon/yyyy
theme=gray-theme
webprefix=
os_version=9.0
theme_root=authentic-theme
path=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
hostnamedisplay=
feedback_to=
syspath=
showhost=0
passwd_mindex=4
real_os_version=18.04.5
passwd_uindex=0
real_os_type=Ubuntu Linux
ld_env=LD_LIBRARY_PATH
passwd_cindex=2
help_height=
sysinfo=0
hostnamemode=0
nofeedbackcc=0
passwd_file=/etc/shadow
lang=en.UTF-8
product=webmin
passwd_pindex=1

port=10000
addtype_cgi=internal/cgi
realm=Webmin Server
logfile=/var/webmin/miniserv.log
errorlog=/var/webmin/miniserv.error
pidfile=/var/webmin/miniserv.pid
logtime=168
ssl=1
no_ssl2=1
no_ssl3=1
no_tls1=1
no_tls1_1=1
ssl_honorcipherorder=1
no_sslcompression=1
env_WEBMIN_CONFIG=/etc/webmin
env_WEBMIN_VAR=/var/webmin
atboot=1
logout=/etc/webmin/logout-flag
listen=10000
denyfile=.pl$
log=1
blockhost_failures=5
blockhost_time=60
syslog=1
ipv6=1
session=1
premodules=WebminCore
userfile=/etc/webmin/miniserv.users
keyfile=/etc/webmin/miniserv.pem
passwd_file=/etc/shadow
passwd_uindex=0
passwd_pindex=1
passwd_cindex=2
passwd_mindex=4
passwd_mode=0
passdelay=1
failed_script=/etc/webmin/failed.pl
logout_script=/etc/webmin/logout.pl
login_script=/etc/webmin/login.pl
cipher_list_def=1
sudo=1
nolog=/stats.cgi?xhr-stats=general
logouttimes=
preroot=gray-theme
perllib=
ca=/etc/webmin/acl/ca.pem
preroot_root=authentic-theme
root=/usr/share/webmin
mimetypes=/usr/share/webmin/mime.types
server=MiniServ/1.970

My Webmin user is the usual login user with no root access without su or sudo

What is “usual login” in your understanding? Does it have correspondent Unix user? How this user was created at the first time? How Webmin was installed? From a tarball or rpm/deb package?