When moving individual workbooks I'm unaware of any way to maintain permissions. There may be some workarounds using the REST API but I'm not super confident in that either. I've also moved this post over to the Server Admin section of our community where it is more likely to receive a helpful response.
Not via Tableau Desktop.
Can be done via scripting or possibly with 3rd party tools such as Interworks EDT.
EDT is the most mature solution I've seen so far. I have scripted this kind of thing out before (sans the permissions part), and it isn't much fun to maintain. Permissions are only possible with the REST API:
I too had the same issue. We can export site from Dev and import that site in QA environment. But this wouldn't cover the users.
This process requires adding users initially in the QA server and going through the mapping files during import. If you are using Active directory, adding users is more easier.
You can refer to below link for the whole process:
Hope this helps you.