In this assignment you will develop simple scripts to manage the user and file system whilst developing some expertise in managing a complex file system.
Part 1: Automated Account Management
You have been asked by your boss to prepare two shell scripts which manage user information:
You are to prepare a simple shell script which reads a text file called users.txt. The file is in the form
dfs /home/dfs Daniel Saffioti
and creates these users on the system without any interactive input. To do this you will need to use the adduser(1) and passwd(1) commands. You will need to randomly produce the password and report this to the administrator.
You can assume the fields being username, home directory and GCOS string are separate by a single white space.
You can assume all users are in the same group. The program should output the username and generated password once created.
Management of users is important particularly there removal. Write a shell (.sh) script that takes a single argument being a username, looks fo the account in /etc/passwd, deletes the accounts, and archives there home directory into a tar.gz file. You will receive more marks if you avoid using the standard user management tools.
Part 2: Designing File Systems
You work for the Information Technology Department in your University and you have been asked to build a server to store user data (home directories).
The volumes can grow without bounds, so it was felt that the ZFS file system should be used for each volume. The operating system itself need not be on a ZFS volume.
All volumes including the operating system should be engineered in such a way to ensure the best data protection is afforded in the event of local disk failure. It is expected that no more than 1 hours worth of data will be lost.
The volumes required are as follows:
uni0 with mount point /users/ug& quota of 200G.
uni1 with mount point /users/pg& quota of 200G.
uni2 with mount point /users/deleted& reservation of 100G.
uni3 with mount point /users/staff& reservation of 100G.
uni4 with mount point /users/guest & reservation of 250G.
Given the above your task is as follows define a strategy for how you will ensure the volumes outlined above are provisioned whilst ensuring there data protection. Document this accordingly along with a suitable rationale for your design.
Part 3: Implementing the Filesystem
Given the strategy defined in part two, your job is to implement the storage system.
1. To do this install the latest version of Ubuntu Server on a virtual machine. You will need to ensure the networking is bridged and the root portioning is managed appropriately. You will need to add additional virtual disks to meet the storage needs above.
2. Install the ZFS package and configure it such that pools of storage are created to meet the above requirements including redundancy and backups. To achieve this use the mirroring and snapshot features of ZFS.
Part 4: Making the File System accessible and roboust
The next step is to create another virtual machine (running the same Linux distribution). You job is to:
1. Mount a NFS exported volume from the server outlined in Part three, on this newly created server.
2. Backup all the data on the ZFS volumes on the server in part three to this new instance. You can either use ZFS or another tool/ technique to do this.
Document the steps taken.
Part 5: File System Management with Scripts
Now that you have a plan for the storage there are a few house keeping matters to take care of because users tend to be somewhat liberal with their storage.
Write a script to make sure that user home directories are owned and only accessible by the owner. The script can assume home directories are descendants of /users.
Finally write a script which takes as an argument the filesystem name e.g. /home and looks for objects which do not belong i.e. end with the extension
When these files are found a summary should be produced including where they are and the size. The script should also remove the files.