please find attached copy
csc3412 Assignment 1 Semester 1, 2020 Due Date: 11:59PM 24 March 2020, AEST Instructions This assignment consists of 3 questions each of equal value. They consist of common tasks required of a system administrator—tasks I have had to do at some time in the past. Some of the questions require that you complete them using the supplied virtual machine. If you are unable to use the supplied virtual machine, for whatever reason, you must contact the Examiner before submitting to organised an approved system you can use to complete the assignment. This must be done well before you submit. Clear Layout It is vitally important that your assignment is clearly laid out with questions and parts of questions clearly defined. It must be a straight forward matter for the examiner to determine that you have completed each exercise satisfactorily. We want quality not quantity. Poorly organised submissions will be rejected or receive a poor mark. A text file or PDF/A document typeset using vanilla LATEX are preferred over a document produced by a word-processor. If you must use Microsoft Word please export your document as PDF/A[footnoteRef:1] not PDF. [1: PDF/A is an archival format of PDF that embeds all fonts used in the document within the PDF file. To ensure PDF/A format in Word check “ISO-19005-compliant (PDF/A)” under “Options” when saving a file as PDF.] Command Output When answering these questions you will have to run commands under Linux—whenever a command is run you will need to: a. explain in your own words the purpose of the command in the context of the assignment question. (Please do not just copy the “Description” section from the man page!) Also, you need to explain in your own words all terminology used—as if you were explaining to an average user! (Please show you understand what you are doing!) b. show that the command worked—either from its output or the output from another command. For example prompt> dd if=/dev/zero of=Crypt.fs bs=1M count=32 32+0 records in 32+0 records out 33554432 bytes (34 MB) copied, 0.109063 s, 308 MB/s prompt> ls -l Crypt.fs -rw-r--r--1useruser335544322010-02-2510:18Crypt.fs c. To capture text output from programs you will have to redirect the output to a file or use the command script. If you are using the command script turn off the tty escape sequences that change the colour of console text—the escape sequences will appear in output file and make it impossible to read. · accordance with section 4.4 ‘Deferred, Supplementary and Varied Assessment and Special Consideration’ of these procedures. Question 1 (marks 20) Researchers at USQ’s Centre for Astrophysics wish to incorporate revision control into their project so they can track the user changes made Code: ktransit.tgz to the code they are using in their search for exoplanets. The software package they are keen to modify and improve is “ktransit”[footnoteRef:2]. It is a Python/Fortran library to calculate the orbit of a potential transiting exoplanet, by fitting the model orbit to the star’s changing light-curve. [2: ktransit is part of the https://code.nasa.gov repository.] The revision control system they wish to use is Git[footnoteRef:3], as it is employed by their collaborators (and is used by the software developer). [3: Git home: https://git-scm.com. The excellent book Pro Git by Scott Chacon and Ben Straub is available for free download.] They have come to you to write a Git Tutorial using the Linux Git command-line interface and with explicit examples using the ktransit code base. All work on the code will be done on the USQ’s Linux HPC, so all user repositories will be local to that machine. The “master” repository for the local version of the code will be on the HPC in the directory /home/Planets/ktransit[footnoteRef:4]. This directory is readable and writable by the Unix group “astro”. All researchers using the code are in that group. [4: A cloud based solution is not feasible as the users of the HPC do not have outgoing access to the Internet, for security reasons.] The Tutorial needs to cover the following topics: · A basic description of Git and how it differs from other revision control systems, such as Mercurial, SVN, rcs, darcs, etc. · A short description of the user’s basic work-flow when using a Git repository. · How to initialise a Git repository for an existing code base. In this case the master Git repository: /home/Planets/ktransit. · How to clone an existing master Git repository to a local user Git repository. · How to add new files and modified files to the local user Git repository. · How to recover a particular version of a file from the local user Git repository. · How to check the status of the local user Git repository. · How to view the change history of the local user Git repository. · How to push local user Git repository changes back to the master Git repository. · How to pull changes from the master Git repository into the local user Git repository. · What to do if a pull or a push fails because Git cannot merge differences between your local repository and the master repository. · Permissions that must be set on the master Git repository so that it can be cloned by users in the research group. Notes: a. You are required to write a Tutorial — so please write a Tutorial! A tutorial is not just a dump of the commands you used! Each section must have a brief explanation of the task to be performed and why! Then show the commands that will perform the required task (and any output expected). b. The purpose of every Git command used must be explained. c. The options used for every Git command must be explained. d. Every Git command mentioned must show an example of the command using the provided code base. e. Every Git command example must include the command output. f. The code in the directory /home/Planets/ktransit is the Master and all users are pushing their local changes to the master, and pulling other peoples changes from the master to their local copy. g. The master Git repository should be created as a “bare” repository. A bare git repository does not have an associated working tree, as it will be used as a “remote” repository. You do not work in a remote repository, so a working tree is not required, just the bare git data. Question 2 (marks 20) Authentication under modern Unix systems is handled by the Pluggable Authentication Module (PAM) system. In about a page and in your own words explain the PAM system as it is implemented on a Linux distribution and why it was introduced. Using the login service file found in the course virtual machine (see /etc/pam.d/login) as an example, explain how a service is configured and discuss the implications of each configuration line. Your explanation should include discussions on the following: · what is the module-type parameter, · what is the control flag, · what does it mean that the service file is a stack, • what is a PAM module. Notes: a. Be aware that there are subtle differences between different Unix distributions—the question explicitly states discuss the Linux version only! b. The topics above are linked to each other and the question, they are not independent of each other. They are provided as a minimal guide only. Do not simply write an unconnected paragraph on each without linking the concepts together. Marks will be lost if your answer appears to be cut and pasted from the text book or (worse) from the Internet. c. List all resources used in answering this question. The text book is a very good starting point. d. Please do not fall into the trap of answering the question by using unexplained technical terms—you must explain all technical terms used especially if they have not been used anywhere else in the course. Assume you a writing for someone who knows nothing about PAM. Question 3 (marks 20) Your users require standardised syncing software, but due to security constraints and possible intellectual property rights, syncing to off-site private servers is not an option. But syncing to an in house, backed up server, is. The software must also be supported under Windows, macOS, Linux, Android and iOS—all the possible clients that may have to use it. The software being mooted is “syncthing” (https://syncthing. net/). You have been asked to test the latest version of syncthing (version 1.3.x) and write an evaluation report. The report must contain the following: · A discussion of the syncthing application: how it is different from other syncing software, how it is configured, what information is required for configuration, how it actually synchronises data, what data is synchronised. · Included with your discussion of syncthing you must include examples of syncthing being installed, configured and used. · Syncthing is configured through a Web interface. You must explain how syncthing can be remotely configured by users (how can a user configure the remote machine’s syncthing instance) · explain how syncthing addresses the security issues that are raised by allowing it to be remotely configured. · The environment used for the examples must be the course virtual machine and its host or an external machine. This is important, as the guest machine does not have a windowing environment (as a server would not) and the host will. So your discussion must include how to install, configure and use syncthing in a nonwindowing environment (such as a server). · Discuss, with examples, the user systemd configuration required on the virtual machine, so that the user’s instance of syncthing will start running when the user logs in and continue running after the user has logged out. · The report with examples should be approximately two pages. Notes: a. This is software for normal users, so everything must be accomplished as a normal user not as “root”. b. Do not use any package manager, but download the compiled binaries from the syncthing Web site. You have been asked to test the latest version — different distributions will have older and different versions. For stability you want to run the same version across all systems. c. For this question syncthing must be installed on the course virtual machine and its host (or another desktop machine). d. To “bring-up” the host-only interface (the network that links the guests to the host) see the man-pages ifup(8) and interfaces(5) and the configuration file /etc/network/interfaces If you are not using the host as the other syncthing client you will need to bring up the NAT interface. e. It is important to understand how syncthing can use port 8384 for both configuration and data transfer. You need to understand which interface handles configuration and which handles the synchronised data transfer. Once you understand how syncthing communicates for configuration and for data transfer, manually changing the syncthing configuration file so that the “virtual” machine syncthing can be configured via a web client on a different machine, is straight