how to create user with less rights
Generally when someone wants to create a user to run an application, but not own the tables, they create a group that has select on the necessary tables and views and execute on the necessary stored procedures. They can then either create synonyms for the objects that they need or create public synonyms for the objects that everyone needs. You might want to have a separate roll for admin users compared with regular users.

Once you do that then when you create a user they would need connect or create session and the role that was created for all users. If they have temporary tables they either need the create table privilege or to just have the tables created for them.

Generally giving each user a separate login directly to the database is something that was done with client server apps. Most web based apps handle the logins on the app server and don't give direct access to the database for users. They just pool the connections and have business logic to control which user can use which function. You may want to rethink why you are creating individual users directly in the database.