CSIL Linux/UNIX FAQ
Currently,
Ubuntu 22.04 LTS (Jammy Jellyfish) - runs on CSIL VDI, most of CSIL workstations, all CSIL Linux CPU servers and all MPCS workstations.
- exception: workstations in SRYE 3024 and SRYE 4024 run Windows only for Fall 2024.
Please read Getting Started as a CMPT Undergraduate page for basic information about our labs and how to gain access to them. Our Linux Command Line Survival page provides essential tips, including how to login to CSIL Linux systems plus many links to tutorials and other resources.
Some terminology used on this page:
username: your SFU Computing ID
SFU Home: your SFU Campus home directory; save all your important files here!
FQDN: fully qualified domain name (including DNS suffix)
RDP: Remote Desktop Protocol; sometimes, it is also called Remote Desktop Connection
The Linux/UNIX Command Line Environment
This section relates to questions about the Linux/UNIX command line or Terminal applications.
What is the Linux/UNIX command line?
What is the Linux/UNIX Virtual Console?
What is a command shell?
How is my CSIL Linux/UNIX environment set up?
Can I change my CSIL Linux/UNIX Environment?
The basics of using Linux/UNIX systems in CSIL
This section relates to questions about basic usage of the Linux systems in CSIL.
Where do I save my files on CSIL Linux systems?
How do I access SFU Campus home directory?
How do I check my space usage on a CSIL Linux systems?
Where do I save intermittent/scratch files on CSIL Linux systems?
How do I share files with other Linux/UNIX users?
How do I remotely access (remote login) CSIL Linux (Ubuntu) systems via ssh?
How do I remotely access CSIL Linux (Ubuntu) systems with GUI (X Window) interface?
May I install software for my course work on a CSIL workstation?
The Linux Desktop Environment in CSIL
This section relates to questions about the Linux windows management system.
What is the current Linux desktop in CSIL?
May I use Unity?
May I customize my Linux environment and use it on all CSIL Linux systems?
How do I know if I am using roaming profile on CSIL Linux workstations?
Special Topic on permissions
Some of the applications I need for my course project need to be run as root/sudoer, what should I do?
May I have root access to CSIL Linux systems?
May I have sudo access to CSIL Linux systems?
Which computers could I use for my Operating System (O/S) level programming?
May I do O/S level programming on any servers?
Special Notes on specific software packages
Which editors I could use on CSIL Linux computers?
How do I run Eclipse?
How do I run versioning tools in CSIL?
Known Linux Issues
Please visit the new Known Issues Page for more Q&As.
I have logged into CSIL UNIX/Linux machines previously but now I can't log on. What's wrong?
I cannot write to my sfuhome, what should I do?
There is a runaway process or an application that seems to have 'frozen' and is not responding. How can I stop it?
Firefox won't start and it claims that "Firefox is already running." What should I do?
I cannot find my sfuhome after I logon to a CSIL Linux workstation, what should I do?
I cannot see any files under my sfuhome after I logon to a CSIL Linux workstation, what should I do?
The Linux/UNIX Command Line Environment
What is the Linux/UNIX command line?
The command line is a text-only interface that allows you to communicate directly with the UNIX operating system (O/S). Although it is text-only, the command line is vastly more powerful than the Graphical User Interface (GUI - pronounced "goo-ey") that most UNIX users use most of the time. All GUI applications on the Linux system rely heavily on the simple command line level UNIX commands when they need to perform input/output of any sort. There are many UNIX commands that can affect the O/S and its operation that can have a great deal of impact on the GUI applications but that the GUI user never sees.
Users can access the UNIX command line from the GUI, by running an application called "Terminal". You can find this application in your list of applications inside your menus. Linux users also have access to Virtual Consoles. Please read the next Q&A for important instructions.
We cannot teach you about all of the UNIX command line commands in this FAQ. There is extensive help for both new and experienced users alike on the Web.
What is the Linux/UNIX Virtual Console?
Virtual Console is the interface that system administrators use for Linux/UNIX systems when installing and repairing the OS, or other times when the graphical interface cannot be used, e.g. diagnose issues regarding login.
Linux users also have access to Virtual Consoles. There are six Virtual Consoles on each Ubuntu Linux workstation in CSIL, and you invoke them from the keyboard by pressing the key sequence CTRL-ALT-F1 to F6. Pressing CTRL-ALT-F7 will take you back to the GUI session.
CRITICAL:
You MUST logout of each Virtual Console that you login to. Logging out of the GUI session is NOT sufficient. If you logged in to a Virtual Console and did not logout, any other user coming along to your workstation after you had left CSIL would have full access to your account.
What is a command shell?
A command shell is a program that interprets what you type at the command line, and tries to make sense out of it. There are many different shells, each with its own peculiarities. Some popular ones are:
- sh - the Bourne shell.
- csh - the C shell.
- tsh - the T shell.
- bash - the Bourne-again shell.
Each time you log in to a UNIX/Linux system, you are starting a shell. This is true even if you only log in to the GUI session. Every UNIX user has a default shell, set by the system administrator who created your account. You cannot change this in CSIL, but you can run a sub-shell if you like. At the command line, simply type in the name of the new shell (for example, to invoke the 'bash' shell):
bash
To exit a sub-shell and return to the parent shell, enter the 'exit' command at the command prompt.
There is extensive documentation on the Web regarding UNIX command shells and their features.
How is my CSIL Linux/UNIX environment set up?
Your UNIX environment is controlled by your ENVIRONMENT and SHELL variable settings.
When you log on to any UNIX/Linux system, UNIX automatically sets a number of important environment and shell variables. Depending on which shell you are running, you can use the 'set' and/or 'setenv' commands on the command line to see these variables. Environment variables from your initial login are copied to each subshell that you open during that login session, but shell variables are not. Environment variable names are all upper case by convention, while shell variables are all lower case by convention.
The whole point of environment and shell variables is to store critical information that your applications rely on. For example, one of the most important environment variables is the PATH variable. The PATH variable holds the directories that are searched for application programs and their components, in the order of importance. If you have an application program or a program component that is in a directory that is NOT in your PATH, then the UNIX system will be unable to find it if it is not in your current directory.
To illustrate, say you PATH variable is set to:
PATH=/usr/sbin:/bin:/usr/bin/:/usr/ucb:/usr/local/bin
and you wish to execute the XYZ application that is installed in the directory:
/var/bin/XYZ
Unless you are in the directory XYZ from command prompt, the UNIX system will not be able to find your XYZ application.
Can I change my CSIL Linux/UNIX environment?
Yes.
See the shell commands that are applicable for viewing and editing your default and preferred command shell environment and shell variables. You can almost always override the pre-set defaults that we have set up for you.
For example, if your default UNIX command shell is 'bash', you could search the internet for web pages that match phrases like: 'setting bash environment variables'.
The Basics of Using Linux/UNIX Systems in CSIL
Where do I save my files on CSIL Linux systems?
One and only one place - SFU Home:
/home/username/sfuhome/
For Linux users in CSIL, your "home directory" (aka CSIL Home) is set to /home/username/ by the system. This space is actually not located on any physical workstation in CSIL, but is automatically mounted for you at login time from a file server. This way, no matter which CSIL Linux system that you login to, you will have the same /home/username/ directory. Note that this (CSIL Home) is NOT the place to save your files.
Your CSIL Home directory (/home/username/) is local to the CSIL network and it may be ERASED without advanced notice. If you wish to save any of the files and directories you create while in CSIL on a permanent basis, you should save them to your SFU Campus home (aka SFU Home) directory.
So, please save all your files to your SFU Home directory, which is mounted as
/home/username/sfuhome/
Special notes: please always logout CSIL VDI session to ensure your files on SFU Home are properly synchronized/saved.
How do I access SFU Campus home directory?
When you log in to CSIL Linux computer, it is automatically mounted as /home/username/sfuhome in your CSIL home.
If for some reason it is not mounted, you should see a file called "@_This_IS_NOT_your_real_sfuhome_README.txt" in the placeholder sfuhome/ directory. Open a terminal session from Applications accessories on Gnome panel, and enter the command
mount.sfuhome
If that still does not mount your SFU home, please email helpdesk about it, with the name of the CSIL Linux computer and any error messages, and please try another CSIL Linux computer.
How do I check my space usage on a CSIL Linux/UNIX system?
Due to resource limitations, a quota is set on each user's storage space. If the quota is reached for a user, there are undesirable consequences, including inability to log on to the CSIL Linux GUI and possible data loss.
There are three quotas you need to be aware of as a CSIL Linux user:
1) The quota for your CSIL home is 4GB (gigabyte) as of September 2024. This space is meant only for cache and other system files, not your own work, which should be in the SFU home.
2) The quota for your SFU home is 10GB (gigabyte) as of Fall 2024 You may find the current quota information about SFU homes on the IT Services site.
3) The quota for your CSIL scratch application space is a total of 16GB for storing your:
- Virtual Box machines
- Vagrant files
- Android SDK for Android Studio use
If you notice any of the above listed applications failing with what seems like a full quota and you know that your CSIL home has enough space, please check your usage in your /usr/shared/CMPT/VirtualBox/$username and remove some of the unneeded images and/or files.
To see exactly how much space you're using, login to a CSIL Linux system:
- ssh to a CSIL Linux system (see the remote access section) , OR
- login to a CSIL Linux workstation
→ if you fail to login at the GUI screen, press the key combination Ctrl-Alt-F1 to switch to a Virtual Console where you should still be able to login. Remember to logout of it!
Once logged in with your account, check if your quota is exceeded with the command:
quota -v
You should see your storage usage information.
To know more about which directories use the most storage, use this command at the Linux prompt:
du -sh * .??* | sort -h
This lists the files and directories (folders) in your current directory, including your mounted SFU home space, sorted by the amount of space they occupy.
Note how much space the "sfuhome" folder occupies - if this number is close to the quota, please archive some of your files to other locations (not your CSIL home) and clean out some space.
You may also use the following commands at the Linux prompt:
cd
find . -size +10M -ls
This shows files larger than 10MB. Remove any such files you no longer need.
Where do I save intermittent/scratch files on CSIL Linux systems?
1. Each CSIL user has a dedicated scratch space on network, which is:
/usr/shared/CMPT/scratch/username
This is shared storage on network.
The default quota for each user is 16GB.
All data under "/usr/shared/CMPT/scratch/" are treated as disposable; there is no backup.
All data under this folder will be deleted at the end of each semester, or sooner if the volume fills.
2. Some CSIL workstations with powerful GPUs have additional local storage for fast scratch. As of Fall 2024, every workstation in ASB 9804, SECB 1010 & 1013 has one extra hard disk. People share this local scratch storage on each workstation:
/scratch
These workstations have their own "/scratch"; these are local to each workstation - not network storage.
Each user should create her/his own sub-folder under this one (on individual workstation).
None of the data stored under any "/scratch" folder is backed up.
All data under "/scratch" on any CSIL workstation will be deleted at the end of each semester.
If any "/scratch" volume is full, helpdesk will delete everything under this one to free up space - without advanced notice.
How do I share files with other Linux/UNIX users?
You can share files publicly, semi-publicly, to a group, or to a specific list of UNIX users.
Sharing files Publicly
Create a directory in your home directory which is eXecutable and Readable by all. The goal of this is to let every UNIX user list the file names in your directory without letting any other users write anything to your directory. Each file that you store in this directory should be readable by everyone, but likewise should not be writeable. For your directory then, enter the commands:
mkdir public
chmod a+rx public
chmod go-w public
This creates the sub-directory 'pub' in the current directory. Next, you can create files in this directory, and change their permissions to:
chmod a+r [one or more filenames]
chmod go-w [one or more filenames]
Sharing files Semi-Publicly
The goal here is similar to the above instructions, but here you create a directory in your home directory which is eXecutable but NOT Readable or Writeable by either the 'group' or 'others'. This approach prevents other UNIX users from listing the names of your files within your directory unless you tell them the file names. This presumably prevents them from listing or copying your file's contents. This solution however has two big security holes. It is known as "Security through obscurity", and is therefore NOT SECURE. If any other UNIX user can guess your directory's "hidden" file names, or someone who knows the names passes them on to other users, they can read or copy your files, just like users you do give your file names to:
mkdir semi_public
chmod a+x semi_public
chmod go-rw semi_public
Sharing files with a Group
Here the goal is to share files only with the UNIX group. For undergraduate students in CSIL this isn't terribly helpful, as every undergraduate student taking a CMPT course is in the same group:
mkdir group_files
chmod o-rwx group_files
chmod g-w group_files
chmod g+rx group_files
Sharing files with a Specific List of UNIX Users
This is not available on all UNIX systems, but is available on the Ubuntu systems in CSIL. This facility is known as Access Control Lists (ACLs), and these are set via the setfacl command. You could view the currently set ACL for a file or directory with the getfacl command. Check the man pages on your system or search the Web for tutorials on how to set ACLs. Here is a simplistic example:
mkdir secret_files
setfacl -m mask:rwx secret_files
setfacl -m user:[allowed_username]:r-x secret_files
To see your ACL settings enter:
getfacl secret_files
How do I remotely access (remote login) CSIL Linux (Ubuntu) systems via SSH?
To access one of CSIL Linux CPU servers: from any modern secure shell client, enter the full name of one of our CSIL Linux CPU servers as hostname, use a special port number, and SFU Mail credentials. e.g.
ssh -p ## linux_cpu_server.csil.sfu.ca
or from CSIL Windows, run (windows key + r) :
c:\progra~1\putty\putty.exe -P ## linux_cpu_server.csil.sfu.ca
To find out more, please login to see our CSIL Linux CPU server FAQ page.
Besides the CSIL Linux CPU servers, we have many CSIL Linux workstations configured for remote access during the COVID-19 Pandemic. Please login to see our special remote access page.
Special note while you use MobaXterm:
Please always start an SSH session - "Start local terminal" will NOT work.
How do I remotely access CSIL Linux (Ubuntu) systems with GUI (X Window) interface?
From Fall 2023, we provide CSIL VDI for remote access with GUI interface. This is the recommended way to access CSIL Linux with GUI interface.
To provide more support for our users since the COVID-19 Pandemic, many CSIL Linux physical workstations are now configured for remote access with GUI (xrdp) using a Remote Desktop (RDP) client.
To know more, please login to see our special remote access page.
May I install software for my course work on a CSIL workstation?
No.
Your account will be suspended if you attempt installing software in CSIL without permission.
There are two reasons for this policy:
- The School is responsible for the licensing of all installed software in the lab. Many applications that are downloadable from the Internet aren't free - they require licenses.
Installing licensed software without a valid license is a criminal offence in Canada. - Many applications make assumptions about where they place their files during the installation process and which environment variables they adjust. Installing software which makes unexpected assumptions can destroy your working environment.
You could make requests for the installation of course related applications (including shareware/freeware) through the instructors. Your instructors will make the request to the CS Technical Staff, who will examine the feasibility of all requests (cost, compatibility, network security, disk space requirements, etc.). Please make your requests as early as possible.
Please check out the special permission section of this page for more options.
What is the current Linux desktop in CSIL?
We have configured GNOME Classic as the default desktop on CSIL Linux systems. The only supported desktop in CSIL is GNOME. We have customized this to suit our environment. If there is any issue, please email helpdesk asap.
May I customize my Linux environment and use it on all CSIL Linux systems?
All of the Linux workstations in CSIL are now providing a "roaming profile" - which means that the user's desktop and program settings will follow the user between the workstations.
The switch depends on user authentication against SFU Active Directory on those Linux workstations. If you cannot login to these Linux workstations binding to ADSFU, please do the following:
launch a web browser
navigate to URL: https://my.sfu.ca/ChangePassword
change your password
wait for 15 minutes
This process ensures SFU AD could recognize your account from Linux. You may try to login after the wait.
** Please note that you should only store your data under your campus home directory, which is mounted as
/home/username/sfuhome/
How do I know if I am using a roaming profile on CSIL Linux workstations?
While login to a CSIL Linux workstation, run "df -h" on shell (terminal) and you should see a line like this in the output:
rcg-nfs02.its.sfu.ca:/csilhomes 500G 13G 488G 3% /cs/ugrad
If this line (the numbers may be a little different) exists, you are using roaming profile.
If you noticed that you are not using the roaming profile, please email helpdesk.
Some of the applications I need for my course project need to be run as root/sudoer, what should I do?
First of all, do not run any application on any regular CSIL workstations or CSIL Servers as root/sudoer. Warning: If you attempt to run as root/sudoer on regular CSIL hosts, your account will be suspended.
Please contact your instructor/professor to find out which hosts to use.
If your course project needs root/sudoer access, CS Helpdesk will create a special set of systems for this course project upon instructor's request.
May I have root access to CSIL Linux systems?
No.
You don't have root access to regular CSIL systems and you won't be granted this access.
You may have root access on certain special hosts; please contact your instructor/professor for details.
If your course project needs root/sudoer access, CS Helpdesk will create a special set of systems for this course project upon instructor's request.
Warning: If you attempt to run as root/sudoer on regular CSIL systems, your account will be suspended.
May I have sudo access to CSIL Linux systems?
No.
You don't have sudo access to regular CSIL systems and you won't be granted this access.
You may have sudo access on certain special hosts; please contact your instructor/professor for details.
If your course project needs root/sudoer access, CS helpdesk will create a special set of systems for this course project upon instructor's request.
Warning: If you attempt to run as root/sudoer on regular CSIL systems, your account will be suspended.
Special Notes on specific software packages
Which editors I could use on CSIL Linux computers?
We provide many editors for CSIL Linux users:
a simple terminal based editor with syntax highlighting; available on all Linux systems
a simple graphical editor with syntax highlighting; available on all Linux workstations
vi/vim
a terminal based editor with syntax highlighting and other features; a bit cryptic; available on all Linux/UNIX systems
a tool is terminal based and graphical; syntax highlighting and many other features; a bit cryptic but worth the effort
code (Visual Studio Code)
a feature-rich source-code editor; cross platform development tool; resource consumption might be on the heavy side. If you prefer to use Visual Studio Code for CMPT course work, check out this How-to guide.
These tools are all free to use - even on your own personal Linux box.
Please note: The Sublime Text editor is no longer available in CSIL due to licensing issue. If you like to evaluate it and purchase it later on your own, please visit vendor's site.
When you launch Eclipse for the first time, you need to specify the workspace path. The default is something like this and it is WRONG!
/home/username/workspace
As you can see, it is not on the SFU Home.
The following folder is the best workspace for all CSIL users:
/home/username/sfuhome/eclipse/workspace
To run Eclipse on a CSIL Windows system, please click here.
CSIL Linux Servers
CSIL Linux CPU Servers | for CMPT students remote access (remote login) CSIL Linux systems off-CSIL |
CSIL GitLab server | (retiring) please contact course instructor for more information. |
Remote Linux Terminal Server for cmpt471: cs-vnl.csil.sfu.ca | Used for: CMPT-471 |
CPU server for special courses: gemini.csil.sfu.ca | (Not available due to maintenance.) for special courses |
Did we answer your questions? If not, please check out our CSIL Linux Known Issues Page for additional information.
Go back to main CSIL FAQ page.
Please checkout the best practices to contact helpdesk when you need further assistance.