Wednesday, 31 October 2018

Introduction to Linux

Linux

Open source operating system
Windows and OS X are mainly used on Desktops
Used not only on personal computers, but web servers, electronics
Android is a variation of Linux (they removed some stuff and customized it for mobile)

●      Tired of privacy issues in Windows/OS X?
●      Learn to manage web servers or build electronics/robots?

Different “versions” of Linux, one of the most popular is Ubuntu

1.    Download Ubuntu
2.    Install VMware Player for Windows 64-bit
a.    Remove all USB drives from computer
3.    If you are installing on other computer, burn ISO to DVD
4.    Create a new virtual machine
a.    Select ISO
                    i.     Ubuntu
                   ii.     bucky
                 iii.     bacon123
b.    Store virtual disk into a single file
c.     Customize Hardware > Memory: 2-4 GB (2048 MB)
                                           i.        too much will take away from your host OS
5.    Finish & Play

Ctrl+Altto switch to main OS



Basic architecture of Linux
simpleDiagram.png

Bottom layer is hardware
●      1’s and 0’s

Next layer is the kernel
●      Core operating system
●      Software that tells hardware directly what to do

Top layer are Applications or user processes
●      Programs that you use and make
●      Browser, games, Text editor…
●      When making programs, you don’t need to tell CPU how to work



Kernel decides which app is allowed to use the CPU at any time
Manages memory for each app
Computer with a single core CPU, it can appear several apps are running at the same time
What’s actually happening is each app uses CPU for small amount of time, process pauses, and then another one does
CPU can switch between processes so fast they appear to be running simultaneously by humans
Kernel manages all of these operations (also for multi-core CPU’s)

Kernel also gives each app it’s own chunk of memory
That way, programs don’t mess with each other when running



Basic Commands

Shell window (or Terminal) is a program where you can type commands

Search computer > Terminal > Open
Right Click > Lock to Launcher

Right click > Profile > Profile Preferences
Cursor shape > I-beam

 

You can also right click and unlock things you don’t want


name@host:path$


●      Make a file called Story on the Desktop
●      Add some text in it

Display current working directory

➔   pwd


Display the contents of a file

➔   cat Desktop/Story

 

List all contents in directory (and detailed list)

-a shows dot files (hidden files) usually used as configuration files

➔   ls

➔  ls -l

➔  ls -a

➔   ls -la




Navigating

Move directories (parent, child, home)

➔  cd ..

➔  cd Other

➔   cd


Create and delete directories

➔  mkdir Other

➔  mkdir Tuna

➔   rmdir Tuna




Working with Files

Create a file. If it already exists, doesn’t change it

➔   touch Story

➔   touch Bacon


Delete (remove) a file

➔   rm Bacon


Copy a file

➔   cp Story Story2


Move a file

➔   mv Story2 Other/Story2


You can also rename a file using

➔   mv Story Tuna


Display content

➔   echo hey now




Other Commands

Search - print lines from Story that include the word bacon

➔   grep bacon Story


See the difference between two files
➔   diff file1 file2

To change password
➔   passwd

You can use variables to store info

➔  NAME=Bucky

➔   echo $NAME


Clear terminal, all data is still stored

➔   clear

➔   echo $NAME


Learn more about a commands

➔   info echo




Shell Tips
You can use the up arrow to cycle through previous commands

Editors
When working on servers or over a network, you don’t have GUI text editors



You can send the results of a command using

➔   ls > Crap


Will overwrite it if it already exists

➔   pwd > Crap


To append

➔   pwd >> Crap


For a list of programs (processes) running

➔   ps




Permissions

File permissions

➔   ls -l


permissions.jpg

r = readable
w = writable
x = executable

First is user permissions (who owns the file)
Second is permissions for group members (more on groups later)
Last are permissions for anyone (global)

To change permissions

chmod options permissions filename


Give group permission to read the file (to remove use - instead of +)

➔   chmod g+r Tuna


Set permissions for:
●      u - user
●      g - group members
●      o - other people (from the outside world)

chmod u=rwx,g=rx,o=r myfile


Easier format

➔   chmod 754 filename


Here the digits 7, 5, and 4 each individually represent the permissions for the user, group, and others, in that order.
●      4 stands for "read"
●      2 stands for "write"
●      1 stands for "execute"
●      0 stands for "no permission”

7 is the combination of permissions 4+2+1 (read, write, and execute)



Compress files

➔   gzip Crap


Decompress them

➔   gunzip Crap.gz


For multiple files

tar cvf archive.tar file1 file2

➔   tar cvf Sample.tar Story Crap


●      c = create mode
●      v = displays output in terminal (leave it out if you don’t want to display file names)
●      f = file options (argument after this must be file name of tar)

To extract files

➔   tar xvf Sample.tar


x = extract mode



