Transcript Linux
Linux
for Beginners
Bahador Bakhshi
[email protected]
1
Agenda
Introduction
Linux Distributions
Quick Start
Files
Process
Shell & Programming
Networking
Security
2
Introduction
This course is for beginners
What you learn
General introduction to GNU/Linux OS
Basic operations in Text Mode
A little about administration
What you don't learn learn
In depth Linux structure
Kernel Internal
System programming
…
3
Introduction
Security perspectives
OS role
Govern any things in computer
Has privilege
Insecure OS
insecure machine
4
Introduction
Why Linux?
Free
Open Source, Freedom, GPL (GNU Public License)
No charge
More secure
OS for computer scientists
Open source
You see what happen, no hidden things
You need it
5
History
1960
1974 in AT&T
Free Unix
Free BSD
POSIX
MULTICS, Multiplex Computing System
Unix is commercial
MINIX
Simple and free UNIX liked OS, by Tanenbaum
6
History
1991
Linus Torvalds
Free kernel for i386
5 Oct 1991 in newsgroup of minix
1994
Linux 0.0.2
Linux 1.0
Linux Logo
TUX
7
Now
linux-2.6.26, www.kernel.org
Multitasking, SMP, multi-user
Wide range of CPUs
Popular OS in universities and academic
research
Platform of network services
Open source
Wide range of network protocols and services
Platform for embedded development
8
Linux Distributions
What required
OS, kernel, kernel-space
Applications, user-space
Interfaces and basic commands
Applications
Services
Kernel by Linus and world wide developers
Most of applications by GNU project
GNU : GNU is Not Unix
Our operating system: GNU/Linux
9
Linux Distributions
Red Hat & Fedora
SuSE
Most updated and user friendly
Supported by Novel
UBUNTU
Stable and commercial support
New fast growing user friendly Debian based
Debian
Most complete distribution, the Sarge
10
Linux Distributions
Bluecat
LinuxPPC
Linux to run on PowerPC machines
Astaro
Linux for embedded systems
Security applaince, Firewall, Antivirus
Live CD
KNOPPIX, PHLAK, Karamad, ...
11
Quick Start
Access to Linux
Remote
Local
Remote
Through network
Telnet, insecure and disabled now
SSH, Secure Shell Protocol
Local
Linux installation or Live CDs
12
Quick Start
System powered on
BIOS
POST
Bootloader, Grub or LiLo
Initialize Hardware
Kernel extraction
Kernel
Initialize Hardware
Kernel data structures initialization
13
Quick Start
System Services
Configured Services
network and network services
User interface
Graphical
Called as X window system, it is a service
KDE, GNOME
Text, Shells
Switch between them: ALT-F? and CTRL-ALT-F?
Screen 7 is the X
14
Text vs. X
Contrary to MS Windows
X isn't integrated into OS
X is just an application
Shell
Interactive program, interface between user and kernel
Real power of Linux, specially for hackers and
administrators
Bash (Brown Again Shell), tsh, csh
We study Linux Text Mode and just applications
not Kernel
15
Bash
After successful login, you get shell prompt
$ : user
# : root
There are two privilege in user space
reset: reinitialize your screen
Linux is case sensitive
Autocomplete: commands and file names
Commands in $PATH
File name in specified path
16
Bash
Linux is multiprocess, even in command line
Process can be run in background
Widecards
* : string
?: a char
[]: regular expression
IO redirection to file
>
: overwrite,
>>
: append
<
: Read input
2> : overwrite by stderror
17
Bash
IO redirection to a process
| : pass output of command as input to other command
One of the main features in UNIX-like systems
Simple commands which are piped together
Some short-cuts
CTRL-D: Logout, End of file
CTRL-L: Clear Screen
CTRL-C: Stop
CTRL-Z: Suspend
CTRL-E: cut to end of line
CTRL-U: cut to start of line
18
Bash
History for each user
Use arrow keys
!# : # command
!<start_of_command>: last command started
with ...
CTRL-R: search history
history: see command history
.bash_history: saved $HISTSIZE number of
command
19
Linux/shell vs. Windows/cmd
Path separator: / not \
File extensions have NOT any meaning
Hidden file started by ., .bashrc, .bash_history
End of file is CTRL-D
New line is \n not \n\r
Options are passed by - or --
All system configurations are saved in text files
20
Help & Doc
Command's builtin helps: -h or --help
Man pages
Info pages
Documents in /usr/share/doc
Info pages
are NOT complete
Easy to use
info <command name> or pinfo <command name>
whatis
21
Help & Doc
Man pages
Most complete documentation in Linux
Very technical
Title, description, see also and files
man <man-category> file/command/function
searched in <MANPATH>
manpath : find out the <MANPATH>
configuration file: /etc/manpath.conf
man -k topic : search topic in titles = apropos
man -K topic: search topic in body
22
Mans
/usr/share/man
man1: User commands
man2: System libraries
man3: Programming libraries
man4: Special files
man5: File formats
man7: Misc. network protocols, ...
man8: System administration
Other mans: Application man pages
23
Internet documents
The Linux Documentation Project:
www.tldp.org
Tutorials
HOWTOs
Software home pages
Mailing lists
Everything is googlized
24
Files
Everything in Linux is file, if it is NOT process
Files can be
Regular file
Directory
Links
device
named pipe, ...
Uniform interface, open, read/write, close
You should fully understand the Linux file structure
25
Files
Files system
User Space, a tree structure
Kernel Space, VFS and file system depended drivers
What file systems in Linux
Kernel configuration depended
ext2, ext3, jfs, nfs, fat, ntfs, ...
man fs
mkfs.ext2, mkfs.ext3, mkfs.fat, ...
make file systems
26
File system structure
/boot
/bin
Binary files, basic utilities, required for boot
/sbin
Bootloader, bootloader config and kernel images
System binary, system management tools
/lib
Shared libraries and kernel modules
27
File system structure
/etc
/home
Home directory of users
/root
System configuration, passwords, service config
Home directory of root
/var
log files, message files, lock files, www root, ...
28
File system structure
/tmp
/usr
Like the /, /usr/include additional directories bin, sbin,
/opt
temporary files, socket files, pipe files
Additional softwares
/proc
Virtual file system, process and system information
Kernel Interface in user space
29
File system structure
/dev
/sys
Device files, block devices, character devices
Kernel interface for hardwares info and management
/mnt and /media
Add new media and file system into your file system
New media has its own file system (kernel level
driver)
mount -t vfat /dev/sdb1 /mnt/flash
30
File System Navigation
List directories
ls
Options: -a -l -h -R
Walking in file system
Absolute vs. Relative path
cd <path>
cd , cd –, cd ~
pushd
popd
31
File System Navigation & Modification
Find where are you, absolute name
Make directory
pwd
mkdir <directory path>
Remove empty directory
rmdir <directory path>
32
File System Navigation & Modification
Remove file
rm <file name>
rm -r <directory>
-i: ask you, -f: force
Secure remove
shred
-n: number, -z: fill zero
shred -n 10 -z -v /tmp/xxx
33
File System Navigation & Modification
move file and directories
mv <source> <destination>
copy file and directories
cp <source file> <destination file>
cp -r <source directory> <destination directory>
What is the rename?
34
File System Navigation & Modification
Links (like windows short-cuts)
Two Types
Hard
ln <target file> <link name>
Soft
Hard (only for files) and soft (files & directories)
ln -s <target name> <link name>
View Links
readlink <link name>, ls -l
35
File Commands
Commands
File as an object
File content
Alert timestamp of file
Creation, access and modification
touch <file name> : update mod. time to now
-a : access time, -m : modification time
-t : set time
create new file
36
File Commands
Find files and directories
find <path> <regular expression>
name, size, time, type, permission, ...
find /etc/ -name *.conf -exec cp '{}' /home/backup ';'
Where are commands and man pages
whereis <command name>
Which command is executed
which <command name>
37
File Commands
Archive
Create: tar -cf <archive name> <directory>
Extract: tar -xf <archive name>
File Compression
gzip <file name>, gunzip <zipped file name>
best compress: -9
bzip2 <file name>, bunzip2 <zipped file>
z* commands
zcat, zdiff, zless
38
File Security
File permissions
ls -l
-rwxrwxrwx: -(user)(group)(other)
In binary format -421421421
r: read, w: write, x: execute
39
File Security
More file permissions
t: sticky bit. Others can not delete your file even with “w”
permission
Chang permissions
s & g: Set User/Group ID. Change process id to file owner
chmod [ugo][+-=][rwx/binary] file
Attributes: undelete, fill zero, append only, ...
lsattr, chattr
40
File Security
Default permission
umask: Invert of your permission
umask 077: no one else can do anything
Chang owner and group (only root)
chgrp <group> file
chown <user> file
41
File Commands
Most important file type in Linux: Text
Config files
Log files
Source codes
File type
file <file name>
Binary files
xpdf, gimp, openoffice2, firefox, konqueror, xdiv,
kde, ...
42
File Commands
What is in a file
cat <file name>
tac <file name>
View large files
more <file name> or pipe: ls -l | more
less <file name> or pipe: cat test.txt | less
View not all of file
tail -# <file name>, -f is continues
head -# <file name>
43
File Commands
Search content of file
grep <regular expression> <file name>
-i: ignore case, -v: invert result, -r: recursive
Count file words
wc <file name>
-l: Lines, -w: words, -c: characters
Difference between files
diff <file 1> <file 2>
-Nu : create patch
44
Editors
Again Text editor
Text Editors
X editors
text mode editors
Again text mode editors
X editors
gedit, kwrite
kate
45
Editors
emacs
Old and very user friendly
Menu based, F10
mcedit
A part of the midnight commander
Menu based, easy to use
vi & vim (vi improved)
Difficult
Editor for programmers
46
vim
Three modes
Input mode: edit your document
Command mode: simple commands
Line input mode: special and advance commands
Input mode
Go from command mode by i or a
Type what you want
Arrow keys, del, home, ... are workings
47
vim
Command mode, the default mode
Go from input mode by: Esc
Navigation commands
home : start of line
end : end of line
b : previous word
w : next work
:# : go to line #
48
vim
Edit commands
x : cut a char
#dw : cut # of words
#dd : cut # of lines
d$ : cut to end of line, d^ : cut to start of line
#yw : copy # of words
#yy: copy # of lines
p : past
u : undo
49
vim
Line Input mode
Go from command mode by :
:w : save file, :w! : force to save
:e <filename> : open file
:q : quit, :q! : force to quit
:! <any command>: run shell command
/<str> : search str
:#1,#2 s/<str1>/<str2> /[c,g]: replace
50
Process
In Linux, every things is file, if it is NOT a process
Linux is multi-user, multi-process, time-sharing
OS
Each process has a unique id and a parent (tree)
Process can be run in
Foreground
Background
Foreground is default
51
Process
Background
& at end of command
suspend (CTRL-Z), send resume signal (bg <job
id>)
Process id is NOT job id
fg <job id> : Job come from background to
foreground
jobs : list of jobs
52
Process
Scheduling, running in background
at time -f <file name>, atq, atrm <id>
cron, crontab, man crontab
nohup <command> & : Leave job running
Priority
less nice is better
nice -# <command> : priority is decreased by #
renice # <process id> : Change process priority
53
Process
Monitoring
ps : list of your process
ps aux : all running process, with command Lines
top : top processes
ksysgaurd : Graphical monitor, more than process moni
pstree : tree of running processes
/proc/process-id : kernel information about processes
54
Process
Process and Signal
Signals are notifiers
Kernel and users can send signals
skill -<signal number> <process id>: user send signal
skill -L : List of signals
man 7 signal : Full description of signals
kill <procees-id>, kill -9 <process-id> : Kill the process
killall -9 <process name> : kill the process
55
System Information
uname -a, -r : Kernel name
dmesg : Kernel messages
/var/log/ : system logs (syslogd) and application's
messages
date : date of system
uptime : How long time your system is alive?
iostat <device name>: usage of cpu and device
users, who, w : list of on-line users
finger <user-name>/@<computer name>: remote users
info
56
Shell
Executable applications
Binary programs: usually in developed in C
Scripts: shell, perl, awk, python, ...
Shell (Bash)
After login, your shell executes (/etc/passwd)
.bash_profile
/etc/bashrc
.bashrc
57
Bash
Environment Variables
Save, parameters and some configurations
Some important variables
$PATH: Path of commands
$HOME: Your home directory
$SHELL: Your shell address
$PS1: Bash prompt
$USER: Your login name
58
Bash
Define a variable
View variable content
echo $ABC
Define variable for subsequent shells
ABC=“This is test”
export AAA=“This is test”
View all variables
printenv
59
Bash Script
Bash programming language
Variables
User defined variables
Built in variables: $0, $?, ...
All commands
60
Bash Script
Control statements
for <name> in <word>; do <commands>; done
case <variable> in x) <command>;; y) <commands>;;
esac
if <condition>; then <commands>; elif <condition> then
<command>; fi
while <condition>; do <commands>; done
Example
vim test.sh
#!/bin/bash
for file in *; do
if grep -q $1 $file; then
echo “Found in file: “ $file
fi;
done;
exit 0
chmod +x test.sh
./test.sh test
62
C programming
GCC: GNU Compiler Collection
C, C++, Java, ADA, Fortran, ...
Tools to build C or C++ program
cpp: C preprocessor
cc: C Compiler
c++: C++ Compiler
as: The assembler
ld: Linker
gdb: GNU debugger
63
C programming
All steps altogether
gcc -o <output name> <input C>
Intermediate results
-c : Just compile, with out linking
-S: Produce assembly code
-E: Just process the file
-g: Add debugging options
64
C programming (make & Makefile)
Open source world
Automate compiling large packages: make &
Makefile
target : req1 req2 ....
Rule1 to make target
Rule2 to make target
req1 : req11 req12
Rule11 to make req1
....
65
Installing programs
Binary format
Distribution depended
Red Hat & Fedora: rpm & yum
Debian based (Ubuntu): apt-get
Source code
./configure
make
make install
Networking
Most of network protocols are implemented in Linux
Application layer: bind, apache, sendmail, ssh, ftp, NFS
Transport layer: TCP, UDP
Network Layer: IP, IPX, ATM
Physical layer: PPP, Ethernet, 802.11
Configurations
On line
Config files
67
Networking
Network interface (Ethernet)
ifconfig eth0 10.10.10.1 netmask 255.255.255.0 up
Red Hat: /etc/sysconfig/network & networking
Ubuntu: /etc/network/interfaces
Routing
route add -net 192.168.0.0/24 gw 10.10.10.2 dev eth0
/etc/sysconfig/networking & network
68
Networking
DNS
/etc/resolve.conf
/etc/hosts
Host Name
hostname
/etc/hostname
IP suit: ip route, ip address, ip route ....
69
Networking
Monitoring and Troubleshooting
List of all connections: netstat -an
Find route and its MTU: tracepath, traceroute
Check liveness: ping
Your machine ip traffic: iptraf
Sniffer: tcpdum, ethereal
Scanners: nmap, amap, ...
70
Using from Network
Remote shell: telnet, ssh
Remote file transfer: ftp, lftp, sftp, scp
Web: lynx, firefox
Download: wget, crul, prozilla
Mail: fetchmail, mail
DNS resolver: nslookup, dig
Windows NetBIOS: smb* commands
71
Services
Linux services
Network services: web, mail, ...
Local services: udev, alsa
Startup scripts
/etc/init.d/<sevice name>, /etc/init.d/apache2
Configuration files
/etc, /etc/apache2
72
Security
Security
Local: File security, Process security
Network
SELinux: role-based access control and
sandboxing
Each user
Has its own unique ID, /etc/passwd
Belong to some groups, /etc/group
73
Security
Process security
Each process has its own user id
You can kill only your processes, root can do
anythings
74
Network Security
Statefull Firewall: iptables
IDS: snort
VPNs
IPSec: openswan
SSL: stunnel, openswan
Secure services
SSH, SSL, Tunneling
75
Now is the end time of my presentation
But it is the start of your Linux learning