Tag Archives: umask

Debian server

I use my home Debian server as router, firewall, NAS and HTPC.

I have installed system on SSD drive and data are on two LUKS encrypted WDC 2TB drives in RAID1.

System in installed as Debian basic server, the rest of the packages was installed and configured the way as it follows.

System drive: 32 GB ADATA SP800 (SSD)
Data drive: 2x 2 TB WDC WD20EARX (RAID1)

Complete HTPC and NAS hardware configuration

Table of content

Restore installed packages from package list
Luks encryption
Mounted file systems
Encrypted file systems
User defaults
Users and groups
Linux kernel settings
NTP server
Time zone
Network interfaces
UFW firewall
Dnsmasq (DNS and DHCP server)
OpenVPN server
NFS server
Duplicity and BackupNinja
Lighttpd and Collectd
Random generator
HDD temperature
Safe LUKS headers

List of installed services and configuration

Restore installed packages from package list.

xargs aptitude --schedule-only install < pkglist.txt && aptitude install



# XBMC for Wheezy, it also needs packages from wheezy-backports
deb https://people.debian.org/~rbalint/ppa/xbmc-ffmpeg xbmc-ffmpeg-wheezy-backports/
deb http://http.debian.net/debian wheezy-backports main contrib non-free

apt-get update && apt-get install xbmc... follow XBMC installation on Debian


apt-get install mdadm

parted /dev/sd{b,c} mklabel msdos (or gpt if you have drive bigger than 2 TB)
parted /dev/sd{b,c} mkpart primary raid 1 -1
mdadm -v --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
cat /proc/mdstat


Create logical volume (LVM) on top of existing RAID1.

pvcreate /dev/md0
vgcreate vg_disk /dev/md0
lvcreate -L 2t -n lv_data vg_disk

Create logical volumes for {root,home,var/log,temp}.

parted /dev/sda mklabel msdos
pvcreate /dev/sda
vgcreate vg_system /dev/sda
lvcreate -L 7g -n lv_root /dev/vg_system/lv_{root,home,var/log,temp}

Luks encryption

Create encrypted disk on top of logical volume (lv_data) created above.

apt-get install cryptsetup

cryptsetup --verify-passphrase --verbose --hash=sha256 --cipher=aes-xts-plain --key-size=512 luksFormat /dev/vg_disk/lv_data
cryptsetup luksOpen /dev/vg_disk/lv_data disk
mkfs.ext4 -L Data -m 1 -O dir_index,filetype,sparse_super /dev/mapper/disk
mkdir /disk
mount /dev/mapper/disk /disk

Mounted file systems

My /etc/fstab layout on system drive.

Encrypted file systems

My /etc/crypttab file, no automount encrypted drive.



cs_CZ.UTF-8 UTF-8
en_US.UTF-8 UTF-8
th_TH.UTF-8 UTF-8




User defaults




Add following line.

session optional pam_umask.so

Change default umask.
UMASK    007

Users and groups

Add existing user to additional groups.
usermod -a -G adm,sudo,users username
Check content of passwd and group file and do necessary adjustments.
vipw [-s]
vigr [-s]




Change existing line to disable password confirmation when using sudo. I don’t like typing passwords, you may leave it in default.


Linux kernel settings


NTP server

apt-get install ntp
Change your network address, mask and broadcast accordingly.

Time zone



Network interfaces


ASUS P8H61-M PRO build-in NIC
WAN network, interface eth0
MAC 10:bf:48:7a:42:cf
RTL8111/8168B (rev 06)

LAN network, interface eth1
MAC 00:13:3b:10:1a:d4
RTL8111/8168B (rev 07)

Both card are using identical chipset Realtek RTL8111E.

AXAGO PCEE-GR gigabit ethernet PCI Express adapter is excellent, but cheap czech product which cost only $10.

UFW firewall

apt-get install ufw

Filter UFW messages from /var/log/syslog and log them only to /var/log/ufw.log.


:msg,contains,"[UFW " /var/log/ufw.log
& ~






If you have existing set of rules, you can copy it from location below or use mine. The best way is to define your own rules using UFW. Or you can setup your firewall and router server following this guide.


Dnsmasq (DNS and DHCP server)

apt-get install dnsmasq


touch /var/log/dnsmasq.log /var/lib/misc/dhcp.leases
chown dnsmasq /var/log/dnsmasq.log /var/lib/misc/dhcp.leases




domain homelan
search homelan

chown dnsmasq /etc/resolv.dnsmasq



Setup Squid 3.4.8 transparent proxy.

For more about Squid transparent proxy installation and configuration you can read here.

OpenVPN server

apt-get install openvpn bridge-utils


ufw allow 1194

For more about OpenVPN installation and configuration you can read here.

NFS server

apt-get install nfs-kernel-server nfs-common portmap

Modify following parameters in the files below. You can read more about NFS installation here.















arpwatch@home-router    arpwatch@faix.cz
root@home-router.homelan  root@faix.cz
ossecm@home-server    ossecm@faix.cz


@faix.homelinux.net @faix.cz

/etc/postfix/rbl_override OK OK
ns35.mailserver.com OK


/^(.*)@(.*)\.homelan$/     ${1}.${2}@faix.cz
/^(.*)@(.*)\.localhost$/     ${1}.${2}@faix.cz


/^(.*)@(.*)\.homelan$/       ${1}@faix.cz
/^(.*)@(.*)\.home-*$/        ${1}@faix.cz
/^(.*)@(.*)\.localhost$/     ${1}@faix.cz


pwcheck_method: saslauthd
mech_list: plain login



passwd mail
mkdir /var/spamchk


How to generate your certificate, see more in Sasl section.

For more about Postfix installation and configuration you can read here.


apt-get install spamassassin spamc



OPTIONS="--create-prefs --max-children 2 --username debian-spamd -H ${SAHOME} -s ${SAHOME}spamd.log"

For more about Spamassasin installation and configuration you can read here.



POSTGREY_OPTS="--inet= --delay=60"

mkdir /var/log/spamassassin/

For more about Postgrey installation and configuration you can read here.


apt-get install sasl2-bin libsasl2-2 libsasl2-modules


Don’t forget to add postfix to group sasl.
adduser postfix sasl

For more about Postfix SASL configuration you can read here.


apt-get install cups cups-common cups-pdf


For more about CUPS configuration you can read here.



Regularly launched various reminders, backups etc.

# m h dom mon dow user  command
50 1  *  *  *  root    /usr/local/bin/backup-pm-wol.sh


etherwake -i eth1 6c:f0:49:7a:52:10


Install Sarg – Squid Analysis Report Generator to see the usage of Internet.

For more about Sarg report generator installation and configuration you can read here.


Configure remote syslog server to capture log messages from important devices on your LAN.

mkdir /var/log/rsyslog
chown root:adm /var/log/rsyslog



#insert right after first line /var/log/syslog
#to rotate logs from remote syslog

For more about Remote syslog configuration you can read here.


Don’t let your logs grow over reasonable limits. Here are some customised examples.


Duplicity and BackupNinja


mkdir /var/log/duplicity
ln -s /root/.cache /disk/.cache

For more about Duplicity and BackupNinja configuration you can read here.


Local LAN data backups are done every day using rsnapshot which is configured and run from home-desktop to do snapshots to local RAID1 mirror (/mnt/mirror/.snapshots) from remote home-server NFS export (/disk).



Local LAN ISO backup is done every day using rsync which is configured and run from home-desktop to sync to local RAID1 mirror “/mnt/mirror/iso” from remote home-server NFS export “/disk/iso“.

30 2  *  *  *  root    test -d /mnt/mirror/iso && /usr/bin/rsync -avz --stats --delete --progress /disk/iso/ /mnt/mirror/iso/ 2>&1|tee -a /var/log/rsync.log|mutt -s "rsync-backup $HOSTNAME" root@faix.cz


Remote computers do differential backups using rdiff-backup tool.

apt-get install rdiff-backup

For more about Rdiff-backup configuration you can read here.

Lighttpd and Collect daemon monitoring

I liked Lighttpd before Nginx become famous and widely used. It serves me for redirecting http(s) requests for my faix.cz domain.

