Programming with Privileges For this assignment, modify the programs for the last assignment to use the actual user and group ID. That is, instead of having -u and -g, see what permissions the programs are actually running with. The catch: you MUST prevent any access to the repository that bypasses the ACLs. This implies that the repository must be protected using OS permissions, which in turn means that a separate UID is needed. The programs must either be setUID or use message-passing; that's your choice. The objects for user and group names are no longer needed; use the system's equivalents. You may not use the OS ACL mechanisms; you must implement them yourself. One important design decision: what UID are you using, root or some non-privileged one? Your README file MUST justify your choice. A correct choice with an incorrect justification will lose points. (Of course, an incorrect choice will also lose points.) You should run this assignment using a VMware virtual machine; see the instructions on the web page. If you choose to use message-passing, you need not solve the start-up problem; it is acceptable to start the daemon manually. You must supply a script that will create an empty repository, including setting all permissions you rely on for correct, secure behavior. The README file should explain the rationale for whatever permissions you choose. You may (probably will...) find the getuid() and getpwuid() routines (and the corresponding routines for groups) to be helpful. Also: because a lot of the testing needs to involve stuff running as different users, the test script must be run as root. To run something as another user, write su username -c "./objget..." where "username" is whatever username that command should run as.