python sys.path different per user account - ImportError no module named (Focal, Bionic Beaver, and Xenial)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
python2.7 (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
In Ubuntu 20.04, python scripts executed by other users or users that cannot log in (/usr/sbin/nologin as their shell) do NOT work when importing modules that have been installed via python packages via apt or pip due to sys.path returning different values.
For example, I have a PAM python script that is used for authentication, and when it is run, it fails because it cannot find some of the modules it needs.
Further investigation shows that my current logged in user (running the script via the terminal) has a sys.path value of:
/current/
/usr/lib/python2.7
/usr/lib/
/usr/lib/
/usr/lib/
/usr/lib/
/usr/local/
/usr/lib/
When I run the same script with another user:
/usr/lib/python2.7
/usr/lib/
/usr/lib/
/usr/lib/
/usr/lib/
Two critical paths are missing for this user! They are:
/usr/local/
/usr/lib/
Why are these two paths not included for this particular user?
I don't have this problem in older versions of Ubuntu. The same python script works in 18.04, but fails in 20.04.
summary: |
- python sys.path different per user account - no module named + python sys.path different per user account - ImportError no module named |
summary: |
python sys.path different per user account - ImportError no module named + (Focal) |
summary: |
python sys.path different per user account - ImportError no module named - (Focal) + (Focal and Bionic Beaver) |
This is now an issue in Ubuntu 18.04 as well. I'm guessing whatever broke was backported into 18.04 as well.
See these scripts as examples:
Version for 18.04 and 20.04:
https:/ /raw.githubuser content. com/earnolmarti n/EHCP- Force-Edition/ master/ ehcp/etc/ pam/pam_ dbauth_ vsftpd_ ubuntu_ 20_plus. py
Version for 16.04:
https:/ /raw.githubuser content. com/earnolmarti n/EHCP- Force-Edition/ master/ ehcp/etc/ pam/pam_ dbauth_ vsftpd. py
Difference is that in 18.04 and 20.04, I must set the path in the script:
sys.path.insert(0, '/usr/local/ lib/python2. 7/dist- packages' ) python2. 7/dist- packages' )
sys.path.insert(0, '/usr/lib/
If I do not, I get this error:
Sep 26 19:10:41 host /etc/security/ pam_dbauth_ smtp.py[ 9965]: Traceback (most recent call last): pam_dbauth_ smtp.py[ 9965]: File "/etc/security/ pam_dbauth_ smtp.py" , line 64, in <module> pam_dbauth_ smtp.py[ 9965]: from passlib.hash import mysql41 pam_dbauth_ smtp.py[ 9965]: ImportError: No module named passlib.hash
Sep 26 19:10:41 host /etc/security/
Sep 26 19:10:41 host /etc/security/
Sep 26 19:10:41 host /etc/security/
Sep 26 19:10:41 host saslauthd[9965]: DEBUG: auth_pam: pam_authenticate failed: Error in service module