Change the permissions of files or directories. For example, changing permissions on a ssh key file for the current user.

chmod 400 ~/.ssh/id_rsa

If you’re not logged in as root, use sudo when permissions denied. more info

+x is used to make a file executable.

chmod +x


Change owner and group.

# change owner to gilfoyle
chown gilfoyle

# change owner and group to gilfoyle
chown gilfoyle:gilfoyle


# -iname for case-insensitive
find / -iname "*string*"

# . for current dir and sub dirs
find . -iname "*string*"

# output to "less" filter
find / -iname "*string*" | less

# use -type l for symlinks
find . -type l -ls

This example will use a wildcard search for all files that contain “krita” and move them to a temp directory for archival or deletion.

# find and exec mv command
find / -iname '*krita*' -exec mv {} /home/gilfoyle/temp/ \;

Enter man find for the manual.


Use the ln -s command to create a soft link (symbolic link). The syntax is the same for both file and directory symlinks.

ln -s /path/to/file /path/to/symlink

ln -s /path/to/dir /path/to/symlink

Create a soft link named in the current directory to a file named in the /home/gilfoyle/source directory. e.g.,

ln -s /home/gilfoyle/source/

Verify the link with ls -l The output should contain: -> /home/gilfoyle/source/

The same syntax applies when creating directory of folder symlinks. Simply replace the file path with a folder path.


Besides making single directories, create directory structures using the -p flag.

For example, create with nested public_html directory.

mkdir -p /var/www/

In this example, create a src folder with multiple nested folders using curly braces. e.g., js and css nested directories.

mkdir -p src/{js,css}


Copy files and folders over ssh. For example, download home directory for user gilfoyle from machine into the current directory.

scp -r gilfoyle@ .

Upload folder and its files recursively. For example, with the root account, upload extracted Drupal devel module to /var/www/modules using port 8022.

scp -P 8022 -r devel root@

Download folder and its files recursively. For example, with the root account, download the devel module into the devel folder within the current directory using port 8022.

scp -P 8022 -r root@ devel

ssh server

Install openssh server

apt-get install openssh-server

Unlocking the root account

usermod root -p password

# enter new password to unlock root
sudo passwd root

Check status

service ssh status

Configure openssh server

Using Nano

nano /etc/ssh/sshd_config

Allow root password login

# change
PermitRootLogin prohibit-password

# to
PermitRootLogin yes

Disallow root password login

# change
PermitRootLogin yes

# to
PermitRootLogin prohibit-password

Restart the service for any config changes to take affect

service ssh restart


Retrieve information on files including permissions in both number and letter format.

➜  stat config
  File: config
  Size: 292             Blocks: 0          IO Block: 4096   regular file
Device: 2h/2d   Inode: 7881299347901219  Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-07-27 09:03:56.943000400 -0400
Modify: 2018-07-27 09:03:56.943000400 -0400
Change: 2018-07-27 09:25:51.771887000 -0400
 Birth: -


Allows a user to run a command as another user, usually root. For a user to do this, they need to be added to the sudo group.

usermod -aG sudo gilfoyle

Logout Ctrl + D and test new user sudo access. Substitute with the server IP address.

ssh gilfoyle@

# list files in the /root directory
sudo ls -la /root

After sudo is enabled for the new user account, root password login can be turned off in the sshd_config file.

To prevent unable to resolve host message when using sudo, update the hosts file to contain the hostname for For example, what is after @ in the command line prompt. e.g., gilfoyle@vpshostname.

sudo nano /etc/hosts localhost vpshostname


Download package lists from repositories and update them to get information on the newest versions of packages and their dependencies.

apt-get update


Fetch new versions of packages existing on the machine if APT knows about these new versions by way of apt-get update.

apt-get upgrade

Does the same job as apt-get upgrade, plus it will also intelligently handle the dependencies, so it might remove obsolete packages or add new ones.

apt-get dist-upgrade


These examples use gilfoyle for the username.

Add a new user.

adduser gilfoyle




Shortcut Keys Window Alt + F7 + arrows to move the window Win + arrows to snap move/resize the window Win + Shift + arrows to snap move the window between displays GTK+ Resources GTK+ Development Blog The GTK+ Inspector


bash history Remove and prevent duplicates in bash history Step 1 - remove existing duplicates in .bash_history and create a new temporary file named unduped_history. # change to the home directory cd ~/ # remove duplicates and create unduped_history nl ~/.bash_history | sort -k 2 -k 1,1nr| uniq -f 1 | sort -n | cut -f 2 > unduped_history Step 2 - copy the unduped_history and overwrite .