Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.4.6
-
None
Description
The permissions of auth_pam_tool_dir and auth_pam_tool are wrong in MariaDB 10.4. These are used by version 2 of the pam plugin.
If you run mysqld with strace, then you can see the failure. For example, start mysqld:
mkdir strace
|
sudo strace -o ./strace/mysqld_strace.log -ff /usr/sbin/mysqld --user=mysql --datadir=/var/lib/mysql &
|
And then try to authenticate as an account that uses pam v2 (while using the workaround for MDEV-19807):
$ mysql -u alice --plugin-dir=/usr/lib64/mysql/plugin
|
ERROR 1045 (28000): Access denied for user 'alice'@'localhost' (using password: NO)
|
The strace output shows why this failed:
./strace/mysqld_strace.log.4451:execve("/usr/lib64/mysql/plugin/auth_pam_tool_dir/auth_pam_tool", ["/usr/lib64/mysql/plugin/auth_pam"...], [/* 17 vars */]) = -1 EACCES (Permission denied)
|
The problem seems to be with the permissions of the /usr/lib64/mysql/plugin/auth_pam_tool_dir/ directory:
$ sudo ls -ld /usr/lib64/mysql/plugin/auth_pam_tool_dir/
|
drwx------. 2 root root 27 Jun 22 02:43 /usr/lib64/mysql/plugin/auth_pam_tool_dir/
|
You can workaround this by executing the following:
sudo chmod 0755 /usr/lib64/mysql/plugin/auth_pam_tool_dir/
|
It looks like permissions of auth_pam_tool are also wrong:
$ sudo ls -l /usr/lib64/mysql/plugin/auth_pam_tool_dir/auth_pam_tool
|
-rwxr-xr-x. 1 root root 11248 Jun 17 23:57 /usr/lib64/mysql/plugin/auth_pam_tool_dir/auth_pam_tool
|
To workaround this, you need to add the setuid bit:
sudo chmod 4755 /usr/lib64/mysql/plugin/auth_pam_tool_dir/auth_pam_tool
|
Attachments
Issue Links
- causes
-
MDEV-20205 mysql_install_db shouldn't execute chown
-
- Closed
-
- is caused by
-
MDEV-7032 new pam plugin with a suid wrapper
-
- Closed
-
-
MDEV-15473 Isolate/sandbox PAM modules, so that they can't crash the server
-
- Closed
-
- relates to
-
MDEV-19850 per-plugin install/uninstall scriptlets
-
- Stalled
-
-
MDEV-19877 pam v2: auth_pam_tool input format is not user friendly for debugging
-
- Open
-
-
MDEV-19878 pam v2: pam password authentication doesn't work at all
-
- Closed
-
-
MDEV-19879 server can send empty error message to client with pam_use_cleartext_plugin
-
- Closed
-
-
MDEV-19880 pam v1: pam password authentication doesn't work at all in MariaDB 10.4
-
- Closed
-
-
MDEV-19881 pam plugin from MariaDB 10.3 doesn't work with MariaDB 10.4
-
- Open
-
-
MDEV-19807 MariaDB client plugin path is wrong
-
- Closed
-
-
MDEV-19882 pam v2: auth_pam_tool truncates passwords that are not null-terminated
-
- Closed
-
-
MDEV-19898 PAM plugin testing
-
- Stalled
-
-
MDEV-22459 pam v2 should log an error if auth_pam_tool exec fails
-
- Closed
-
-
MDEV-22482 pam v2: mysql_upgrade doesn't fix the ownership/privileges of auth_pam_tool
-
- Open
-
I tested out the fix for this using tarbuildnum #27339 from hasky for RHEL 7:
http://buildbot.askmonty.org/buildbot/builders/kvm-rpm-centos74-amd64/builds/8839
http://hasky.askmonty.org/archive/10.4/build-27339/kvm-rpm-centos74-amd64/rpms/
This issue is not fixed.
The associated commits added some code to mysql_install_db, so that the mysql_install_db will chown/chmod auth_pam_tool_dir and auth_pam_tool, so that the directory and executable have the correct owner and perrmissions.
But there is a problem with this fix. This fix still leads to failures when:
1.) Upgrading an existing installation. In this case, 10.4's mysql_install_db is never executed to begin with, so the owner and permissions will never be changed.
2.) Upgrading from one 10.4 release to another 10.4 release using RPMs. In this case, the existing auth_pam_tool_dir and auth_pam_tool will be replaced by the contents of the new RPM, so the chown/chmod that was previously done by mysql_install_db will be undone.
The root cause of the problem is that these files do not have the correct owner and privileges in the RPM itself. See here:
$ sudo rpm -qplv MariaDB-server-10.4.7-1.el7.centos.x86_64.rpm | grep auth_pam
-rwxr-xr-x 1 root root 11672 Jul 8 13:34 /usr/lib64/mysql/plugin/auth_pam.so
drwx------ 2 root root 0 Jul 8 13:32 /usr/lib64/mysql/plugin/auth_pam_tool_dir
-rwxr-xr-x 1 root root 11248 Jul 8 13:34 /usr/lib64/mysql/plugin/auth_pam_tool_dir/auth_pam_tool
-rwxr-xr-x 1 root root 11664 Jul 8 13:34 /usr/lib64/mysql/plugin/auth_pam_v1.so
This issue will not be fixed until the files have the proper owner and permissions in the RPM. Otherwise, any owner and privileges changes will just be undone anytime the server RPM is upgraded, and the files are replaced.
If we can't figure out how to fix the owner and permissions in the RPM itself, then we may also be able to fix them in the RPM's postin script:
https://github.com/MariaDB/server/blob/mariadb-10.4.6/support-files/rpm/server-postin.sh