It also hosts my simple management server web page which is used as a list of all LAN web services.

Collectd monitoring web server is used for usage statistic of my home-server and home-wifi devices.



chown -R www-data:www-data /var/www/*

For more about Lighttpd and Collectd configuration you can read here.


apt-get install fail2ban

To protect myself from bot scanning zombies and script kiddies I love to use Fail2ban service. It protect my SSH, Postfix (SASL) and Lighttpd checking the failed logins and banning annoying zombies for one year based on their IP addresses.



apt-get install logwatch

Get your daily readers digest from your server logs. It may give you some hints if something is going wrong.


Detail = High

mkdir /var/cache/logwatch


Using HIDS (Host-based Intrusion Detection System) is a good way to monitor and analyze your server logs and get notifications immediately in case something goes wrong.

For more about OSSEC installation and configuration you can read here.


apt-get install transmission-daemon


For more about Transmission daemon Web interface installation and configuration you can read here.

Monit client

apt-get install monit install Monit client


For more about Transmission daemon Web interface installation and configuration you can read here.


Setup Ntop network traffic monitor.

For more about Ntopng installation and configuration you can read here.


Join more than one hundred thousands Linux registered users and their machines.

For more about LinuxCounter registration, installation and configuration you can read here.


In case you don’t have static public IP address from your ISP, use DynDns service and grab some easy to remember domain name for your Linux machine.

For more about DynDns registration, installation and configuration you can read here.

Random generator

apt-get install rng-tools







HDD temperature



Safe LUKS headers

If you use LUKS encrypted drives and you ever lost your header, all your encrypted data get lost forever.
Keep your LUKS header backup file and it may save your sore ass.

cryptsetup luksHeaderBackup --header-backup-file luks_header_disk-backup /dev/mapper/vg0-lvDisk

Linux mini-howto

# Linux je operační systém s monolitickým jádrem.
Moduly jsou objektové soubory, dynamické části jádra. Umožňují rozšířit
za běhu funkce stávajícího jádra (LKM = Linux Loadable Kernel Module).

# daemons basic operations
/etc/init.d/apache status
/etc/init.d/apache restart

# filter file content
cat /var/log/… | grep (192.168….) -v 9190 | grep 192.168…. | more
tail -f /var/log/… | grep -v “FW-IN”
grep string
grep “test string” -R /dir/*

# network info
netstat -an | more
netstat -rn … show gateway
netstat -tapn … show listening ports

# DNS client configuration
search mydomain.local

# query DNS server
dig www.nixcraft.com
nslookup www.nixcraft.com

# memory info

# create file

# chroot
chroot /directory
před chroot udělat:
mount -o bind /proc /chroot/proc; chroot /chroot
mount -t proc none /proc
for f in proc sys dev dev/pts run ; do mount –bind /$f /mnt/$f ; done

# mv … move (rename) files
if move error message Argument list too long, because move too much files do:
ls -1 | xargs -n 10 -i mv {} /home/app/opt/app/log

# ln … make links between files
ln -s /home/app/opt/application/ application

# copy file to remote
scp file user@server:/home/dir

# rsync – synchronizace / kopirovani slozek
rsync -ave ssh server:/dir/ /mnt/dir/
rsync -r -t -p -o -g -v –progress –delete –ignore-existing -l -H -D -s /mnt/linuxold/ /mnt/linuxnew

# create iso
mkisofs -o /home/user/data/office /home/user/data/office_en

# directory size
du -s
du -ch | grep total

# mount (samba)
mount -o loop -t iso9660 /home/user/data/office /mnt/iso
mount -t cifs -o username=administrator,password=password //server/data /mnt/server
mount server:/share /mnt/share
mount -t cifs -o username=admin,workgroup=cybercity // /mnt/user

# ntfs-3g – mount ntfs partition
mount -t ntfs /dev/xxx /mnt/windows -o ro
ntfs-3g /mnt/sda1 /mnt/windows

# sshfs
sshfs 001]tod[1]tod[861]tod[291null]ta[resu:/ /mnt/backup

# nfs
Souborový systém NFS
– CIFS ve windows ~ NFS v unixu
v3- „standard“, podporován všude
v4- zabezpečení, ale problémy s výkonem
NFS není vhodné pro veřejné sdílení na Internetu
Umožňuje sdílet celý OS (boot from net)
Je třeba řešit synchronizaci UID/GID (LDAP, NIS)
/data *(rw,no_root_squash)
# exportfs -r
– znovu načtení změněné konfigurace
# rpcinfo -p server
– informace o RPC službách přes portmapper
# showmount -e server
– zobrazí sdílené adresáře
# nfsstat – list NFS statistics
# nfswatch – monitor an NFS server

vi /etc/exports
/etc/init.d/nfs-kernel-server restart
exportfs -a
/etc/init.d/portmap restart
mount /data

# package manager
smart –gui (http://www.labix.org/smart)

# YaSt – instalace balíčů z příkazové řádky SuSE
zypper in sysstat

Souborový systém:
– ext3:
noexec, nosuid, nodev
– lsattr, chattr
chattr +i soubor
– setfacl, getfacl
setfacl -m u:username:r /var/log/httpd/acces.log
– sparse files

# fstab example
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr
//user at server/share_name /mount_point smbfs rw,-N
//server/Data /mnt/server cifs username=administrator,password=password,us er,ro 0 0
// /mnt/mysharedfolder cifs
username=user,password=pass,workgroup=workgroup,us er,ro 0 0
//servername/sharename /smbshare smbfs
ip=192.168.x.x,username=test,workgroup=domainname,password=password,noauto 0 0

# nagios

# allow any traffic
iptables -I FORWARD -s 192.168.x.x -j ACCEPT

# test communication as another IP address
telnet 80
iptables -t nat -I POSTROUTING -d -j SNAT –to
tcpdump -n -i any host

# reset root password
boot with grub, hit e, select kernel line, as parameters add: quiet single init=/bin/bash, press enter and than b
mount -o remount,rw /

# monitor ip traffic
tcpdump -n -i vlan99 host
tcpdump -i eth1 -n port 8888 or port 7777 and host 192.168.x.x
tcpdump -n -i any host or host and not port 22
tcpdump -n -i any host or host and not port 22 and not net
tcpdump -n -i any host or host and not port 22 and not net and not host and not host and not port 1215 and not port 1212
tcpdump -n -i any -s 1500 -w test_dump_file.dump host or host and not port 22 and not net and not host and not host and not port 1215 and not port 1212

# ifconfig
ifconfig eth0
ifconfig eth0 netmask
ifconfig eth0 broadcast

# routing
route -n … show gateway / genmask
route add default gw
route add -net netmask gw dev eth1
route add -net netmask gw
arping -i vlan99
ip route get IP
ip route show … show gateway
traceroute -I eth2 www.google.com

# better traceroute
mtr IP

# who is logged on now / last login
who -a
last (last -f /var/log/wtmp)

# display linux tasks

# Midnight Commander (mc)
cd /#sh:user@machine/
cd /#ftp:server
cd ftp://[!][user[:pass]@]machine[:port][remote-dir]

# gzip, gunzip
gzip -r somedir Zip all files in the somedir directory.
gunzip -r somedir Unzip all files in the somedir directory.

gunzip something.tar.gz
tar xvf something.tar

tar czf – . | ssh server ‘(cd /muj/novy/adresar; tar xzf -)’

gunzip -c something.tar.gz | tar xvf –

# zip, unzip
zip -r file.zip /directory
unzip file.zip -d /directory

# bzip2
bunzip2 filename.txt.bz2
bzip2 filename.txt

#bzip untar
tar xvfj file.tar.bz2

#untar / tar
tar -zxvf [filename with all extensions]
tar -cvf mystuff.tar mystuff/

tar cvzf foo.tar.gz foo/
tar cv foo/ | gzip -9 > foo.tar.gz

# tar / untar with gzip and same owner
tar –acls –same-owner -cvpzf /tmp/app.tar.gz /opt/app
tar –acls –same-owner -zxvpf app.tar.gz

* -p – zajistí, že práva zustanou zachována
* –same-owner -zajistí, že vlastníci zustanou zachováni
* -P – neodstraouje úvodní lomítko z názvu
* -owner uzivatel – zminí vlastníka souboru na uzivatel.
* -mode opravneni – zminí oprávniní souboru na opravneni

Old versions of the tar and dump commands do not backup ACLs.
# star utility is similar to the tar utility in that it can be used to generate archives of files.

star -xattr -H=exustar -acl -c -v -z -p -f=/tmp/test.star /dir
star -x -v -p -z -acl -f=test.star

star -xattr -H=exustar -acl -c -v -z -p -f=myarchive `cat /tmp/file_list`

# umask, chmod, chown
umask -S
chmod ug=rw+ -R /folder
chmod 700 /folder

drwxrwxrwx 1 username users 2525 Feb 18 09:17 index.htm
^ / / / / /
| V V V ”|”’ ‘|’
| | | | | `– group the file belongs to
| | | | `– user who owns the file
| | | |
| | | `– others (users who are neither you or in the group)
| | `– group (people in the group)
| `– user (you)
`– d=directory, -=file, l=link, etc

0 = — = no access
1 = –x = execute
2 = -w- = write
3 = -wx = write and execute
4 = r– = read
5 = r-x = read and execute
6 = rw- = read and write
7 = rwx = read write execute (full access)

chown “root:domain users” file

# OS version
uname -a
cat /etc/*-release

# time and date settings
date set=”STRING”
date -s “25 AUG 2008 15:55:00”
date [MMDDhhmm[[SS]RR][.ss]]
hwclock –systohc, hwclock –hctosys
ntpdate server
stratum … vrstvy serveru pri casove synchronizaci

# password policy
deactive account (set expire in past day):
chage -E 2008-09-23 username
password expire in 1 year from today:
chage -d 2008-08-01 -I -1 -m 0 -M 365 -E -1 username

For example, set new data to 2 Oct 2006 18:00:00.

# accounts info
passwd -S “user”

# hard kill proc
killall -9 “licsrv” (proces se pise jeho jmenem)
klidne 2x 3x pokud se neobjevi hlaseni:
licsrv: no process killed

# network readresace
auto eth0
iface eth0 inet dhcp
iface eth0 inet static

/etc/init.d/network restart

# network change hostname

# dhcp konfigurace

# pridani noveho uzivatele a nove skupiny
useradd uzivatel
groupadd -g 50x skupina
useradd -G skupina uzivatel

# pridani existujiciho uzivatele do existujici skupiny
usermod -a -G skupina uzivatel

# overeni clenstvi uzivatele ve skupinach
id uzivatel

# pridani existujiciho uzivatele do existujici skupiny
usermod -a -G skupina uzivatel

# instalace a pouziti yum
export http_proxy=
name=Red Hat $releasever – $basearch – Base
baseurl =

yum makecache
yum list all
yum update

# Red Hat registration

# gentoo – emerge
emerge -k
emerge –sync … synchronizace portage stromu s mirrorem gentoo
emerge portage … aktualizace baliku portage
etc-update … aktualizace etc skriptu po instalaci


# konfigurační soubor /etc/sudoers
# pridani uzivatele ci skupiny do sudoers
visudo – pouzit POUZE tento editor nikoliv vi
%skupina ALL= NOPASSWD: /usr/bin/rootsh

%chpass ALL = (root) /usr/bin/passwd [[:alnum:]_-]+, !/usr/bin/passwd root
%mailadmin ALL = (root) NOPASSWD:/usr/sbin/rpm
Použití aliasů :
User_Alias WEBMASTERI = foo, bar
Cmnd_Alias WEBMASTER = (apache) ALL, (root) /usr/bin/su apache

# LVM Logical Volume Management
vgscan -> rozeznani LV
lvs -> informace o logickych svazcich
pvs -> informace o fyzickych svazcích
pvdisplay -> informace o fyzickych svazcich
vgdisplay -> informace o logickych svazcich
lvdisplay -> informace o vlastnostech logickych svazcich
vgchange -a y vg01 -> aktivace logickych svazku
vgchange -a n vg01 -> deaktivace logickych svazku

dmsetup – low level logical volume management

parted /dev/sdX
mklabel gpt
mkpart primary 0 4096G

umount /opt
fsck -f /dev/VolGroup00/LogVol03
resize2fs /dev/VolGroup00/LogVol03 3G
lvreduce /dev/VolGroup00/LogVol03 -L 3G
mount /opt

vgchange VolGroup00 -a y

lvscan -> File descriptor 3 left open:
ACTIVE ‘/dev/VolGroup00/LogVol00’ [15.62 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol02’ [14.62 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol03’ [3.00 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol01’ [11.72 GB] inherit

for root / use gparted live CD

for swap partition use:
swapoff -v /dev/VolGroup00/LogVol01
lvm lvreduce /dev/VolGroup00/LogVol01 -L -512M
mkswap /dev/VolGroup00/LogVol01
swapon -va
cat /proc/swaps # free

# parted
Label disk as msdos:
parted /dev/sdx mklabel msdos
Create primary ext4 partition:
parted /dev/sdx mkpart primary ext4 0GB 100%
Mark partition as LVM:
parted /dev/sdx set 2 lvm on
Mark paritition bootable:
parted /dev/sdx toggle 1 boot
Print free space:
parted /dev/sdx print free
Create swap:
parted /dev/sdx mkpart primary linux-swap 14GB 16GB

Format partition:
Ext4: mkfs -t ext4 /dev/vg01/lv_name
Swap: mkswap /dev/sda2

# mdadm – manage MD devices aka Linux Software Raid.
– kompletni sprava software raidu
– v SW raidu je nutne zapsat grub na oba mirrorovane disky
– pri pouziti fdisku oznacit partition jako typ fd (Linux raid auto)

# VMWare Tools
VMWare Console – Install VMWare Tools
cd /media/cdrom

cp VMwareTools-[version].tar.gz /root
cd /root
umount /mnt/cdrom
tar zxf VMwareTools-[version].tar.gz
cd /root/vmware-tools-distrib

# install package
# query insalled package
rpm -qa | grep package_name

rpm -ivh packagename
upgrade a package
rpm -Uvh packagename

create a tar file
tar -cvf myfiles.tar mydir/
(add z if you are dealing with or creating .tgz (.tar.gz) files)

standard install from source
tar -xvzf Apackage.tar.gz
cd Apackage
make install

# FSArchiver
# zalohovani dat linux systemu
SystemRescueCD – Live Rescue CD obsahujici FSArchiver
mount -t vfat /dev/sdb1 /mnt/usb
fsarchiver savefs /mnt/backup/linuxsystem.fsa /dev/sda1 /dev/sda2 /dev/VolGroup00/LogVol00 /dev/VolGroup00/LogVol01
fsarchiver archinfo /mnt/backup/gentoo-rootfs.fsa
fsarchiver restfs /mnt/backup/home/user/archive.fsa id=0,dest=/dev/sda1 id=1,dest=/dev/sda2 id=2,dest=/dev/sda3
fsarchiver probe simple

# vytvoreni file systemu na USB disku
mkfs.ext3 /dev/sda1
e2label /dev/sda1 usb-backup

# locate – nalezeni souboru
locate vzor

# find – nalezeni souboru a jeho obsahu
find /adresar -name hledany_soubor -print
find . -name ‘*2006*’
find ~ -atime +365 -print
find /home -user uzivatel
find . | xargs grep ‘string’
find /tmp -name ‘*.*~’ -print0 | xargs -0 rm
grep ‘string’ ~/*
find -print0 (ošetří zobrazení slepých znaků)
-exec, jméno souboru {}
find /tmp -name ‘*.*~’ -exec rm {} ;
{} nahrazení jednoho daného nalezeného souboru
; expanduje daný znak shellu, escapovaní např. * napsat *

# list all subdirectories
ls -al | grep ‘^d’
ls /etc/[Ss]* vypise vsechny soubory zacinajici pismeny Ss
ls -dla /home/* | wc -l

# delete / remove files and folders
rm -rf *

# man
man -K aplikace … hledani aplikacniho manualu
man vyuziva prikazu less pro prohlizeni man stranek
/pattern * Search forward for (N-th) matching line.
?pattern * Search backward for (N-th) matching line.
n * Repeat previous search (for N-th occurrence).
N * Repeat previous search in reverse direction.

# installed shells
cat /etc/shells

# vi
(M meta klavesa je Alt)
C-b presun o jeden znak vlevo
C-f pres. o jeden znak vpravo
C-a presun na zacatek radku
C-e pres. na konec radku
M-f pres. o jedn. slo. dopredu
M-b jedn. slovo dozadu
C-l smazani obrazovky
C-u mazani radky
C-k smazani znaku od kurzoru do konce radku
C-y vlozeni smazaneho textu zpet
C-d vlozeni znaku konce souboru
C-h smazani znaku od kurzoru vlevo
C-s pozastavení výpisu
C-q pokračování výpisu
C- ukončení procesu SIGQUIT
C-d konec vstupu
C-z suspend procesu
C-j Enter
yy Copy line
P Paste above current line
p Paste below current line
dw Delete word
cw Change word
x Delete text at cursor
X Delete (backspace) text at cursor
a Insert text after cursor
A Append text at line end
0 Go to beginning of line
$ Go to end of line
h j k l Move left, down, up, right
w b Scroll by word f/b
( ) Scroll by sentence f/b
?string Search backward for string
/string Find next string

# shell commands
# expanzní znaky – přehled speciálních znaků
| roura (pipe)
; ukončení na pozadí
&& spuštění při nulovém návratovém kódu předcházejícího příkazu
|| spuštění při nenulovém návratovém kódu předcházejícího
– oznaceni itervalu napr a-z, 0-9
* ? [] expanze názvů souborů
” potlačení všech spec. znaků uvnitř
“” potlačení spec. znaků uvnitř mimo , $ a ”
zástupný znak pro nový řádek
< přesměrování std. výstupu >přesměrování std. vstupu
! negace
# komentáře
& spusteni na pozadi
$ přístup k proměnným
; oddeleni prikazu
() spusteni v kopii shellu

# test – check file types and compare values
test -f /etc/passwd && echo “Je to ono!” || echo “Smula”

export prom=rodic2potomek
echo ${prom}_neco

Shell – kombinace příkazů
cmd1 | cmd2
cmd1 && cmd2 || cmd 3 – podmíněné spuštění
{cmd1; cmd2} – skupina příkazů
(cmd1; cmd2) – skupina příkazů v subshellu

# history … zobrazeni historie prikazu
!5 provede spusteni pateho prikazu v historii
!-5 provede spusteni pateho prikazu v historii od konce
!! provede posledni prikaz
!cd hleda prikaz v historii zacinajici retezcem cd
!?usr? hleda prikaz v historii obsahujici retezec usr
C-r interaktivni hledani zpetne
M-p neinteraktivni hledani zpetne historie prikazu
M-n neinteraktivni hledani dopredne

# cut, paste
– remove sections from each line of files
– paste – merge lines of files

# aliasy
alias zobrazeni nastaveni aliasu
unalias zruseni alisau
alias “cd+”=”moutn -t iso9660 /dev/hdd /mnt/cdrom”
alias “cd-“=”umount /mnt/cdrom”

# promenne prostredi (environment variables)
hostname, term, shell, histsize, user, username, mail, path, lang, home … write UPPERCASE
# nastaveni promenne
zruseni promenne
unset B
export A nebo export A=ahoj … nastaveni promenne pro dalsi instance shellu
set nebo env … zobrazeni promennych
HISTSIZE pocet prikazu ulozenych v historii
export PATH=$PATH:. pridani aktualniho adresare do promenne PATH

# nastaveni globalnich promennych
/etc/profile – je urcen pouze pro login shell (nebude vsak fungovat napr. v MC)
/etc/bashrc – je urcen pro vsechny shelly
. /etc/profile – znovu nacte profile nebo bashrc (. = prikaz source)

# uzivatelske

# Shell – proměnné prostředí
PS1 – shell uživatele
PS2 – login prompt
TERM – typ terminálu (dobré použít s příkazem screen -T vt220)
IFS – oddělovač polí (středník může být např. dvojtečkou)
PATH – adresáře s programy
SHELL – supštěný shell
LOGNAME – login uživatele
HOME domácí adresář uživatele

# colors
# light colors

# set a fancy prompt
if [ “$TERM” == “dumb” ]
PS1=’u@h:w$ ‘
# nebo zelena ?
export PS1=”[e[36;1m]u@[e[32;1m]h:w> [e[0m]”

# standardni vstup, výstup a chybový vystup
viz /dev/fd, /dev/stdin, /dev/stdout, /dev/stderr

# přesměrování std. vstupu ze souboru
cat < vypis.txt ls /etc > vypis.txt 2>chyby.txt
ls /bin > vypis.txt 2>&1
ls /bin &>vypis.txt … přesměrování obou výstupů do jednoho souboru
# nepojmenované roury (pipes)
ls /etc | more
ls -qa | grep “^k” | wc -l
# pojmenované roury jsou specialni soubory
mkfifo(1) /tmp/roura
cat /tmp/roura
echo ahoj | cat

# processes
yes … vypisuje “y” na terminal
C-z pozastavi beh programu
C-c zastavi beh programu
jobs … zobrazi procesy terminalu
fg %1 … pokracovani pozastaveneho procesu – prevedeni procesu na popredi
bg %1 … prevedeni procesu na popredi
yes > /dev/null
kill %1
nohup yes > /dev/null … run a command immune to hangups, with output to a non-tty
disown %1 … jobs is removed from the table of active jobs
# stavy procesu (z pohledu planovace uloh)
ps aux

VSZ pocet alokovanych stranek virtualnich
RSS pocet alokovanych stranek realne vyuzitych
STAT stav procesu z pohledu scheduleru
START datum vytvoreni procesu

R … bezici uloha nebo uloha naplanovana k behu
S … stav prerusitelneho cekani (sleeping)
D … stav neprerusitelneho cekani
T … pozastavena uloha
Z … zombie

Vytvoření procesu
* fork () – vytvoří kopii rodičovskoého procesu
* exec () – nahradí adresní prostor procesu nově spouštěným programem
* wait () – rodič čeká na konec potomka
* exit () – potomek končí a aktivuje rodiče

ttyN – terminaly N, virtualni konzole /dev/ttyN
pts/N – pseudo terminaly, dynamicky vytvarene terminaly /dev/pts/N
echo “Nas novy terminal” > /dev/pts/4
tty vypise virtuální zařízení terminálu připojeného na standardní vstup

Prehled signalu (man 7 signal)
signal value action comment
SIGHUP 1 A hangup detected on controlling terminal
SIGINIT 2 A interrupt from keyboard
SIGQUIT 3 C quit from keyboard
SIGKILL 9 AEF kill signal
SIGTERM 15 A Terminal signal

trap ‘rm -f /$TMPFILE > /dev/null 2>&1; exit’ 0 1 2 3 15
– odchytí signál např. v bash skriptu při stisknutí Ctrl+C a provede daný příkaz

kill [-n] PID [default n value 15 SIGTERM]
killall [-n] process name
pgrep, pkill – look up or signal processes based on name and other attributes
pkill -u euid,… only match processes whose effective user ID is listed
pgrep bash – vypise seznam vsech PID procesu bash

top – klavesa 1 prepina mezi vice CPU
load average: prumerny pocet procesu ve stavu R za 1, 10 a 15 min.
PR priority schedulleru
NI nice value (negative nice value means higher priority, whereas a positive nice value means lower priority)

Priorita procesu PR je cislo n>0. Je neustale prepocitavana, uzivatel nemuze tuto hodnotu menit.
Je mozno menit hodnotu NICE <-20,19>, PRI=f (NICE,…,…0
Udava jak je proces “hodny” na ostatni (-20 je nejvice zly)
Vyssi priorita zpusobi pridelovani vetsiho casoveho kvanta procesu.
nice -n -20 yes> /dev/null&
renice 19 PID

# show RAM
-m (megabajty), b,k,g,-h spravny rozmer -i obsazenost inodu

# /etc/inittab
unikátní seznam úrovní jaká akce proces, který
identifikátor běhu, kterých se má provést se má spustit
1-4 znaky se akce týká initdefault, sysinit,
respawn, wait, once, …

si::sysinit:/etc/rc.d/rc.sysinit … vola konfiguraci pro vsechny urovne

mingetty … spousti terminaly tty 1-6
ttyS0 … terminal na seriovem portu

/etc/rc.d/init.d … obsahuje vsechny spousteci skripty
/etc/rc.d/rcX.d … obsahuje symbolicke linky na vlastni ovladaci skripty

Snn … skritpt start
Knn … skript stop

runlevel … zobrazi spustenou uroven behu systemu
ln -s ../init.d/httpd S60httpd … vytvoreni sym. linku na spusteni httpd napr v runlevel 5
chkconfig –list sshd … sprava startovacich skriptu
upstart … nova nahrada initd napr. Ubuntu

# atd … jednorazove spusteni ulohy
atq … list que
atrm … delete jobs

# crond … periodicke planovani uloh
* * * * * příkaz
0-59 0-23 1-31 1-12 0-6
minuta hodina den měsíc den v týdnu
0 … neděle
0 20 * * * každý den ve 20:00 hodin
0,30 20 * * * každý den ve 20:00 a 20:30 hodin
0-30 20 * * * každý den ve 20:00-20:30 s krokem 1 minuta
0-30/5 20 * * * každý den ve 20:00-20:30 s krokem 5 minut
0 20 1-7 * 1 každé první pondělí v měsíci ve 20:00 hodin

odkazuje na /etc/cron.xxxx, kam je mozne vlozit pozadovane skripty, ktere
jsou spousteny programem run-parts

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

./crontab -e (edit) -l (list) … uzivatelsky crontab (/var/spool/cron/)
0 20 * * * /bin/echo “je prave 20 hodin”
povoleni ci zakazani pouzivani cronu uzivatelum

# Logy
Logování „do syslogu“ vs. logování do souboru
Syslog daemon:
Různé zdroje logů: /dev/log, síť
Logování na vzdálený logserver přes síť
Různé implementace služby syslog
Aplikace mívají možnost výběru zda logovat do souboru nebo syslogu
logger – program pro logování z shellu
vlastní program pro logování (např pro apache)

# syslogd, klogd (data z kernelu)
/dev/log … socket
FACILITY (oblast sběru) :

LEVEL (stupeň důležitosti) :

logger -p facility.level “Text zprávy” … uložení zprávy na vstup syslogu
logger -p mail.info “Ctvrtecni zprava do logu”

Jednotlivé řádky ve tvaru … selector (podminka) action
selector = facility.level
pokud logova zprava vyhovi vice podminkam, je provedeno vice akci
none = tyto zpravy nebudou do logu zapsany napr. kern ma vlastni log a nebude v adm/critical

*.=crit;kern.none /var/adm/critical
kern.* /var/adm/kernel
kern.crit @finlandia
kern.crit /dev/console
kern.info;kern.!err /var/adm/kernel-info
mail.=info /dev/tty12
mail.*;mail.!=info /var/adm/mail
*.=info;*.=notice;mail.none /var/log/messages

*.emerg * … rozeslani zpravy na vsechny terminaly
*.alert * … zasilani zpravy po siti
@finlandia (nebo IP) … zasilani zprav z klienta syslog po siti jinemu syslog serveru
-r … spusteni syslogd aby prijimal zpravy ze site
nahrada za syslog je rsyslog nebo syslog-ng

# Logy – správa logů
Rotace logů
nutnost dát signál aplikaci aby logy uvolnila
logrotate- spouštěné z cronu každý den, rotace logů, komprese, mazání starých logů
Dohled nad logy
logcheck – kontrola zda se v logu nenachází něco podezřelého (detekce např. útoku)
rkhunter – rootkit hunter

# Logserver – konfigurace
Logovací server (syslog-ng):
options {
sync (0);
time_reopen (10);
log_fifo_size (1000);
use_dns (yes);
dns_cache (yes);
use_fqdn (no);
create_dirs (no);
dns_cache_expire (120);
use_fqdn (no);
keep_hostname (yes);
source s_net {
udp(ip( port(514));
destination d_net{
log {

# Klient (syslog):

# Logy – logger
Logování z Apache do logserveru
– nutnost použít syslog-ng na straně webserveru – nevkládá hlášky o opakování zprávy
– konfigurace v httpd.conf:
ErrorLog syslog:local5
SetEnvIf Request_URI “^/checkha.txt$” dontlog
CustomLog “|/usr/local/sbin/apache_log webserver1” combined env=!dontlog

Skript /usr/local/sbin/apache_log:
use Sys::Syslog;
$SERVER_NAME = shift || ‘www’;
$FACILITY = ‘local1’;
$PRIORITY = ‘info’;
openlog ($SERVER_NAME,’ndelay’,$FACILITY);
while (<>) {

# logrotate … rotování logů, spoustene aplikaci cron
/etc/logrotate.conf, /etc/logrotate.d/

# swatch, logcheck, logwatch, … analýza systémových logů
/usr/share/logwatch/ … copy to …/etc/logwatch/conf/logwatch.conf
Service = All … jake logy jsou analyzovany

# quota … souborový systém připojen s podporou kvót : /etc/fstab
/dev/hda1 / ext3 defaults,usrquota,grpquota 1 1
uživatelská skupinová
kvóta kvóta

quotacheck -uvgamc … vytvoření a kontrola databáze kvót

V kořeni každého sledovaného adresáře:
quota.user, quota.group (verze 1)
aquota.user, aquota.group (verze 2)
mount -o remount / … pri zmene fstab premountovani rootu

quotaon -uvga, quotaoff -uvga … zapnutí, vypnutí systémů kvót :
repquota -uvga … zobrazení stavu kvót

Nastavení kvót:
setquota [-u|-g] user|group block-softlimit block-hardlimit
edquota user inode-softlimit inode-hardlimit filesystem

setquota -u pepa 0 10000 0 0 /
su – pepa
yes > soubor.txt

tune2fs … nastaveni parametru filesystemu
-m reserved-blocks-percentage … set the percentage of reserved filesystem blocks
dumpe2fs -h /dev/hda1 … zobrazeni parametru filesystemu

tradicni model prav – lze vytvaret smostatne skupiny uzivatelu pro jemnejsi pridelovani
prav k souborum, ale je to nesystemove reseni
POSIX 1003.1e/1003.2c
jedna se o bezpecnostni dodatek standardu POSIX ktery mimo jine definuje pristupove seznamy
k souborum, ktery bohuzel nebyl nikdy schvalen, jedna se odraft;
* pristupovy seznam ACL umoznuje definovat libovolne dlouhe seznamy opravneni pro dany soubor,
vlastni pristupva prava rwx zustavaji nezmenena
* ruzni uzivatele tak mohou mit k souboru nastavena ruzna pristupova prava
* Linux implementuje ACL jiz dlouhou dobu a lze je pouzivat pro soborove systemy ext2,3, jfs, xfs, reiserfs
* pro ruzne soborove systemy muze mit implementace ACL jista omezeni, jedna se zejmena o omezeni pozcu zaznamu v ACL
Struktura seznamu ACL:
* pristupova prava souboru jsou urcena jednim seznamem rizeni pristupu ACL
* seznam obsahuje libovoly pocet zaznamu
* kazdy zaznam nese specifickou informaci o pristupovych pravech pro konkretni kategorii uzivatelu
* nektere zaznamy jsou v ACL povinne
* lze definovat implicitni zaznamy pro adresare, ktere ovlivni nasstaveni prav nove vytvarenym souborum podobne jako
maska umask u tradicniho modelu

getfacl soubor … zobrazeni pristupovych prav
# file: soubor.txt
# owner: root
# group: root

setfacl -akce zaznam soubor .. zmena pristupovych prav
setfacl -m u:pepa:rw soubor.txt
setfacl -m u:franta:rwx soubor.txt
setfacl -m g:adm:rwx soubor.txt

# změna přístupových práv
Sticky bit – není soubor odstraněn z paměti a jeho spuštění bylo v dřevních dobách rychlejší
Pro adresář je sticky bit užitečný, pokud má adresář právo x, může z něj každý smazat soubory, pokud je však nastaven sticky bit, může soubory vymazat pouze vlastník.
SetUID on exec
SetGid on exec
Proces převezme práva vlastníka (binárního) souboru. Platí pouze pro binární soubory.
Proces má dvě pole euid (efektivní) ruid (reálný uživatel), pokud je nastaven sticky bit, je efektivní
uživatel změněn na vlastníka souboru a proces je spuštěn s jeho právy (reálný uživatel zůstává).

chmod u+s … set the permissions to “-rwsr-xr-x”, or similar (note the “s” replacing the usual “x”). That means that you can run certain commands with the permissions of a different user (typically root).

regular file 666
directory 777
777 – 111

022 101=5
644 755

mkdir adr
chmod 2755 adr
mkdir adr2
drwxr-sr-x 2 root root 4096 Sep 18 14:20 adr2

setfacl -m d:u:pepa:rw ./adresar
setfacl -m d:g:franta:rwx ./adresar

# file … determine file type
– zjisteni typu souboru

# LKM = Linux Loadable Kernel Module
lsmod (/proc/modules) … výpis modulů zavedených v jádře

Umístění modulů : /lib/modules/`uname -r`/
jednotlive moduly maji priponu .ko (kernel object)

Zavedení modulu : insmod msdos.o (2.4), insmod msdos.ko (2.6)
insmod ne.o io=0x300,irq=11
Inteligentní zavedení modulu: modprobe msdos
Informace o modulu : modinfo ne
Odstranění modulu : rmmod msdos
Soubory : /proc/ksyms (2.4), /proc/kallsyms (2.6) – exportované symboly jádra

# automatické zavádění modulů
/etc/modprobe.preload, /etc/modprobe.preload.d/, /etc/modprobe.conf, /etc/modprobe.d/
alias sound-slot-0 snd-intel8x0
alias eth0 eepro100
alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-2 sco

/etc/modprobe.d/modprobe.conf.dist … seznam vsech aliasu hw možných instalovat do systému

# lspci … identifikace hardware
lspci -vm

# dmesg … cteni zprav jadra (kernelu)

# zálohování
není nutné zálohovat /sys, /proc, /dev

# dump [-dump_level] [-b velikost_bloku] [-B pocet_bloku] [-f soubor] [-u] adresář
-dump_level úroveň zálohy (0-9, 0 – plná záloha)
-b velikost bloku velikost bloku v bytech
-B počet bloků počet bloků
-f soubor soubor kam se má záloha uložit (většinou device /dev/nst0)
-u uchová informace o záloze v souboru /etc/dumpdates, nutné
v případě inkrementální zálohy
adresář adresář nebo blokové zařízení (/dev/sda2), které chceme
-j compress_level komprese bzip2
-z compress_level komprese gzip

dump -0 -u -f /backup.hdb1.0 /dev/hdb1
dump -3 -u -f /backup.hdb1.3 /dev/hdb1
dump -0 -u -j 9 /home | dd bs=1024 of=/dev/rmt0

# restore -mód_obnovy [další parametry]
-r plná neinteraktivní obnova
-i interaktivní obnova
-R pokračování v přerušené obnově
-C porovnání zálohy se současným stavem
Použití nástroje restore :
restore -rf /backup.hdb1.0
Provede neinteraktivní obnovení zálohy do aktuálního adresáře.

Použití nástroje restore v interaktivním režimu :
restore -if /backup.hdb1.0

# vytvořeni loop zařízení přes soubor a namontování jako disku
dd if=/dev/zero of=disk.img bs=1024k count=150
losetup /dev/loop0 /root/disk.img
mkfs -t ext3 /dev/loop0
mount /dev/loop0 /mnt/disk

pro zapisovani
/dev/full – reprezentuje plny disk
pro cteni
/dev/zero – stale generuje 0
/dev/random – pro cteni nahodnych cisel
/dev/urandom – stejne pro generovani pro pseudonahodnych cisel

# PartImage
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum install partimage
partimage -z1 -o -d save /dev/loop1 ~/backup.img
partimage restore /dev/loop1 /root/backup.img.000

# dev – vytvoreni zarizeni
mknod /dev/loop8 b 7 8
block device – blokove zarizeni
charakter device – znakove zarizeni

# rsync [volby] zdroj cíl
-a vytvoření archivu (parametry -rlptgoD)
-v upovídaný režim
–exclude nezahrnovat příslušné soubory do zálohy
–delete odstraní z cílové složky soubory, které neexistují ve zdrojové
rsync -av /home /mnt/backup/home
rsync -av –exclude=”*c” /home /mnt/backup/home
Pozn.: Pozor na zápis adresářů ve zdrojích. V případě, že za jméno adresáře
napíšeme lomítko, je přenesen jeho obsah, nikoliv adresář samotný.

Příklad vzdálené zálohy přes scp :
rsync -ave ssh -delete –progress /home user@remotehost:/mnt/backup/
rsync -ave ssh -delete –progress user@remotehost:/mnt/backup /home/
Pozn.: Pozor na zápis adresářů ve zdrojích. V případě, že za jméno adresáře
napíšeme lomítko, je přenesen jeho obsah, nikoliv adresář samotný.

Místo scp může být použita metoda rcp klient / server.

mirrordir – obdobný nástroj pro Unix

# vipw, vigr – edit the password or group files

#su … umožňuje spustit shell pod jiným uživatelským UID a skupinovým GID
su [volby] [uživatel [argument]]
-, -l spustí jako login shell
-c=příkaz předá shellu příkaz
-m nebude měnit proměnné prostředí
-s=shell spustí zadaný shell (musí být uveden v /etc/shells)

#Jazyky pro popis tiskové stránky :
– PostScript (Adobe)
– PCL Print Control Language (Hewlett-Packard)
– ESC/P (Epson)
– GDI (Microsoft)
Před vytisknutím na rastrové tiskárně je třeba PostScript převést na rastr.
Tento proces se nazývá Raster Imaging Process – RIP.
PostScriptové tiskárny obsahují hardwarový RIP, některé velké profesionální
tiskárny mají RIP softwarový implementovaný na rychlém počítači.
PostScript je navržen jako nezávislý na výstupním zařízení !!!
GhostScript je volně šířený interpret jazyka PostScript, softwarový RIP.
Dokáže transformovat PostScript do různých formátů : různé formáty
bitmapových souborů BMP, PCX, TIFF, jazyk PCL, …

GhostScript používá systém filtrů, které popisují jakým způsobem má
transformovat PostScript.
Filtry : GimpPrint
Popis specializovaných funkcí závislých na zařízení zajišťuje soubor
PPD – PostScript Printer Description.
Původně pouze pro PostScriptové tiskárny, dnes možnost použití
i pro ostatní.
Výborná integrace s CUPS !!!

Konfigurace : /etc/cups
WWW administrační rozhraní : http://localhost:631/
RedHat konfigurační nástroje : printconf-tui, printconf-gui

Ovládání :
Vložení úlohy do tiskové fronty : lpr [-P fronta] soubor.txt
Výpis obsahu fronty : lpq [-P fronta]
Smazání zprávy z fronty : lprm [-P fronta] ID
Zobrazení dostupných tiskáren: lpstat -a
Nastavení výchozí tiskárny: lpoptions -d PRINTERNAME


DeviceURI ipp://

# ldd … print shared library dependencies
ldd /bin/sh – slinkovani programu s knihovnou

– configure dynamic linker run time bindings
cesty ke knihovnam systemu

ldconfig = aktualizovani cache cest ke knihovnam

# apropos … search the whatis database for strings

# screen … manažerem pro práci v terminálu
C-a ? … rychlá nápověda
C-a c … vytvoří nové okno
C-a ” … přehled oken ”
C-a x … zamknuti session
C-a d … odpojeni od session
screen -r … přihlášení ke spuštěné session
screen -d -r … odpojí již připojenou session a znovu připojí k současnému terminálu
screen -x … přehled všech sezení
C-a [ … copy/scrollback režim

sdílení sezení více uživateli:
C-a : … a následným zadáním příkazu multiuser on
C-a : addacl uživatelé, … přidání práva zápisu do sdílené session
C-a : sessionname nové_jméno
C-a * seznam uživatelů připojených k sezení

screen -r vlastník_sezení/[sessionname]

# file … determine file type

# tty … print the file name of the terminal connected to standard input

# strace … trace system calls and signals, debugging shell commands

# sum … checksum and count the blocks in a file

# write … allows you to communicate with other users, by copying lines from your terminal to theirs
write bdokot pts/1
When you are done, type an end-of-file or interrupt character.

# getent – get entries from administrative database

# nscd – name service cache daemon

# nsswitch – System Databases and Name Service Switch configuration file

# Linux PAM – Linux Pluggable Authentication Modules (PAM) provide dynamic authorization for applications and services in a Linux system.

# DRBD (Distributed Replicated Block Device) is a distributed storage system for the GNU/Linux platform.

# Bacula is an open source, enterprise level computer backup system for heterogeneous networks.

# tmpfs is a common name for a temporary file storage facility

# /proc
ps aux – zjistit id procesu
/proc/3867 – exe – odkud byl proces spusten
– cwd – pracovni adresar procesu
– environ – prostredi procesu

# iotop

# iostat
iostat -k 1 /dev/sd[abcd]

# bash shell script
#! /bin/sh
– může být shell spustěn i s login či debug parametry

# id – print user identity

# shell – expanze proměnných
${proměnná:-slovo} – pokud není definována proměnná (nebo je prázdná), použije se slovo


# Shell – speciální proměnné
$# – počet parametrů skriptu
$0 – název skriptu
$n – n-tý parametr
shift [n] – posun číslování parametrů
$* – všechny parametry
$@ – –//–
$? – návratový kód posledního programu
$$ – PID aktuálního shellu
$! – PID poslední úlohy na pozadí

# getopt – parse command options (enhanced)

# read promenna
– načtění řádku ze vstupu
– read nastavuje návratový kód, který je možné otestovat (kontrola zda proběhl vstup)
– je možné načíst více argumentů najednou
echo -n “Zadej login:”;read login
# eval $promenna
– argumenty se zpracují a znovu provedou

# shell – řídící struktury
if příkaz; then příkazy
[elif příkazy]
[else příkazy]

while příkaz; do příkazy; done
for a [in text]; do příkazy; done

case text in
vzor1 | vzor2)

ls * | while read soubor; do echo $soubor; done

# Regulární výrazy
„maska“ pro definici řetězců
využití: vi, sed, grep, awk, perl…
– Speciální znaky:
. libovolný znak (mimo konce řádku – LF)
^, $začátek a konec slova
[seznam]jakýkoliv znak z výčtu
[^seznam]jakýkoliv znak z doplňku výčtu
– Opakování:
* libovolný počet opakování (i žádné) předchozího výrazu
+ minimálně jeden výskyt předchozího výrazu
(, ), nvymezení části vzoru a její následné použití

[^.] výrazu odpovídají všechny znaky krome . (musi byt escapovano )
[] – pokud jsou zavorky jako vycet a je pouzit znak ^ napr. [^] jedna se jakykoliv znak krome ^…

vypíše uživatele, kteří mají stejné UID a GID:
getent passwd | egrep ‘^[[:alnum:]_-]+:x:([[:digit:]]+):1’

nevypsání záznamů od spamd a CRONu:
tail -f /var/log/syslog | egrep -v “(spamd|CRON[|”

načtení pravidel ze souboru:
… | egrep -v -f soubor

# tr ‘[[:upper:]]’ ‘[[:lower:]] | …
Převedení velkých písmen na malá:

find . -type f | while read soubor; do mv “${soubor}” “`echo $soubor | tr ‘[[:upper:]]’ ‘[[:lower:]]’`”; done

Převedení CR v textovém souboru z DOSu do Unixu (translate)
tr -d ‘r’ < input.file > output.file

# sed – filtr pro práci s texty – neinteraktivní editor
Spuštění: sed [adresa]příkaz
Příkazů může být více
prázdná – pro všechny řádky
/exp/ – pro odpovídající vzorek (reg. výraz)
n – n-tý řádek
$ – poslední řádek
s/vzorek/náhrada/[g|n] – nahrazení vzorku (reg. výraz), g = všechny výskyty, n = n-tý výskyt
y/vzorek/náhrada/ – ekvivalent programu tr
p vypsání textu

sed -i.bak ‘s#:/home/#:/home/users/#g’ /etc/passwd
hromadné přestěhování domácích adresářů uživatelů
-i bude editovat primo soubor a vytvori jeho zalohu .back
bezne je oddelovac / a muselo by byt escapovano, tudiz jako oddelovac
slouzi znak #

echo “Ahoj, Tondo.” | sed ‘s/^([a-zA-Z]+), ([a-zA-Z]+)./2/g’
– zameni textove retezce

sed -n ‘10,11,12p’ soubor
– vypásní konkrétních řádků ze souboru

# awk – postupně zpracovává řádky souboru a aplikuje na ně příkazy
Předdefinované proměnné:
RS- oddělovač záznamů/řádků
FS- oddělovač polí
NR- počet záznamů
NF- počet polí
ENVIRON[“HOME”]- přístup k prom. prostředí
– je možné provádět přesměrování do souboru (print > file), spouštět externí programy (fce system())

cat /etc/passwd | awk -F: ‘/^s/{print $1 “ma UID “$3” a jeho GID je “$4}’
– zobrazi UID a GID kazdeho uzivatele zacinajiciho na pismeno ‘s’
– parametr F urcuje oddelovac

cat /etc/passwd | awk -F: ‘/^s/{print $1 “ma UID “$3” a jeho GID je “$4}; /^r/{print “uzivatel “$1″ zacina na r”}’
cat /etc/passwd | awk -F: ‘/^s/{print $1 “ma UID “$3” a jeho GID je “$4}; /^r/{print “uzivatel “$1″ zacina na r”}; END{ print “celkem zpracovano: “NR}’

cat > counter
print “uzivatel: “$1″ zacina na s”
print “Vypsal jsem ” r ” zaznamu s pismenkem s”

cat /etc/passwd | awk -f counter

$4 == “1000” {
print “uzivatel: “$1″ je ve skupine 1000”
print “Vypsal jsem ” r ” zaznamu”

if ($4 == “1000”) {
print “uzivatel: “$1″ je ve skupine 1000”
else {
print “uzivatel “$1″ neni ve skupine 1000”
print “Vypsal jsem ” r ” zaznamu”

# Skripty
– Skripty neumožňují používat SUID bit
vyjimka: perl
editace visudo (ekvivalent vipw,vigr)

# make
– Generátor příkazů – automatizace opakujících se postupů.
– GNU make, cmake
– autoconf, automake, configure
– python/perl/java mají své specifické postupy
all: singlesingle: clean ldap.xml xhtml-onechunk.xsl xhtml-common.xsl
xsltproc -o html/ xhtml-onechunk.xsl ldap.xml
@rm -f html/*.html

make – Makefile
Závislosti cíle:targets: [files|targets]
Prováděné příkazy:command
Pokračování na dalším řádku:
Nezáleží na pořadí definic, podpora maker, dostupnost systémových proměnnýchs

# X Window systém
Různé implementace, různé OS:
cygwin, proprietární X servery
síťově transparentní, lze provést přesměrování výstupu

X Window systém x uživatel
X umí vykreslovat základní grafické prvky (bod, úsečka) a neví co je menu, tlačítko, nestará se o okna
pro vykreslení grafických prvků je nutné použít vhodný toolkit
pro správu oken window manager

X – konfigurace
statická konfigurace v /etc/X11/xorg.conf
Možnost ovlivnění konfigurace při startu případně za běhu
Modulární systém

X – vzdálený přístup
různé implementace, klientský SW
sdílení aktuálního sezení uživatele i samostatné sezení
využití: X terminál
nezabezpečený protokol – pouze lokální síť
vysoké nároky na propustnost sítě
neumožňuje sdílet sezení uživatelů
SSH a forward aplikací skrz tunel

mysqladmin kill status processlist
while true; do mysqladmin status; sleep 1; done

# watch – execute a program periodically, showing output fullscreen
watch -n 1 — mysqladmin status
watch -n 1 cat /proc/mdstat

# —
touch — –ahoj
rm — –ahoj

# Troubleshooting
chování OS:
balíček sysstat:
-iostat -k 1
-vmstat 1
iotop, top
process accounting
balíček acct
sa /var/log/pacct
sa –print-users /var/log/account/pacct
# sar – Collect, report, or save system activity information.
/etc/init.d/sysstat statrt

Troubleshooting 2
– zjistí typ souboru, ale i zařízení
file -s
file -s /dev/sda
Trasování volání:
strace systémová volání
strace -ff -o /tmp/stracelog cat /etc/shadow
– trasování více vláknových procesů např. apache (param. -ff)
strace -o /tmp/stracelog -p 123 (připojení na běžící proces)
ltrace volání knihoven
ltrace getent passwd root

ldd ldconfig
lsof -n otevřené soubory
fuser zjištění kdo „drží“ FS
fuser -m -u /var/log

Troubleshooting 3
tcpdumpodchytávání provozu
wiresharkodchytávání provozu, analýza
openssl s_client -host server -port 443 = test SSL spojení
openssl s_client -host mojedatovaschranka.cz -port 443
telnettest TCP spojení
netstat -tpln zobrazení TCP „listenerů“
netstat -tpaun zobrazení všech spojení
ip r lroutovací tabulka
ip a lIP adresy lokálních rozhraní
iptables -L -v -n [-t nat|-t mangle] stav iptables
ethtool – ovládání síťové karty
ethtool -p eth0 = např. identifikuje blikáním síťovou kartu
dmidecode = reports information about your system’s hardware as described in your system
smartctl -a /dev/sda = vypíše informace o SMART či provede test

# Pošta
– SMTP server bývá na každém serveru
sendmail, postfix, exim, qmail a další
– Zabezpečení komunikace
– šifrování
-TLS – 25/tcp
– autorizace/autentizace
– uživatel → SMTP server
– SMTP server → SMTP server
-Implementace (používané s Postfixem)
– Cyrus – saslauthd
– Dovecot

# Doručování pošty – filtry
Filtrování zpráv na straně serveru zajišťuje LDA
-sieve filtry, možnost zpravovat vzdáleně
– Autoodpovídač (vacation)
externí program, sieve skripty

# Zpřístupnění pošty klientům
Lokální soubory
klientský sw: mail, mutt, pine
Courier IMAP/POP3, Dovecot
Zabezpečení komunikace
Existují proxy pro IMAP/POP3

# Pošta – antispam/antivir
Spamassassin, dspam
razor, pyzor
greylisting (gld, postgrey)
Integrace s mailserverem:
-zajišťuje základní filtrování, správu karantény

# Pošta – odeslání
Odesílání pošty
-využívají systémové služby
– Náhrada za /usr/sbin/sendmail
– Postfix – nástroje:
mailq, qshape- zobrazení stavu fronty
postsuper- správa fronty
postcat -q ID- vypsání zprávy ve frontě
sendmail -bv adresa – test doručení komu email finálně bude doručen (kontrola rewrite) – na postfixu

Doručování pošty do schránek
– Formát schránky
– LDA (local delivery agent)
– mailserver
– postfix -local, virtual
– většinou velmi omezené možnosti filtrování
– procmail
– maildrop
– dovecot
– MDA (mail delivery agent)

# postfix
qshape – zobrazí počet čekajících mailů na jednotlivé domény
postsuper – umí mazat z fronty emaily
přes mailq zjistit ID a přes postsuper -d E83WF44DD
postcat -q D8FUD88F23 | less – vypíše detaily emailu včetně obsahu
postsuper -h ID zprávy – pozastavení zprávy a její opětovné unholdnutí -H
postsuper -d ALL deferred
mailq | awk ‘/marketing@adrsa/{print $1}’ | awk -F* {print $1}| while read id; do postsuper -h id;
pro testování nahradit postsuper echo id
pfqueue – sledování a modifikování poštovní fronty

# mail klient – pine, mutt
echo Ahoj Tondo… | mail -s “Pozdrav z hor” zc]tod[anemodnull]ta[letavizu
cat /etc/config.conf | mail ….

# gdb – The GNU Debugger (ddd)

# Různé nástroje
whois, geoiplookup (GeoIP)
cheops-ng a alternativy

Monitoring služeb
Různé nástroje:
– hotsanic (lokální historie zatížení serveru)
– munin (server vs daemon – zobrazí grafy monitoringu)
– smokeping (změří latenci linky)
– Centreon (nástavba pro Nagios – využívá jeho backend), nagiosgrapher
– CFEngine (cfengine.org) – standalone, datacenter management platform
– Aktivní kontroly – NRPE – lokální agent
– Pasivní kontroly – NSCA – pasivní příjem notifikací
– Notifikace uživatelům – email, sms, vlastní
– Závislosti, eskalace

# Nagios – pluginy
Velký výběr pluginů pro konkrétní služby
– Vlastní moduly
nezávislé na programovacím jazyku
využití externích programů – možnost kontrolovat např. HW
– Návratová hodnota
0 = OK
1 = warning
2 = critical
3 = unknown
– Textový výstup

# Debian Administration Utilities
apachetop – Realtime Apache monitoring tool
arping – Tool to send ICMP echo requests to an ARP address
busybox – Tiny utilities for small and embedded systems
cpbk – a mirroring utility for backing up your files
cutter – disconnect routed IP connections
di – advanced df like disk information utility
disktype – detection of content format of a disk or disk image
etherwake – A little tool to send magic Wake-on-LAN packets
falselogin – False login shell
fcrackzip – password cracker for zip archives
htop – interactive processes viewer
httping – ping-like program for http-requests
hwinfo – Hardware identification system
idswakeup – A tool for testing network intrusion detection systems.
ifrename – Rename network interfaces based on various static criteria
installwatch – Track installation of local software
ipsc – IP Subnet Calculator for console
iptraf – Interactive Colorful IP LAN Monitor
knockd – small port-knock daemon
labrea – a “sticky” honeypot and IDS
linuxinfo – Displays extended system information
lsscsi – list all SCSI devices (or hosts) currently on system
memtester – memtest is a utility for testing the memory subsystem
mindi – creates boot/root disks based on your system
mtop – MySQL terminal based query monitor
multitail – view multiple logfiles windowed on console
notifyme – A program to notify the user when other one logs in
rpl – intelligent recursive search/replace utility
tiger – Report system security vulnerabilities
tripwire – file and directory integrity checker
shc – Shell script compiler
wall – Prints a message to each user
wcd – saves time typing when you want to change directories
wipe – Secure file deletion
whowatch – Real-time user logins monitoring tool
zsafe – Password manager with encryption

# Informations
Open Computer and Software Inventory Next Generation, the open source automated inventory and deployment system


AWK examples: http://www.ibm.com/developerworks/library/l-awk1.html

Linux ArmOps (American Army) Game: http://www.americasarmy.com/

Cedega (Point 2 Play) Distro: http://www.transgaming.com/products_linux.php

CXOffice (Wine, CrossOver) Apps: http://www.codeweavers.com/products/cxoffice/

Spacewalk – Linux systems management: http://www.redhat.com/spacewalk/

Slax Distro: http://slax.linux-live.org/screenshots.php

DSL Distro: http://www.damnsmalllinux.org/index.html

Gentoo Distro: http://www.gentoo.org/

ABC Linuxu: http://www.abclinuxu.cz/ucebnice/zaklady/zakladni-soucasti-systemu/procesy

Linux Man: http://linux.die.net/man/1/top

Linux CZ: http://www.linux.cz/

Knoppix Bootable USB Key: http://www.knoppix.net/wiki/Bootable_USB_Key

Linux Printing: http://www.linuxprinting.org

Linux Security: http://www.grsecurity.net/

Linux Advanced Routing & Traffic Control: http://lartc.org/

KeyPass: http://keepass.info/