Você deve usar o pam. No debian / ubuntu você pode:
apt-get install python-pam
Código simples em python pamtest. py :
Veja o arquivo /usr/share/doc/python-pam/examples/pamtest.py
. É muito curto e faz o que você quer.
Para testá-lo, execute:
python /usr/share/doc/python-pam/examples/pamtest.py
Existe também um exemplo em C pamexample.c .
Para testar:
gcc /usr/share/doc/python-pam/examples/pamexample.c -lpam -l pam_misc
./pam_misc theuser