Is there any way I can change it except for using bin/elasticsearch-setup or curl command?
Setup passwords does not change the bootstrap password, it uses the bootstrap password in order to set a permanent password for all of the built-in users.
If you want to setup passwords via the API, the you need to set the bootstrap password to a value of your choosing, and the call the change password API.
Can i add the user and password (hashed n salted) directly to config/users and config/users_roles files? I want to set the passwords manually somewhere before restarting the service.
No, the password for these builtin users is stored in the cluster (as an internal index). In cannot be set unless the cluster is running.
What are you actually trying to achieve here? We may be able to help you solve your problem if you explain your objectives.