Hoffman2:Profile

From Center for Cognitive Neuroscience
Revision as of 01:00, 29 September 2014 by Elau (talk | contribs) (Updated paths to account for switch from "home" to "project')

Jump to: navigation, search

Back to all things Hoffman2

In UNIX systems, there are certain configuration files that get executed every time you login. If you are using the Bash shell (default), you have a file called .bash_profile which is processed when you log in. In order to make the FMRI toolset available to you on Hoffman2 and so you can work well with others, we recommend that you follow the instructions in the Basics section. Read Extras for some bells and whistles.


Basics

You account has one last thing that needs to be edited before being usable.

  1. SSH into Hoffman2
  2. Use your favorite text editor to edit the file ~/.bash_profile
vim
  1. VIM
    • $ vim ~/.bash_profile
  2. Insert these lines at the bottom of the file
    • Type G - (capital G) to go to the end of the file
    • Type A - (capital A) to go to the end of the line and enter insert mode
    • Type ENTER - to insert a newline
    • Type or paste in the lines below.
    • source /u/project/FMRI/apps/etc/profile
      umask 007
  3. Save the file by typing
    • ESC + ":wq" + ENTER
  4. Log out of Hoffman2 and the next time you log in, everything will be set for you to start working.
emacs
  1. Emacs
    • $ emacs ~/.bash_profile
  2. Insert these lines at the bottom of the file
    • Use the arrow keys to scroll the cursor down to the bottom of the document and add a newline.
    • Type or paste in the specified lines below.
    • source /u/project/FMRI/apps/etc/profile
      umask 007
  3. Save the File by typing:
    • CTRL+x, CTRL+c
  4. Log out of Hoffman2 and the next time you log in, everything will be set for you to start working.
nedit/gedit
  1. NEdit
    • $ nedit ~/.bash_profile
  2. Use the menu and Insert these lines at the bottom of the file
    • source /u/project/FMRI/apps/etc/profile
      umask 007
    Click the Save menu button.
  3. Log out of Hoffman2 and the next time you log in, everything will be set for you to start working.


Curious?

For those that care, what you are doing is asking the computer to execute the file

/u/project/FMRI/apps/etc/profile

every time you login. This file modifies your PATH variable so you have access to the FMRI toolset.

The last line

umask 007

makes it so that any files you create will not allow "anyone" outside your group to read, write, or execute files and directories you make. This does not automatically grant read, write, and execute privileges to you and your group though.


Extras

Collaboration

By default, any files and directories you create will not necessarily have permissions that allow your group to write on them. This can be a problem if other people are supposed to build on data you processed. We have a script (fix_perms.sh) that will kindly find any files you own in a specified directory that don't have read/write/execute permissions for the group and make it so they do.

You can build this script into your bash profile so that every time you log into Hoffman2, it will run in the background. It is also recommended that you run this script at the end of jobs to make results immediately available to collaborators.

Adding the line

fix_perms.sh -q /u/project/[GROUP]/data &

to the end of your bash profile will run the permission fixer on your group's common data directory in the background quietly each time you log in. Make sure to replace [GROUP] with the name of your Hoffman2 group (e.g. mscohen, sbook, cbearden, laltshul, jfeusner or mgreen).


Colors

You can change the content and color of your command prompt by editing your bash_profile. There is a great explanation of how to do this here.

Some of the content you can include in the command prompt:

Current time
You can format this however you want. This helps when looking back through your Terminal to find when you made certain changes to files.
Current working directory
So you always know where you are in a filesystem and don't need to constantly retype pwd.
Username
Who you are. Helpful if you are logged into multiple servers under multiple accounts and need help keeping track.
Host
The name of the computer you are logged into. This also helps you know where you are at all times.

Line to add to your bash profile

export PS1="\[\e[0;31m\]\h\[\e[1;37m\]:\[\e[1;34m\]\w\n\[\e[1;37m\]\D{%Y-%m-%d-%H-%M-%S} \[\e[22;32m\]\u \$ "

Resulting prompt (on a black background)
HOST:CURRENT WORKING DIRECTORY
DATETIME IN ISO8601 FORMAT USERNAME $


Example Bash Profile

#.bash_profile

 # Get the aliases and functions
 if [ -f ~/.bashrc ]; then
         . ~/.bashrc
 fi

 # Source to use FMRI Apps
 source /u/project/FMRI/apps/etc/profile

 # Umask (Revoke Permissions)
 umask 007

 # Collaborative permissions (Replace collabDirectory with your project Directory and Uncomment
 #fix_perms.sh -q /u/project/sbook/data/collabDirectory &

 # Happy Colors
 export PS1="\[\e[0;31m\]\h\[\e[1;37m\]:\[\e[1;34m\]\w\n\[\e[1;37m\]\D{%Y-%m-%d-%H-%M-%S} \[\e[22;32m\]\u \$ "

# Fix for QRSH when consolidating job output files
alias qrsh='qrsh -o /dev/null'


Changing Passwords

Use the command below to change password. It will prompt you for your old password, and then the new password.

$ passwd
Changing password for user joebruin.
Please enter your current password:
Please enter your new password:


Password-less Logins

The steps below will show you how to login without typing your password every time!

On your local computer:

a@A:-> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/a/.ssh/id_rsa): [ENTER]
Created directory '/Users/a/.ssh'.
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /Users/a/.ssh/id_rsa.
Your public key has been saved in /Users/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Now use ssh to create a directory ~/.ssh as user on Hoffman2. (The directory may already exist, which is fine):

a@A:~> ssh user@hoffman2.idre.ucla.edu mkdir -p .ssh
user@hoffman2.idre.ucla.edu's password: [PASSWORD]

Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:

a@A:~> cat .ssh/id_rsa.pub | ssh user@hoffman2.idre.ucla.edu 'cat >> .ssh/authorized_keys'
user@hoffman2.idre.ucla.edu's password: [PASSWORD]

Now you can login to hoffman from local computer without a password!

a@A:~> ssh user@hoffman2.idre.ucla.edu


External Links