AFS Course Space
This page will describe the structure of the AFS shared spaces given to courses and will explain the process for setting up your account to use it.
Contents
Introduction
Prior to 2013, Duke's public computers used the Andrew File System to store files. This system allowed individuals to set seven different permissions to each folder within their space. Users could assign permissions to single users or to groups. While this system was extremely flexible, over time, support for it dwindled. In the Spring semester of 2013, Duke switched to CIFS as a file system. While this system has many positive features, it is entirely lacking in the ability to grant permissions to individual folders. It also does not allow for symbolic links. Given these drawbacks, and given the current lack of an alternate way for students and instructors to set up shared course spaces within CIFS, Duke is maintaining a section of AFS-hosted folders, specifically for courses.
Note In Spring of 2014, the Go* shortcuts were all replaced with symbolic links. Apologies to anyone who took a class with Dr. G in 2013...
Goals
The goals of using the AFS shared spaces are as follows:
- Allow for file sharing from the instructor to all the students in a class
- Allow the instructor and teaching assistants to access course-related files for students - this will facilitate both off-line assistance and grading
AFS Location
The AFS folders are all located at
/afs/acpub.duke.edu/courses/YEAR_SEMESTER/DEPARTMENT/CLASS
For example, the Spring 2014 offering of EGR 103L has a set of folders at
/afs/acpub.duke.edu/courses/2014_spr/egr/103l
Within the CLASS folder, there will be a folder for each section (for example, 002). For Dr. Gustafson's courses, however, students will not need to worry about the section folder, only the CLASS folder.
Personal AFS Folders
For Dr. Gustafson's classes, each student will have a folder within the CLASS folder. The folder will be the same as the student's NET ID. For example, in EGR 103L, a student with a NET ID of mrg would have a folder:
/afs/acpub.duke.edu/courses/2014_spr/egr/103l/mrg
If you find that you do not have a folder, be sure to check the directory. If you are in the correct directory and still do not have a folder, let Dr. G. know.
When these folders are created, permissions are set as follows:
- system:administrators and mrg have all permissions
- the student and the TAs have read, list, insert, delete, write, and lock permissions, but not administer permissions
- no one else has any other permissions
Fortunately, whenever a new folder is created, it will take on the permissions of the folder in which it was created. In other words, as long as the student always first changes into the shared AFS space, everything created there can be seen by the student and the instruction team.
There is also a folder called public within the CLASS directory. For this folder,
- system:administrators and mrg have all permissions
- all students and TAs have read and list permissions
This way, files that students need to copy can be hosted in the shared space and all students can copy the file without any chance of accidentally (or intentionally) removing those files.
Shortcuts
One problem with the CIFS is that it is in a different structure from AFS. In other words, to get to the public space for EGR 103L, a person would have to type out
cd /afs/acpub.duke.edu/courses/2014_spr/egr/103l/public
every time (unless a path using .. were available).
To make life a little easier, you can either create a symbolic link to your directory or an alias that changes into your space within a particular class.
Creating a Symbolic Link
Creating a symbolic link basically places a "folder" in your home directory that is linked to the AFS folder you want to use. You can then use that link in exactly the same way you would use any other folder. The command to make a symbolic link is:
ln AFS_FOLDER -s LINK_NAME
Also, in UNIX, the code $USER
can be used to get a person's user name. As a result, for people
to make a symbolic link from their /winhomes/NETID directory to the /afs/acpub.duke.edu/courses/2014_spr/egr/103l/NETID directory, they might type
cd
to get to the home directory, followed by
ln /afs/acpub.duke.edu/courses/2014_spr/egr/103l/$USER -s EGR103
After running that command, there should be a "folder" called EGR103
inside the user's home directory. To make sure the ln
process worked, type
ls -l
and then look for the shortcut you just made. On PuTTY, the link should be a cyan color and point to the correct directory. If the link in PuTTY is red, it is not pointing to the correct place - you will need to remove it
rm SHORTCUT
where SHORTCUT is the name of the shortcut you just made and then correct the ln
command
Once the alias is pointing to the correct place, to switch into the AFS folder it references, the user could just use the cd command:
cd EGR103
or, if not in the home directory to start with,
cd ~/EGR103
For Dr. G's Spring 2014 courses, use the following:
- EGR 103L
ln /afs/acpub.duke.edu/courses/2014_spr/egr/103l/$USER -s EGR103
- ECE 110L
ln /afs/acpub.duke.edu/courses/2014_spr/ece/110l/$USER -s ECE110
- EGR 224L
ln /afs/acpub.duke.edu/courses/2014_spr/egr/224l/$USER -s EGR224
- ME 344L
ln /afs/acpub.duke.edu/courses/2014_spr/me/344l/$USER -s ME344
- ECE 382 (note - no "L")
ln /afs/acpub.duke.edu/courses/2014_spr/ece/382/$USER -s ECE382
Creating a Symbolic Link (for Lab TA use)
Creating a symbolic link basically places a "folder" in your home directory that is linked to the AFS folder you want to use. The issue is that TAs will not have personal folders in the classes for which they are a TA. If you create a link, you can then use that link in exactly the same way you would use any other folder. As a result, teaching assistants should make a link to the class directory one level above the students' directories. For example, TAs to make a symbolic links from their /winhomes/NETID directory to the /afs/acpub.duke.edu/courses/2014_spr/egr/103l/ directory, they might type
cd
to get to the home directory, followed by
ln /afs/acpub.duke.edu/courses/2014_spr/egr/103l/ -s EGR103ta
After running that command, there should be a "folder" called EGR103ta
inside the user's home directory. To make sure the ln
process worked, type
ls -l
and then look for the shortcut you just made. On PuTTY, the link should be a cyan color and point to the correct directory. If the link in PuTTY is red, it is not pointing to the correct place - you will need to remove it
rm SHORTCUT
where SHORTCUT is the name of the shortcut you just made and then correct the ln
command
Once the alias is pointing to the correct place, to switch into the AFS folder it references, the user could just use the cd command:
cd EGR103ta
or, if not in the home directory to start with,
cd ~/EGR103ta
For Dr. G's Spring 2014 courses, TAs only should use use the following:
- EGR 103L
ln /afs/acpub.duke.edu/courses/2014_spr/egr/103l/ -s EGR103ta
- ECE 110L
ln /afs/acpub.duke.edu/courses/2014_spr/ece/110l/ -s ECE110ta
- EGR 224L
ln /afs/acpub.duke.edu/courses/2014_spr/egr/224l/ -s EGR224ta
- ME 344L
ln /afs/acpub.duke.edu/courses/2014_spr/me/344l/ -s ME344ta
- ECE 382 (note - no "L")
ln /afs/acpub.duke.edu/courses/2014_spr/ece/382/ -s ECE382ta
Creating an Alias
The method of using aliases pioneered in 2013 has been retired in favor of the aliases above. This section will remain, but commented out, in case it turns out the aliases fail...
Copying public files
Many times you will need to copy files from the public space into your own directory. For example, in EGR 103L, Lab 1 has several files you will need. Once you get into the appropriate AFS directory, you will just use .. to go up the directory structure the the CLASS folder, then down into the public folder. For example, if user mrg needs to get the Lab 1 files from the public directory and put them into mrg's own lab1 directory, that might be:
cd ~/EGR103
to get into the user's own egr/103l/mrg space, followed by
mkdir lab1
to make a folder for that assignment. Then
cd lab1
to get into the folder and, finally,
cp -i ../../public/lab1/* .
to go up two levels (the CLASS folder), then go into public and from there into public's lab1 folder. Don't forget the space and . at the end.
Transferring Files
The slightly odd location of the AFS space makes transferring files from a personal or lab computer over to the AFS space a little more complicated. The basic process is as follows:
- Start a file transfer client. In the B209 lab, this means SSH Secure Shell's Secure File Transfer Client; the rest of the instructions are based on that program.
- Click "Quick Connect"
- In "Host Name," enter your favorite Teer machine
- In "User Name," enter your NET ID
- Click "Connect"
- Enter your password when prompted
- The window should now be divided in two sections - a Local section and a Remote section. At the top of the RemoteSHORTCUTsection, there should be a white text entry area with a pulldown icon on the right. Click in that area and typewhere SHORTCUT is the name of the symbolic link in your home directory you created for the class. Hit return - this should take the remote view to your AFS course space
~/SHORTCUT
- In the Remote section, click the new folder icon to add a new folder for the particular assignment; give the folder an appropriate name
- In the Remote section, double-click the folder you just created. The Remote section should now have a window pointing to your (empty) folder.
You can now drag files in from either the Local section on the left of the SSH Secure File Transfer client, from the MATLAB "Current Directory" window, or from any other place you can click and drag an icon.
Questions
Post your questions by editing the discussion page of this article. Edit the page, then scroll to the bottom and add a question by putting in the characters *{{Q}}, followed by your question and finally your signature (with four tildes, i.e. ~~~~). Using the {{Q}} will automatically put the page in the category of pages with questions - other editors hoping to help out can then go to that category page to see where the questions are. See the page for Template:Q for details and examples.