Can samba be run as non-root user?

No.

Samba listens to ports below 1024 (135, 445 namely), and convention requires that only root can bind ports below 1024.

However, Linux has a capability interface that can be used to allow services to bind to ports that are below 1024 without root:

sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/sbin/smbd