Transcript UNIX
Unix Administration
Guntis Barzdins
Linux System Administration
SYS ADMIN TASKS
Setting the Run Level
System Services
User Management
Network Settings
Scheduling Jobs
Quota Management
Backup and Restore
Adding and Removing software/packages
Setting a Printer
Monitoring the system (general, logs)
Monitoring any specific services running. Eg. DNS, DHCP, Web,
NIS, NPT, Proxy etc.
Have you used UNIX before?
• Which OS did Apple choose
when it needed a stable OS layer
for its Mac OSX?
• Which OS made the biggest
impact to the online lives as you
know it today?
Process Manipulation
Once you run a program (e.g. vi, myprog,...), that program
will suspend the terminal you called it in (the terminal will not
be receiving input from you).
You can start the program in the background to avoid this:
myprog &
You can suspend a program that is running and send it to
background, if you already started it:
Ctrl-z (to suspend)
bg (sends the suspended program to the background)
ps (show running processes)
top (monitor running processes)
kill (kill processes)
& (send process to background)
bg (send process to background)
fg (get process from background)
Ctrl+c (terminate process)
Ctrl+z (suspend process)
Intrusion Detection System
(IDS)
Tripwire – is a file integrity-checking program for
UNIX/Linux operating systems
Software that alerts you when important files change
Tripwire keeps a hash value for each designated file
When a file is altered/deleted, tripwire will have a
new hash value that is different than the original
For implementation referrer to:
http://www.cert.org/security-improvement/implementations/i002.02.html
Tripwire tutorial in a slide
Initial setup
download / build / install it
modify policy file (e.g. remove unnecessary files)
# vi /etc/tripwire/twpol.txt
generate policy file
# twadmin –create-polfile /etc/tripwire/twpol.txt
build initial database
# tripwire –init
check periodically
# tripwire –check
reconcile differences (e.g. software installation)
# tripwire –update –accept-all –twrfile report_file
Linux Security
LINUX Firewall
Linux Security
SELinux
Malicious or broken software can have root-level access to the
entire system by running as a root process.
SELinux (Security Enhanced Linux) provides enhanced
security.
Through SELinux policies, a process can be granted just the
permissions it needs to be functional, thus reducing the risk
SELINUX can take one of these three values
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - SELinux is fully disabled.
Linux Security
SELinux Configuration
Log files
On linux, you can go to /var/log
Depends on the application
Information shown in log files depend on the debug level you
defined
Linux System Administration
Configuring Disk Quotas
To implement disk quotas, use the following steps:
Enable quotas per file system by modifying /etc/fstab
Remount the file system(s)
Create the quota files and generate the disk usage table
Assign quotas
Linux System Administration
Configuring Disk Quotas
Enabling Quotas: Edit fstab to enable usrquota
LABEL=/1
/
LABEL=/boot
/boot
LABEL=/users
/users
LABEL=/var
/var
LABEL=SWAP-sda5 swap
ext3
ext3
ext3
ext3
swap
defaults
defaults
exec,dev,suid,rw,usrquota
defaults
defaults
11
12
12
12
00
Linux System Administration
Configuring Disk Quotas
Remounting the File Systems: Issue the umount command
followed by the mount command to remount the file system in which
quota has been implemented (umount /users;mount /users)
Creating the Quota Database Files: Use quotacheck command to
create quota.user file
quotacheck -cu /users
Assigning Quotas per User: assigning the disk quotas with the
edquota command (edquota <username>)
Disk quotas for user web_cc (uid 524):
Filesystem
blocks
soft
hard
/dev/sdb1
988612 1024000 1075200
inodes
7862
soft
0
hard
0
Linux Commands
Linux Filesystem Management
badblocks Used to search a disk or partition for badblocks.
(badblocks device) (badblocks hda)
df Shows the disk free space on one or more filesystems. (df –k, df -h)
du Shows how much disk space a directory and all its files contain.
(du <directory>, du –sk <directory>, du –sh <directory>)
fsck Filesystem check. Must not be run on a mounted file system.
(fsck <filesystem>)
Linux Commands
Linux Filesystem Management
sync Synchronize data on disk with memory. `sync' writes any data
buffered in memory out to disk.
mount Used to mount a filesystem. Complement is umount. (mount
<filesystem>, mount –a)
umount Unmounts a filesystem. Complement is mount. (umount
<filesystem>)
Native UNIX Backup Utilities
UNIX Systems include 3 core utilities that allow
you to backup files to tape or disk.
tar (very simple to use)
cpio (a bit more complex)
dump (most complex of the three)
Using the tar Utility for Backup
tar usage:
tar [x|c]vf [tape device name] [files or
directory]
Where:
x = extract from a tape
c = compress onto tape
(just like when we tar and untar regular .tar files)
Other UNIX Backup Utilities
cpio – has the ability to detect I/O errors during backup
that tar cannot detect. Also has the ability to do things
like specify wildcard patters during restore.
dump – very fast, detects I/O errors, allows you to
perform incremental backups.
TAR
CPIO
DUMP
Simplicity of Invocation
Very Simple
(tar c files)
Needs find to specify file names
Simple. Few Options
Recover from I/O errors?
None. Write your own utility
Resync Option on HP-UX will cause some data loss
Automatically skips over bad section
Backup special files
Later Revisions
Yes
Yes
Multi-volume backup
Later Revisions
Yes
Yes
Backup across network?
Using rsh only
Using rsh only
Yes
Append files to backup
Yes, (tar –r)
No
No
Multiple Independent Backups on Single Tape
Yes
Yes
Yes
Ease of listing files on the volume
Difficult, Must search entire backup
( tar –t )
Difficult, Must search entire backup
( cpio –it )
Simple, Index at front
( restore –t )
Ease and speed of finding a particular file
Difficult, No wildcards, Must search entire volume
Moderate, Wildcards, Must search entire volume
Interactive. Very easy with commands like cd, ls
Incremental backup
No
Must use find to locate new/modified files
Incremental of whole filesystem only, Mult. Levels
List files as they are being backed up
tar cvf 2>logfile
cpio –v 2>logfile
Only after backup with restore –t >logfile
(Dump can show % complete, though.)
Backup based on other criteria
No
Find can use multiple criteria
No
Restore absolute path names to relative location
Only by using chroot
Limited with cpio -I
Always relative to current working directory
Interactive decision on restore
Yes or No possible with tar –w
Can specify new path or name on each file
Specify individual files in interactive mode
Compatibility
Multiple platform
Multiple platform with ASCII header, not always
portable
Readable between some platforms, but cannot be
relied on
Primary usefulness
Individual user backup, transfer files between
filesystems
System backup, transfer files between filesystems
System backup
Volume efficiency
Medium, usually limited to 10k block size
Medium, usually only 5K block size, but can specify
larger size on some OSs
High, can usually specify up to maximum block size of
device
Wildcards on restore
No
Yes
Only in interactive mode
Simplicity of selecting files for backup from numerous
directories
Low, must specify each independent directory,
subdirectories included
Medium, find options
None, will backup one and only one filesystem
Specifying directory on restore get files in that
directory
Yes
No, must use "path/*"
Yes
Stop reading tape after a restored file is found
No
No
Will stop reading tape as soon as last file is found
Track deleted files
No
No
If you restore with –r, files deleted before last
incremental dump will be deleted.
Filesystem efficiency
Better
Worst (files get a stat from both find and cpio)
Best
Limit on path length
(Tests done with Solaris native utils 7/99.)
155 characters. Complains "prefix is greater than 155
characters." Gtar has slight workaround.
255 characters. Doesn’t complain. Just truncates
pathname to 255 char’s.
1056 characters.
Likelihood that file exists in TOC but not in archive
Low
Low
Medium (since TOC is made first)
Lost Root Passwd
If you have Lilo installed, type
LILI: linux init 1
Change the root passwd, reboot aga
If you have installed grub
Type ‘e’ to go to edit mode, add init 1 argument at the end
Boot with knoppix or single floppy linux
Mount the disk and change root passwd
Reboot !!
Linux System Administration
Linux Services
There are 113 deamons, Out of them, the following are most
widely used:
apmd : Power Management
autofs : Automount services
crond : Periodic Command Scheduler
cups : Common Unix Printing System
dhcpd : The DHCP server
dovecot : IMAP (Internet Message Access Protocol) and POP3
(Post Office Protocol) server
gpm : Mouse
httpd : Apache Web server
Linux System Administration
Linux Services
iptables : Kernel based Packet Filtering firewall
kudzu: Finds new Hardware
mysqld : MySQL server
named : BIND server
network : Networking
nfs : Network File Share
nfslock : NFS file locking
ntpd : NTP (Network Time Protocol) server
portmap : RPC (Remote Procedure Call) support
postgresql : The Postgresql Database Engine
Linux System Administration
Linux Services
sendmail : Sendmail Mail Server
smb : Samba Network Services
snmpd : Simple Network Management Protocol
squid : Squid Proxy Server
sshd : Open SSH and SFTP server
syslog : System Logging
xinetd : Provides support for telnet, ftp, talk, tftp etc.
ypbind : NIS Server
Automating Unix
Administration
You don’t want to spend the whole day making sure that all
servers/workstations and its services are fine
Use monitoring tools that can alert you for any problem in the
network
mon, nagios, cacti, angel
Create scripts to check the status of servers/services and use cron
to run it periodically
Mail the result to admin
#!/bin/sh
machine="sunfire"
down=
i=0
while [ $i -le 15 ]
do
sun=$machine"$i"
/usr/sbin/ping $sun > /dev/null
if [ $? -ne 0 ]
then
down="$down:$sun"
fi
i=`echo "$i+1" | bc -l`
done
Example script
if [ -n "$down" ]
then
echo $down | tr : '\012' | /usr/ucb/mail -s "DOWN machines" [email protected]
fi
exit 0
NFS Architecture
VFS layer hides differences between OS’s
It doesn’t matter what OS the client or server implements, UNIX
or Windows. As long as the file systems are compliant with the
file system model offered by NFS.
Operations on VFS are either passed to local FS
or to NFS Client, which handles files at the
remote server.
All client-server communication is done through
RPCs, with client and server stubs. Implemented
with either UDP or TCP.
NFS Architecture
Stateless vs. Stateful
V3
• Stateless protocol
• No worrying about server crashes
• Each request contains sufficient information to be
completely processed without regard to other requests.
V4
• Stateful protocol
• Easier cache consistency: server maintains information
on files as used by its clients.
• Server can do an RPC to a client – callback.
NFS (Network File System)
RCP request
Action
Idempotent
GETATTR
Get file attribute
YES
SETATTR
Set file attribute
YES
LOOKUP
File name search
YES
ACCESS
Check access
YES
READLINK
Read from symbolic link
YES
READ
Read file
YES
WRITE
Write to the file
YES
COMMIT
Fix server cache data to the disk
YES
CREATE
Create file
NO
REMOVE
Remove file
NO
RENAME
Rename file
NO
NFS (Network File System)
RCP request
Action
Idempotent
LINK
Create hard link
NO
SYMLINK
Create symbolic link
NO
MKNOD
Create special node
NO
MKDIR
Crate directory
NO
RMDIR
Remove directory
NO
READDIR
Read directory
YES
READDIRPLUS
Extended directory read
YES
FSSTAT
Get FS dynamic attribute
YES
FSINFO
Get FS static attribute
YES
PATHCONF
Get POSIX information
YES
NFS (Network File System)
Stateless protocol problems:
Local file systems have state.
Shared lock’s implemented by user space daemon
rcp.lockd
Performance problems, because all file system
modification commands should be fixed on disks
before RPC request can be positively answered. In
most cases it is 3 I/O operations.
In NFSv3 protocol there is asynchronous writes.
Implemented using cookies to control server state
during asynchronous writes.
FreeBSD NFS implementation
There are 3 type of leases:
Non-cache lease – define that all file system operations
should be take synchronously with server
Read cache lease – let client cache data, not allow to change
file.
Write cache lease – let client to cache write operations for
lease time. So if client cache write data, then this data will not
be written to the server synchronously. When lease time
coming to the end client will try to get another lease, but if it’s
not possible, then data have to be written to the server.
FreeBSD NFS implementation (read cache lease)
Server
Client A
Read sys. call
Read req. + lease
Read sys. Call
(from cache)
Answer
Read req.
(cache miss)
Lease timeout
Read sys. call
ctime the same cache valid
Read sys. Call
(from cache)
Answer
Read cache lease
for client A
Time
Lease expired
Read lease req.
Answer with
same ctime
Read req.
(cache miss)
Answer
Lease timeout
Client B
Read req. + lease
Answer
Client B added to lease
Read sys. call
Read sys. call
Read req.
(cache miss)
Answer
Lease timeout
FreeBSD NFS implementation (write cache lease)
Server
Client B
Write cached lease
Write cached lease
for client B
Lease update
Answer
(write cache lease)
Get record
lease
Answer
(write cache lease)
Write system call
Write system call
(cached leaved records)
Write cached lease
req. before previous lease
expired.
System call
Lease timeout
Lease expiration
Stopped for a
moment because
of records
Write_slack seconds
After last records
record
Lease expired
answer
record
Time
answer
FreeBSD NFS implementation (non-cache lease)
Client A
Read sys. call req.
Read req.
(from cache)
Read req. + lease
Time
Read cache lease
for A client
answer
Read req.
(miss cache)
answer
Lease timeout
Read sys. call req.
Client B
Server
Lease expired
Get write cache lease
Write sys. call req.
Write sys. call
(async write cached)
Lease request
Cleanup req.
record
record
Read sys. call req.
(non-cache lease
mode)
Answer (non-cache lease)
Read req.
Read data
answer
Release msg. answer
Get write cache lease
Write cached
data to server
Write sys. call req.
Answer (non-cache lease)
record
answer
Synchronous
Writes wihout cache
Starting up NFS
There are three key things you need to start on Linux to make NFS
work.
/usr/sbin/rpc.portmap
/usr/sbin/rpc.mountd
/usr/sbin/rpc.nfsd
These things should start up automatically at boot time.
The file that makes this happen is "/etc/rc.d/rc.inet2"
rpcinfo -p localhost
program vers proto
100000
2
tcp
100000
2
udp
100005
1
udp
100005
1
tcp
100003
2
udp
100003
2
tcp
port
111
111
679
681
2049
2049
portmapper
portmapper
mountd
mountd
nfs
nfs
Exporting File System
To make parts of your file system accessible over the
network to other systems
The /etc/exports file must be set up to define which of the local
directories will be available to remote users and how each is used
# sample /etc/exports file
/home/yourname 192.168.12.1(rw)
/master(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub (ro,insecure,all_squash)
/pub/private (noaccess)
stop and restart the server
# etc/rc.d/init.d/nfs stop
# etc/rc.s/init.d/nfs start
37
The NFS Server
Started though rc script:
/etc/rc.d/init.d/nfs
Must be started after:
/etc/rc.d/init.d/portmap
Uses these RPC daemons in /usr/sbin:
rpc.nfsd – main component of NFS system
rcp.mountd – handles mount requests
rpc.quotad – allows for quota enforcement via NFS.
All of which are started in the nfs rc script when the system starts
/etc/exports – the main server configuration file
Above utilities are part of knfsd package .rpm package on
Linux.
/etc/exports
Contains information about the directory paths and partitions that
are sharable and hosts they can be shared with.
i.e. “Any host from .rutgers.edu can access the /home/documents
directory on my server”
Entry format:
/dir/to/export client1(permissions) client2
(permissions)
Sample entry:
/tmp iti.rutgers.edu(rw) 185.14.237.4(ro)
Need to run exportfs to inform NFS server process about
changes in /etc/exports:
> /usr/sbin/exportfs –a (exports all entries)
The NFS Client
Requires knfsd-clients .rpm package on Linux.
Necessary services started from:
/etc/rc.d/init.d/nfslock
RPC daemons in /sbin handle file locking between client and
server:
rpc.locked
rpc.statd
All are started from the nfslock rc script automatically
Allows clients to mount remote file systems either using the
mount command or by placing an entry in the /etc/fstab
file.
Local and remote file systems accessible on
an NFS client
Server 1
Client
(root)
(root)
export
. ..
vmuni x
Server 2
(root)
usr
nfs
Remote
people
mount
Remote
s tudents
x
s taff
big jon bob . . .
mount –t nfs Server1:/export/people
mount –t nfs Server2:/nfs/users
mount
users
ji m ann jane joe
/usr/students
/usr/staff
SMB
SMB is Microsoft’s protocol to share files and printers
Also renamed CIFS (Common Internet File System)
Client/Server, no location transparency
Not the same as Samba: an open source implementation of SMB primarily
found on UNIX systems (Linux)
SMB usually runs on NetBIOS (naming + sessions + datagram)
NetBIOS + SMB developed for LAN use
A number of other services run on top of SMB
In particular MS-RPC, a modified variant of DCE-RPC
Authentication for SMB handled by the NT Domains
suite of protocols, running on top of MS-RPC
NT-Domain
MS-RPC
SMB
NetBIOS
TCP/IP
To know more: Timothy D Evans, NetBIOS, NetBEUI, NBF,
NBT, NBIPX, SMB, CIFS Networking
http://timothydevans.me.uk/nbf2cifs/nbf2cifs.pdf
Samba Services
File sharing.
Printer sharing.
Client authentication.
SMB Protocol
Request/response.
Runs atop TCP/IP.
E.g., file and print operations.
Open close, read, write, delete, etc.
Queuing/dequeing files in printer spool.
Network Booting
No need for harddisk(or harddisk with Linux) on
every host
High level work flow
The system boots up, may be with floppy (could be
with hard disk also)
Sends dhcp request for IP number, gets one
Mounts the root file system over NFS
Requirements for Network
Booting
Setup an LAN infrastructure
Need to setup nfs server
Need to setup dhcp server
Build a kernel image for network booting
Setup an LAN infrastructure
Ethernet
Cable
Your m/c to be booted
Hub
Ethernet
Cable
NFS server
Your host, NFS server and DHCP server should be on
same LAN
Setup nfs server
• Edit /etc/exports file before starting the nfs server.
• / 10.114.7.115(rw,no_root_squash)
• This will export all files with root r/w to host
10.114.7.115
• Save your exports file and from the prompt execute exportfs
command
• Start the nfs server (nfs daemon)
• E.g. /etc/rc.d/inid.d/nfs start
Setup dhcp server
Add in your /etc/dhcpd.conf before starting the dhcp server.
Set the correct MAC address in /etc/dhcpd.conf as follows:
subnet <subnet address e.g.10.3.31.0> netmask 255.255.255.0 {
}
subnet 10.10.10.0 netmask 255.255.255.0 {
host master {
hardware Ethernet <Mac address of your Ethernet card>;
fixed-address <IP address of your machine e.g.10.10.10.1>;
option root-path <your root path>”;
}
}
Save your /etc/dhcpd.conf file
start the dhcpd dameon by “/etc/rc.d/init.d/dhcpd start” command
Build a kernel image for network
booting
Linux Kernel compilation steps:
Assumptions: machine x86 (i386); boot loader lilo.
Get plain vanilla kernel from www.kernel.org
Explode it into a directory (better if can do it in /usr/src/) => tar -zxvf linux-2.x.xx.tar.gz
Optional: create a symbolic link ln -s linux-2.x.xx linux
cd to linux directory
cd /usr/src/linux or cd /usr/src/linux-2.x.xx
Select the components support by make menuconfig or make xconfig - save the
configuration
Select IP:BOOTP support from Networking options
In File system -> Network File System -> Select
Do
NFS File system support and
Root file system on NFS
Make dep bzImage
Make modules modules_install
Build a kernel image for network
booting…
Copy the /usr/src/linux/arch/i386/boot/bzImage
to /boot
Do mkbootdisk with new kernel as argument
Optional take a coffee or tea break ?
Just imagine if one day...
Your CEO announces:
• Company is changing name from "Windoze" to "UsefulNix"
• TOMORROW!
Your "small part":
• Update the company website* to reflect that!
Can you deliver this in time?
*: About 20,000 html files.
Demo (1/2)
- UNIX vs. Window
• Task 1 : Open a file. Find occurrences of "Windoze".
Windows: use Ctrl-F at any text editor.
UNIX: grep -l Windoze fileName
• Task 2 : Find all files in folder A containing "html".
Windows: Arggghhhh!!! Open all files and check?
UNIX: find A -type f | xargs grep -l Windoze
Demo (2/2)
- UNIX vs. Window
• Task 3 : Open a file. Replace "Windoze" by "UsefulNIX"
Windows: Use Ctrl + H at any text editor
UNIX:
perl -pi -e 's/Windoze/UsefulNIX/g'
fileName
• Task 4 : Find all files in folder A with "html", and replace by
"UsefulNIX"
Windows: haizzz....
UNIX: find A -type f | xargs grep -l Windoze |
xargs perl -pi -e 's/Windoze/UsefulNIX/g'
See how powerful UNIX is ^^ & the idea of "achieving complex tasks
through small toys“
Let's learn UNIX !!!