University of Minnesota
Development of Secure Software Systems
index.php

CSci 4271 Lab 0

Because there isn't a lab section day during the first week of classes this semester, we aren't going to devote one of the in-person labs to practicing basic using-the-labs skills, but this page repeats the instructions that we have used for such a lab in some previous semesters, so you can try things out on your own. Since some of these suggestions are specifically about accessing resources from off campus: it makes some sense to try them from home, though for the parts about collaboration tools you might want to arrange the cooperation of another student. You can also ask questions or discuss any of this material on Piazza or at office hours.

  1. (Vole and SSH access.)

    You've probably already used Vole in previous CS classes, since it's usually the first recommended way to access CSE Labs computing resources remotely. But just in case you haven't, it's a remote-desktop login system which displays a Linux-based graphical interface inside a window in your web browser. The starting page with basic information and links about Vole is https://vole.cse.umn.edu/

    The graphical desktop features of Vole are going to be less important for a lot of the work we do, so it's also good to know about how you can make a terminal-only connection using SSH. Unix and Mac computers likely already have a command-line "ssh" program. If you're using Windows, CSE-IT's suggestions are to use the Windows Subsystem for Linux (WSL) or Windows Terminal which are both free of charge. There are also a large number of third party options.

    With SSH there's also a choice of what CSE Labs computer to connect to. There isn't a single large entry point maintained for SSH in the same way the Vole servers work. So our recommendation instead is that you randomly pick one of the Linux workstations in the room where our in-person labs are held. There's a predictable naming pattern; since the lab is 1-262 Keller Hall, the names of the machines all look like:

    csel-kh1262-XX.cselabs.umn.edu
    	
    where the XX is replaced by a two digit number between 01 and 28. If you're sitting in the lab, you might try connecting to the machine in front of you, or from it to the one next to you. If you're outside the lab, you can a computer number randomly to spread the load out across all the machines, like with the command:
    perl -e 'printf "%02d\n", 1 + int(rand(28))'
    

    As a combination of the two ideas mentioned above, CSE-IT has also arranged that you can make graphical connections to the lab machines in the same way you connect to Vole (the underlying technology is called FastX). Just put the host name mentioned in the previous paragraph into your web browser.

  2. (Forwarding individual X applications.)

    Another option that lies between having just a terminal with plain SSH and having a complete remote desktop with Vole/FastX is to view the GUI for a single application remotely using the SSH feature called "X forwarding". The X Window System here, or "X11", is the protocol that Unix systems commonly use for GUI applications. X forwarding is most convenient when your local machine is running Linux or another kind of Unix, because it's probably already running compatible X software. But X software also exists for MacOS and for Windows. CSE-IT's instructions can be found on this page, look for the drop-down labeled "Displaying Graphical Applications (X11 Forwarding)". A previous semester's TA also recommended some sets of instructions from StackExchange and New Mexico State.

  3. (Screen sharing on Zoom.)

    You've almost certainly had experience the last few years using Zoom for online classes or meetings. If you haven't already used the features of Zoom that let you share a view of a single window or your whole desktop with someone else you're meeting with, you might want test that out with a partner.

  4. (Terminal sharing with tmate.)

    Zoom screen sharing is view-only: you can see what someone else is doing but not do things for them. Sometimes that can be a good way of working; in pair programming terminology you'll hear people talk about one person "driving" at a time. But in other cases it can be convenient for multiple people to all be able to interact with programs at once. For command-line/terminal programs, the easiest solution we've found for doing this is a program called tmate, which works using a combination of tmux and SSH and public rendezvous servers. The web site is at https://tmate.io/ and we've also already installed a binary on the CSE Labs machines at:

    /web/classes/Spring-2023/csci4271/bin/tmate
    

    Try setting up a shared terminal session on one of the CSE Labs machines with the other people in your group an run some commands together.

  5. (Accessing library materials.)

    Some of the reading materials in this course will be ones that you'd have to pay to get access to as an independent person, but which are available without charge to the university community because the U Libraries have already paid for that access. If you're browsing from an on-campus computer (e.g., Vole, in a lab, or on the eduroam wireless), the free access will usually just work automatically, but not if you're off the campus network.

    A general purpose tool you can use to make your network connection from off campus look like an on-campus one is a VPN. Information about the campus VPN is available here. But the VPN can be a bit complicated to install and use. So we recommend a more specialized service instead for this purpose.

    This service is a proxy that the libraries run specifically just for accessing library resources over the web. You switch to using the proxy by putting the following prefix in front of the URL you want to access:

    http://login.ezproxy.lib.umn.edu/login?url=
    	
    That's a bit of a pain to type every time, though. In many web browsers you can set this up as what's called a bookmarklet, so that transforming the URL is as easy as choosing a menu entry. The libraries' information about how to do this is here.

    Try one of the methods for accessing libraries content out by downloading a PDF for this paper. (This paper isn't an assigned reading, but it is relevant to security.)

  6. (More things to try.)

    If you found everything above easy enough, here are some brief notes on further things you can look into:

    • Another thing you'll want to be able to do when using the CSE Labs machines over a terminal interface is to edit files. The two most popular families of Linux text editors are named Emacs and VI. If you want to start learning about Emacs, type the command emacs -nw at a terminal and look for the link to the tutorial. For VI, type the command vimtutor at a terminal.
    • Another option for simulating the CSE Labs experience on your own machine is to set up a virtual machine. CSE-IT used to provide instructions on configuring an Ubuntu 18.04 system with the same software installed on the lab machines, and you can still find their old instructions via the Internet Archive and the script that installed the packages via Google Drive. However they do not appear to have updated this for Ubuntu 20.04 which is now used by the lab machines.