Permissions have two parts: an action and a set of users. The three actions—read, write, and execute—define what can be done to a file, while the user sets define who can do it.
os.path.join (folder, filename) ensures the path is correct for the system. On Windows, it uses backslashes (reports\summary.txt); on Linux and macOS it uses forward slashes (reports/summary.txt).