Linux Guide
Associate Study
Material By
Deepak
1. Linux Introduction
Why Linux?
• OpenSource.
• Community support.
• Heavily customizable.
• Most Servers runs on Linux.
• DevOps most of the tools implements on Linux only.
• Automation
• Secure.
Architecture of Linux
Diffrent Linux distros
➔ Popular Desktop Linux OS
• Ubuntu Linux
• Linux Mint
• Arch Linux
• Fedora
• Debian
• OpenSuse
➔ Popular Server Linux OS
• Red Hat Enterprise Linux
• Ubuntu Server
• Centos
• SUSE Enterprise Linux
Most used Linux distros currently in IT industry.
RPM based:- RHEL & Centos
Debian based :- Ubuntu Server
Diffrence between RPM based and Debian based.
From user’s point of view, there isn’t much difference in these tools. The RPM and DEB formats
are both just archive files, with some metadata attached to them. They are both equally arcane, have
hardcoded install paths and only differ in subtle details. DEB files are installation files for Debian
based distributions. RPM files are installation files for Red Hat based distributions. Ubuntu is based
on Debian’s package manage based on APT and DPKG. Red Hat, CentOS and Fedora are based on
the old Red Hat Linux package management system, RPM.
DEB or .deb (Debian based softwares)
DEB is the extension of the Debian software package format and the most often used name for such
binary packages. DEB was developed by Bedian.
Example: Google chrome software
Package name: google-chrome-stable_current_amd64.deb
Installation: dpkg -i google-chrome-stable_current_amd64.deb
RPM or .rpm (Red Hat based softwares.)
It is a package management system. The name RPM variously refers to the .rpm file format, files in
this format, software packaged in such files, and the package manager itself. RPM was intended
primarily for Linux distributions; the file format is the baseline package format of the Linux
Standard Base. RPM was developed by Community & Red Hat.
Example: Google chrome software
Package Name: google-chrome-stable-57.0.2987.133-1.x86_64.rpm
Installation: rpm -ivh google-chrome-stable-57.0.2987.133-1.x86_64.rpm
NOTE: You will also encounter diffrent commands, packages and service names while using
both kinds of distros.
2. Basic Commands
➔ Open Terminal
➔ Know where you are? Present Working Directory
➔ Create a directory/folder in your home directory.
➔ Change your current working directory to linux-practices(Go to linux-practices
folder).
➔ Create some more directories and list them with “ls” command.
➔ Create some empty files with “touch” command and list them.
➔ Reconfirm your location in your system.
Absolute path and Relative path
What is a path?
A path is a unique location to a file or a folder in a file system of an OS. A path to a file is
a combination of / and alpha-numeric characters.
What is an absolute path?
An absolute path is defined as the specifying the location of a file or directory from the root
directory(/). In other words we can say absolute path is a complete path from start of actual
filesystem from / directory.
Some examples of absolute path:
/home/imran/linux-practices/
/var/ftp/pub
/etc/samba.smb.conf
/boot/grub/grub.conf
If you see all these paths started from / directory which is a root directory for
every Linux/Unix machines.
What is the relative path?
Relative path is defined as path related to the present working directory(pwd). Suppose I am located
in /home/imran and I want to change directory to /home/imran/linux-practices. I can use relative
path concept to change directory to linux-practices and also devopsdir directory.
If you see all these paths did not start with / directory.
➔ Creating directories in devopsdir directory with absolute and relative path.
➔ Copying files into directory.
➔ Copying directories from one location to another.
➔ Moving files from one location to another.
➔ Removing files and directories.
VIM EDITOR
➔ Install vim editor.
➔ Open up a file in vim editor
➔ Hit i to enter into insert mode
=> type few lines => hit Esc
=> type :wq
=> Enter.
➔ Read file with cat command.
VIM EDITOR
VI Visual display editor
VIM Visual display editor improved
This is command mode editor for files. Other editors in Linux are emacs, gedit
vi editor is most popular
It has 3 modes:
1 Command Mode
2 Insert mode (edit mode)
3 extended command mode
Note: When you open the vim editor, it will be in the command mode by default.
Command Mode:
gg To go to the beginning of the page
G To go to end of the page
w To move the cursor forward, word by word
b To move the cursor backward, word by word
nw To move the cursor forward to n words (SW)
nb To move the cursor backward to n words {SB)
u To undo last change (word)
u To undo the previous changes (entire line)
Ctrl+R To redo the changes
VY To copy a line
nyy To copy n lines (Syy or 4yy)
p To paste line below the cursor position
p To paste line above the cursor position
dw To delete the word letter by letter {like Backspace}
X To delete the world letter by letter (like DEL Key) I·,
dd To delete entire line \' --
ndd To delete n no. of lines from cursor position{Sdd) ,:::::,-
<::..
I To search a word in the file UA "( _).,
I •. :::., - --
Extended Mode: ( Colon Mode)
Extended Mode is used for save and quit or save without quit using "Esc" Key with":"
Esc+:w To Save the changes j"-', \"" ../
Esc+:q To quit (Without saving)
,
...-- .. .....
Esc+:wq To save and quit
r '\
Esc+:w! To save forcefully /_-·.. \.>-:/
Esc+wq! To save and quit forcefully f_l '\7
Esc+:x To save and quit
Esc+:X To give passw or d to the file and remove password
Esc+:20(n) To go to line no 20 or n
Esc+: se nu To set the line numbers to the file !
Esc+:se nonu To Remove the set line numbers
Is command options
Types of files in linux.
Symbolic links
Symbolic links are like desktop shortcuts we use in windows.
Create a soft link for /var/log directory in our current working directory.
4. Filter & IO redirectioncommand.
Grep
grep command is used to find texts from any text input.
Passwd file: stores information about all the users in the
system
➔ Finding line which contains word as “root” from /etc/passwd file.
➔ Linux is case sensetive, Root is diffrent that root. Ignoring case in grep with -i option.
➔ To display things except the given word use -v option
Filter Commands
• less: Displays file content page wise or line
wise. Ex: less /etc/passwd
• more
• head
• tail
• cut
• sed
I/O redirection
➔ Create a file named devopstools with below content.
➔ Search for text “tech” replace it with “tools” and redirect output to a new file.
➔ Appending another output in same file with “>>” .
➔ Redirecting only error to a file “2>>”.
➔ Redirecting all the output to a file “&>>”.
Piping
So far we've dealt with sending data to and from files. Now we'll take a look at a
mechanism for sending data from one program to another. It's called piping and the
operator we use is ( | ). What this operator does is feed the output from the program on
the left as input to the program on the right.
Find
5. Users & Groups.
USERS
Types of user
TYPE EXAMPLE USER ID (ID) GROUP ID HOME DIR SHELL
(GID)
ROOT root 0 0 /root /bin/bash
REGULAR imran, vagrant 1000 to 60000 1000 to 60000 /home/username /bin/bash
SERVICE ftp, ssh, 1 to 999 1 to 999 /var/ftp etc /sbin/nologi
apache n
Passwd file
Group file
2. /etc/group
The file /etc/group stores group information. Each line in this file stores one group entry.
Group name, group password, GID, group members
ADD USER, SET PASSWORD & SWITCH TO USER
ADD USER, GROUP & USER INTO GROUP
DELETE USER & GROUP
3. The /etc/shadow file
This file stores users’ password and password related information. Just like /etc/passwd file,
this file also uses an individual line for each entry.
1. Username
2. Encrypted password
3. Number of days when password was last changed
4. Number of days before password can be changed
5. Number of days after password must be changed
6. Number of days before password expiry date to display the warning message
7. Number of days to disable the account after the password expiry
8. Number of days since the account is disabled
9. Reserved field
USER & GROUP cheatsheet
COMMANDS DESCRIPTION
useradd Creates user in RedHat
adduser Creates user in ubuntu
id Shows user info
groupadd Creates group
usermod -G grpnam usrname Adds user to group
passwd set/reset password
userdel -r removes user with home dir
groupdel removes group
last shows last login in system
who who is logged into system
whoami username
lsof -u user List files opened by user
6. File permissions
Changing Permissions - Symbolic Method
• To change access modes:
o chmod [-OPTION] ... mode[,mode] filel directory ...
• mode includes:
o u,g or o for user, group and other
o + - or = for grant, deny or set
o r , w or x for read, write and execute
• Options include:
o - R Recursive
o -v Verbose
o --reference Reference another file for its mode
• Examples:
o chmod ugo+r f i l e : Grant read access to all for f i l e
o chmod o-wx dir: Deny write and execute to others for dir
Changing Permissions - Numeric Method
• Uses a three-digit mode number
o first digit specifies owner 's permissions
o second digit specifies group permissions
o third digit represents others' permissions
• Permissions are calculated by adding:
o 4 (for read)
o 2 (for write)
o 1 (for execute)
• Example:
o chmod 640 myfile
7. Sudo
sudo gives power to a normal user to execute commands which is owned by root user.
Example shown below:
If a user has already full sudoers privilege, it can become a root user anytime.
➔ sudo -i changes from normal user to root user
Note: User imran was already a sudo user with full privilege.
➔ Adding user sam in sudoers list.
➔ Like a user a group can also be added into sudoers list.
➔ Every time you enter sudo command it asks your own password. To turn that off use
NOPASSWD in sudoers file.
➔ Changing to any other user with “su -” command.
➔ Become a root user from sam user login.
8. Software Management.
➔ Download package from internet.
For CentOS
To install Tree
# curl https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm -o tree-1.6.0-
10.el7.x86_64.rpm
# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
To install httpd
# curl https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm -o httpd-
2.4.6-95.el7.centos.x86_64.rpm
# rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
Due to Dependencies its failing and it will be installed one we install all the dependencies. But what if we have
Hundreds of dependencies, And that can be solved easily by other package managers like YUM .
repos. d/ directory. It reads each YUM Repository configuration file to get the information required to
download and install new software, resolves software dependencies and installs the required RPM package
files. YUM Repository configuration files must: be located in /etc/yum.repos.d
# ls /etc/yum.repos.d/
Shows the usage of YUM Command with options
# yum –help
To Update all your packages
# yum update
To install httpd
# yum install httpd -y
To remove httpd
# yum remove httpd -y
For Ubuntu
# wget http://archive.ubuntu.com/ubuntu/pool/universe/t/tree/tree_1.7.0-3_amd64.deb -o tree_1.7.0-
3_amd64.deb
# dpkg -i tree_1.7.0-3_amd64.deb
We have seen YUM Like that for Ubuntu we have a package manager ‘apt’.
The sources. list file is a key factor in adding or upgrading applications to your Ubuntu installation. This is
also used by your system for system updates. The file is basically the roadmap for your system to know where
it may download programs for installation or upgrade.
# cat /etc/apt/sources.list
Shows the usage of apt Command with options
# apt --help
To update all your package lists
#apt update
TO search for a <package> apache2
# apt search apache2
To install apache2
# apt install apache2 -y
To remove apache2
# apt remove apache2 -y
Commands Description
wget link to download file from
link
curl link access file from link
curl link -o access file and store
outputfile o/p to a file
REDHAT RPM commands
rpm -ivh {rpm-file} Install the package rpm -ivh
mozilla-mail-1.7.5-17
.i586.rpm
rpm -ivh --test
mozilla-mail-1.7.5-17
.i586.rpm
rpm -Uvh {rpm-file} Upgrade package rpm -Uvh
mozilla-mail-1.7.6-12
.i586.rpm
rpm -Uvh --test
mozilla-mail-1.7.6-12
.i586.rpm
rpm -ev {package} Erase/remove/ an rpm -ev mozilla-mail
installed package
rpm -ev --nodeps Erase/remove/ an rpm -ev --nodeps
{package} installed package mozilla-mail
without checking for
dependencies
rpm -qa Display list all rpm -qa
installed packages rpm -qa | less
rpm -qi {package} Display installed rpm -qi mozilla-mail
information along
with package version
and short description
rpm -qf Find out what package rpm -qf /etc/passwd
{/path/to/file} a file belongs to rpm -qf /bin/bash
i.e. find what
package owns the file
rpm -qc Display list of rpm -qc httpd
{pacakge-name} configuration file(s)
for a package
rpm -qcf Display list of rpm -qcf
{/path/to/file} configuration files /usr/X11R6/bin/xeyes
for a command
rpm -qa --last Display list of all rpm -qa --last
recently installed rpm -qa --last | less
RPMs
rpm -qpR {.rpm-file} Find out what rpm -qpR
rpm -qR {package} dependencies a rpm mediawiki-1.4rc1-4.i5
file has 86.rpm
rpm -qR bash
CentOS_8 Commands
DNF https://www.linuxtechi
.com/dnf-command-
commands
examples-rpm-
cheatsheet management-fedora-
linux/
dnf --help Show the help
dnf search PACKAGE search from available
repositories
dnf install To install the package
PACKAGE -y
dnf install To Install httpd
httpd -y package
dnf install vim -y Installing VIM Editor
dnf reinstall PACKAGE To reinstall PACKAGE
dnf remove PACKAGE To remove PACKAGE
dnf update update all packages
dnf update PACKAGE update only a package
dnf grouplist List all available
Group Packages
dnf groupinstall Installs all the
"GROUPNAME" packages in a group
dnf repolist List Enabled dnf
Repositories
dnf clean all Clean dnf Cache
Additional package
repository that
provides easy access
dnf install epel- to install packages
release for commonly used
software.
dnf history View History of dnf
dnf info package name Shows the information
of package like
version, size, source,
repository etc
https://access.redhat.
com/sites/default/file
YUM Commands s/attachments/rh_yum_c
Cheatsheet heatsheet_1214_jcs_pri
nt-1.pdf
yum –help Shows the help
yum search PACKAGE Search from
available
repositories
yum install PACKAGE -y To install the
package
yum install httpd -y To install httpd
package
yum install vim -y To install VIM
Editor
yum reinstall PACKAGE To reinstall the
PACKAGE
Yum remove PACKAGE To Remove PACKAGE
yum update Update all
packages
yum update PACKAGE To Update specific
package
yum grouplist List all available
Group packages
yum groupinstall Install all the
“Group Name” packages in a
group
Yum repolist List Enabled YUM
repositories
yum install Additional package
repository that
epel-release provides easy access
to install packages
for commonly used
software.
yum clean all Clean yum cache
yum history View history of
yum
Shows the
information of
Yum info PACKAGE NAME package like
version, size,
source, repository
etc.
Ubuntu20 Commands
apt https://itsfoss.com/ap
commands t-command-guide/
cheatsheet
apt search PACKAGE search from available
repositories
apt install To Install Packages
PACKAGE -y
apt install apache2 -y To Install apache2
apt reinstall PACKAGE To reinstall PACKAGE
apt remove PACKAGE To remove PACKAGE
apt update update all packages
apt update PACKAGE update only a package
apt grouplist List all available
Group Packages
apt groupinstall Installs all the
"GROUPNAME" packages in a group.
apt repolist List Enabled apt
Repositories
apt clean all Clean apt Cache
apt history View History of apt
apt show package name Shows the information
of package like
version, size, source,
repository etc
9. SEARCH
10. LOGIN (SSH AND TELNET)
11. FILE TRANSFER
12. DISK USAGE
13. DIRECTORY TRAVERSE
14. SERVICES
Centos8
$ sudo systemctl start httpd # Starts httpd on centos
$ sudo systemctl stop httpd # Stops httpd on centos
$ sudo systemctl restart httpd # Restart services
$ sudo systemctl status httpd # shows the current status
$ sudo systemctl reload httpd # Reload conf
$ sudo systemctl enable httpd # starts httpd at boot time
$ sudo systemctl disable httpd # stops httpd at boot time
$ sudo systemctl is-active httpd # shows whether the service is
active or not
$ sudo systemctl is-enabled httpd # shows whether the service is
enabled or not
Ubuntu20
$ sudo systemctl start apache2 # Starts apache2 on ubuntu
$ sudo systemctl stop apache2 # Stops apache2 on ubuntu
$ sudo systemctl restart apache2 # Restart service
$ sudo systemctl reload apache2 # Reload conf
$ sudo systemctl enable apache2 # starts apache2 at boot time
$ sudo systemctl disable apache2 # stops apache2 at boot time
$ sudo systemctl is-active apache2 # Shows whether the service is
active or not
$ sudo systemctl is-enabled # Shows whether the service is
apache2 enabled or not
15. COMPRESSION / ARCHIVES
16. PROCESS RELATED
17. SYSTEM
18. HARDWARE
19. STATISTICS