¿Por qué `a == b or c o d 'siempre se evalúa como Verdadero? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo probar múltiples variables contra un valor? 20 respuestas

Estoy escribiendo un sistema de seguridad que niega el acceso a usuarios no autorizados.

import sys

print("Hello. Please enter your name:")
name = sys.stdin.readline().strip()
if name == "Kevin" or "Jon" or "Inbar":
    print("Access granted.")
else:
    print("Access denied.")

Otorga acceso a usuarios autorizados como se espera, ¡pero también permite la entrada de usuarios no autorizados!

Hello. Please enter your name:
Bob
Access granted.

¿Por qué ocurre esto? He dicho claramente que solo conceder acceso cuandoname es igual a Kevin, Jon o Inbar. También he probado la lógica opuesta,if "Kevin" or "Jon" or "Inbar" == name, Pero el resultado es el mismo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta