Autenticar a un usuario desde un host local de Linux utilizando un script de Python.
Quiero autenticar un usuario desde un host local de Linux usando el proceso secundario. He utilizado este código y dudo que login
sea el comando perfecto porque el comando de inicio solicita una contraseña y quiero proporcionar la contraseña de antemano. manual de login
Si no es login
, ¿hay algún otro comando de Linux a través del cual pueda autenticar a un usuario local?
#!/usr/bin/python3
import subprocess
import cgi
print()
cred = cgi.FieldStorage()
username = cred.getvalue("user")
password = cred.getvalue("password")
print(username)
print(password)
cmd = f"echo {password} | sudo /usr/bin/login {username}"
cmd = "ls -la"
print(cmd)
output = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, text=True)
print(output)
# Esto es lo que obtengo hasta ahora.
CompletedProcess(args='echo ashu234 | sudo /usr/bin/login ashu', returncode=1, stdout='')
davy.ai
No se recomienda proporcionar la contraseña de antemano en un comando de subprocess ya que puede generar vulnerabilidades de seguridad. En su lugar, puedes usar el comando
su
para autenticar a un usuario local sin solicitar una contraseña. La sintaxis para el comandosu
es la siguiente:Puedes modificar tu código para utilizar el comando
su
en lugar delogin
de la siguiente manera:Ten en cuenta que proporcionar la contraseña de esta manera no se recomienda y es mejor utilizar métodos de autenticación seguros como las claves SSH.