Linux Directory Overview

●      Click “Files” icon on launcher bar
●      Choose “Computer” on left

Verify Checksum

●      Download file
●      Navigate to that directory in Terminal

●    algorithm filename

○   md5sum ubuntu-11.10-dvd-i386.iso

○   sha1sum ubuntu-14.04-server-amd64.iso

●      Compare this against the official checksum (look at this from different computers)

○   sha256sum ubuntu-14.04-server-amd64.iso | grep c7bf55250ca7a7ad897fd219af6ef3d4768be54fb3e2537abb3da8f7f4ed8913

○      red means they are the same



●      Make new profiles
●      Change background transparency

Compress files

➔  gzip Crap


Decompress them

➔  gunzip Crap.gz


For multiple files

tar cvf archive.tar file1 file2

➔   tar cvf Sample.tar Story Crap


●      c = create mode
●      v = displays output in terminal (leave it out if you don’t want to display file names)
●      f = file options (argument after this must be file name of tar)

To extract files

➔  tar xvf Sample.tar


x = extract mode



Installing Stuff

apt - Advanced Package Tool (Linux built in software installer)

sudo apt-get update

java -version

sudo apt-get install default-jre


When you download something

●      Download from internet
●      Extract file

# Navigate to bin and run shell script

cd

cd pycharm-xxx/bin

bash pycharm.sh




Users

●      A user is anyone who uses the computer
●      Most users have restricted access to what they can do
○      This is usually a good thing, keeps them from deleting important system files
●      There is always a super user named “root” that can do anything
●      Regular users are sometimes able to perform commands they usually couldn’t by running the command as the super user

○    sudo cat shadow


Note: Even if you are the owner of a server, you usually log in as a non-super user. This help to prevent you from accidentally doing anything bad. 

Every file on Linux is owned by a User and a Group

cd

cd Desktop

ls -la


permissions | owned by user | group


# To add a new user

sudo useradd mom

sudo passwd mom




Groups

By default, whenever a user is created they belong to a group with the same name

# Create a new group

sudo groupadd girls

sudo usermod -a -G girls mom


-g will edit their primary group
-a -G just adds (appends) them to another group (keeps their primary)

To delete a user

sudo userdel mom




Linux Directory Overview

# Go to home

cd


# Go up into the root directory

cd ../..

 

ls

 

# Most of your configuration files are in here

cd etc

cat passwd


These are all the users for the system

login name | password | user ID | group ID | real name | home directory | shell path


Password symbols
x  - password stored in separate shadow folder (they are encrypted, never stored in clear text)
*  - can’t log in
::  -  no password required to log in

# won’t work

cat shadow


sudo cat shadow

cat passwd


●      If you ever want to add a new user manually, just add a new line (or delete to remove user) from this file
●      Need to be super user (sudo) to edit
●      There are easier ways to do this, and you can just add users from the command line, but this is what happens behind the scenes



Groups

Groups are a handy way you can set permissions for a bunch of users at once

cat group


group name | password | group ID | additional members




SSH

●      If you want to connect to a computer remotely (from another computer) then you can use SSH
●      Buy some server online and they send you default login information
●      By default we use a password, but passwords can be easily hacked
●      Instead we can use a SSH key (almost impossible to crack)

First, we need to login to the server with the default credentials:

ssh root@host


It will make us change the default password, just pick a normal password for now…

Close the terminal, that’s all we needed to do for now



On our own computer, generate our keys (we will have private key on our computer, and put public key on server)

ssh-keygen -t rsa

Press enter twice (you can protect with pass phrase if you want)

# Add our public key to the server

ssh-copy-id root@host


●      Type your password to verify it’s you and then your public key will be added
●      Close the Terminal and log back in using

ssh root@host


We don’t need a password anymore because the key private saved on our computer get verified by the server’s public key



For extra security, disable the password login (only our SSH key has access)

sudo nano /etc/ssh/sshd_config


# Modify this line

PermitRootLogin yes

PermitRootLogin without-password


CTRL+X > y > Enter

# Put changes into effect

reload ssh


If anyone else tries to login now (even if they guess the password right)it will say access denied



SFTP

sftp root@104.236.7.12


# Go to master directory on server

cd ../..

ls -la


# The homepage for your website is in this directory

cd var/www/html

ls -la




To upload files to the server

# Move back into html

cd html

put Desktop/index.html

Now go open and browser and view:

# To upload a whole directory

mkdir Books

put -r Desktop/Books





To Download Files

# Download a file from the server

get remoteFile localFile

get index.html Desktop/index.html


# To download an entire directory (and all contents)

cd ..

ls

get -r html Desktop






Study Guide for CISSP Exam 2026

  How to use this guide CISSP questions reward sound security leadership judgment : protect the mission, establish governance, understand ri...