You are on page 1of 136

LNUX KOMUT

SATIRI
Kemal Demirez
kemaldemirez@gmail.com
facebook.com/kemaldemirez0
twitter.com/kemaldemirez

EYLL 2013

NDEKLER
Giri------------------------------------------------6
Linux Terminali (Konsol)-----------------------------6
Shell (Kabuk)----------------------------------------7
echo $SHELL
Ortam Deikenleri-----------------------------------7
echo $PATH
Yardm Alma------------------------------------------8
help
man
Datm Ad renme----------------------------------9
lsb_release
Sistemle lgili Bilgi Alma---------------------------10
dmidecode
lshw
Kernel Versiyonunu renme---------------------------11
uname
Disk Blmlerini Grme-------------------------------11
fdisk -l
Uptime-----------------------------------------------12
Kullanlan Bellek Miktar----------------------------12
free
Takvim-----------------------------------------------12
Dizinler Arasnda Gezme ve
erii Listeleme------------------------------------13
cd
ls
pwd
less
more
Konsolda Baz Pratik Metotlar------------------------22
clear
ctrl+L
ctrl+U
ctrl+D
History----------------------------------------------22
.bash_history
!!
$HISTSIZE
.bashrc
history -c
Konsolda Birden Fazla Komut Kullanma-----------------25
noktal virgl
&&
|| kullanm
Komut Tamamlama--------------------------------------29
tab

Ama-Kapatma-Reboot----------------------------------29
runlevels
init
shutdown
halt
reboot
Sanal Konsollar---------------------------------------32
ctrl+alt+f1..f7
Servislerin Balatlmas-Durdurulmas-----------------32
/etc/init.d
service start|stop|status
tasksel
Sreler----------------------------------------------34
ps
top
pstree
kill
pgrep
Kullanc lemleri-----------------------------------38
/etc/passwd
/etc/shadow
/etc/issue
login
/etc/mot.d
/var/run/utmp
strings
file
/var/log/wtmp
adduser
passwd
usermod
who
whoami
chage
su
/etc/hostname
userdel
Dosya ve Dizinlere Eriim Yetkileri------------------50
chmod
chattr
lsattr
suid biti
Program Kurma-Kaldrma
Sistem Gncelleme------------------------------------57
dpkg
rpm
sources.list
apt
yum
update
upgrade

autoremove
Dizin Oluturma-Dizin Silme---------------------------66
mkdir
rm
Dosya lemleri---------------------------------------68
cat
touch
more
echo
> ve >> operatrleri
tail
less
sort
wc
head
tac
nl
pr
od
tee
paste
pipe
grep
cut
tr
file
stat
find
-exec kullanm
locate
which
whereis
Dzgn Deyimler (Regex)-----------------------------83
SED-------------------------------------------------86
AWK-------------------------------------------------92
xargs-----------------------------------------------99
Dosya Sktrma-Ama-Arivleme---------------------101
tar
gzip
gunzip
bzip2
bunzip2
unrar-unzip
Dosya Kopyalama-Tama-Silme lemleri--------------105
cp
mv
rm
Link (Ksayol-Sembolik Link)------------------------107
ln
Konsol Editrleri (Nano-Vim)------------------------111
Network Komutlar-----------------------------------123

ifconfig
iwconfig
ping
traceroute
netstat
nslookup
whois
dig
host
route
arp
tcpdump
wget
/etc/resolv.conf
Zamanlanm Grevler (Cron Servisi)-------------------130
crontab -e
crontab -l
crontab -r
Linux Log (Kayt) Dosyalar---------------------------133

Giri
Linux ile ilgili bir ok kaynak bulabilirsiniz. Hem basl
kaynaklar hem de net zerinde pdf, dokman vs. eklinde bir ok
kaynaktan faydalanabilirsiniz. Ben de Linux'a gnl vermi ve
renmek isteyen kiilere kk bir katk yapmak amacyla bu
kayna hazrlamak istedim. Tabi bilenler bilir, ben daha ok
gvenlik konularnda almalar yapmaya alyorum. Fakat Linux
kullanmay ve zellikle de gvenlik profesyonelleri ve gvenlikle
ilgili amatr kullanclar iin bir datm olan BackTrack ve
onun devam olan Kali Linux'u kullanmay daha ok seviyorum. Bu
almada verilen rnekler de Kali Linux datm zerinden
olacaktr.
Amacm
Linux
iletim
sisteminin
(daha
dorusu
GNU/Linux) tamamn anlatmak deildir. alma balnda yazd
gibi komut satrnda Linux kullanmna rnekler verilecektir. Bu
rnekler hemen tm datmlarla byk lde ayn olacaktr.
Datmlar hangi tabanda olursa olsun genel olarak komut
kullanm kk farklar haricinde ayndr. Farkl olan datmn
kulland paket yaps, konfigrasyon dosyalarnn yerleri,
kullanlan masast ortam gibi eylerdir.
Kali Linux, Debian (Debian Wheezy) tabanl bir datm
olduundan verilen rnekler tm Debian tabanl datmlarda
geerli olacaktr. RedHat, Fedora ve CentOS gibi datmlarla da
byk oranda benzerlik bulunacaktr. Bu sebeple burada verilen
bilgiler iyi renildiinde Linux datmlarnn (distro) %90
rahatlkla kullanlabilecektir.
Anlatm diline gelince, farkettiiniz gibi
rahat ve sade
bir anlatm dili tercih edilecek ve almann kendine zg bir
dzeni olacaktr. Standart bir dzenden ziyade, belli konular
anlatlrken eer o konuyla balants olan bir baka konu varsa,
ondan da ksaca bahsedilecektir. Ama, meramn en iyi ve
anlalr ekilde ifade edilmesidir. Baz kullanclar burada
anlatlan konularn bir ounu bilebilirler. Fakat bilmeyen
kiiler iin faydal bir alma olduunu dnyorum. Bilenler
de
bilgilerini
tazeleyip,
ellerinin
altnda
bulundurmak
isteyebilirler.
Kapakta da grld gibi sosyal medyada hesaplarm ve bir
de mail adresimden baka dikili bir aacm bulunmamaktadr.
ok fazla teknik terim kullandm zanneden okuyucular
hayal krkl yaayabilirler. Yukarda da ifade ettiim gibi
sade basit ve rahat bir anlatm tercih ettim. Umarm bu alma
tm Linux kullanclarna ve kullanc adaylarna faydal olur.
Evet bu ksa aklamadan sonra asl konumuza geebiliriz. yi
okumalar.
Linux Terminali (Konsol)
Bilindii zere kernel yani ekirdek iletim sisteminin
kalbidir. En nemli vazifesi donanmla yazlmn haberlemesini
salamaktr. memli grevlerinden bir dieri de sistem belleini

ve sistemde alan sreleri denetlemektir. Evet imdi klasik


olarak donanm-yazlm-kullanc ilikilerinde (biraz karmak
bir iliki) biz bir kullanc olarak isteklerimizi nasl donanma
ve bir ynyle de yazlma ileteceiz? Tabi konumuz Linux komut
satryla ilgili olduundan cevabmz da ona gre olmal. Yani
Windows sistemin grafiksel kullanc ara yz ile zaten her eyi
grafiksel olarak halledebiliyoruz. Aslnda Linux gui den de yani
grafiksel kullanc ara biriminden de Windows'da yaptmz ayn
eyleri yapyoruz. Fakat arka planda alan komutlar aslnda
isteklerimizi yerine getiriyor. Yani ister MS-DOS komut satr
ister Linux terminalden komutlar vererek ister de grafiksel ara
yz
kullanarak
iletim
sistemi-program-donanma
istediimiz
eyleri yaptrrken aslnda olan ey arka planda komutlarn
almasndan ibarettir. Komut satr ise bu ilemleri biraz daha
grnr hale getirmekte ve bize ok fazla esneklik salamaktadr.
Ayrca btn programlarn da grsel ara yz olacak diye bir
kural bulunmamaktadr. Linux konsol (terminal ve ubirim de
deniyor) basit bir komut satr olmann ok tesinde iler
yapmaktadr. Shell yani kabuk dediimiz bir programla terminalden
verdiimiz
komutlar
yorumlanarak
istediimiz
iler
yaptrlmaktadr.
Shell (Kabuk)
Shell, bir nevi kullanc ile ekirdek (kernel) arasnda yer
alarak, kullancdan gelen komutlar yorumlayarak ekirdee
iletmektedir. Kernel ile shell arasnda da adna sistem arlar
denen yakn bir iliki bulunmaktadr.
Gnmzde en yaygn kullanlan kabuk (shell) program bash
kabuk programdr. Sistemimizde kullanlan kabuk programn
grmek
iin
konsoldan
(terminalden)
echo
$SHELL
komutu
verilmelidir.

Evet sayn seyirciler, pardon yani okuyucular..aktrmadan


konsoldan bir komut kullanmz bile. Olsun elimiz alsn.
Biraz nce ne demitik? Konsoldan bir komut verildiinde,
bash kabuk program bu komutu yorumlar ve altrr. Peki
verilen komutu altrrken bunu nerelere bakarak yapar? Bunu
renmek iin de yine bir komut kullanmalyz. Az aada :)
Ortam Deikenleri
Kullanmamz gereken komut echo $PATH komutudur.

Komut kts bize ne anlatmaktadr? Demek istedii udur:


Sen bir komut verdiin zaman ben srasyla bu dizinlere bakarm.
Eer verdiin komutla ilgili altrlabilir dosya bu dizinlerin
altndaysa altrrm. Yoksa altramam arkada.
Grld gibi altrlabilir dosyalar /bin ve /sbin
altnda.Yukardaki ekran ktsnda grlen ve birbiriyle :
iaretiyle
ayrlm
dizinlerin
oluturduu
yapya
ortam
deikenleri
denir.
Yani
bir
komut
verildiinde,
ortam
deikenlerinde grlen sraya gre dizinler kontrol edilecek ve
komutla ilgili program dosyas bulunduunda program kabuk
tarafndan bellee yklenecek ve altrlacaktr.
Bu ksa bilgilerden sonra imdi biraz daha iin iine
girelim. ncelikle konsolda komut kullanrken nelere dikkat
etmeli ondan bahsedelim. En dikkat edilecek ey komutu doru
girmektir. Bunun iin de bilinmesi gereken ey, Linux konsolun
byk-kk harf duyarl olduudur. Yani Help ile help komutu
ayn ey deildir. Komutu doru girmek ve doru parametrelerle
kullanmak iin bizzat sistemimiz bize yardmc olmak iin hazr
beklemektedir.
Yardm Alma
Bu

Yardm almak iin kullanabileceimiz baz komutlar vardr.


komutlardan en basiti help komutudur.

Komutumuzu parametresiz kullandmz zaman yukardaki gibi

bir
kt
alrz.
Zaten
orada
da
anlatm
bize
nasl
kullanacamz. imdi basit bir rnek yapalm. help komutuyla
yardm alrken [yardm_alnacak_komut] --help (bazen de -h)
eklinde kullanlr.

imdi Linux'un ok gzel bir zellii olan klavuz sayfalar


zelliinden bahsedelim. Linux'da manual kelimesinin ksaltlm
olan man komutunu kullanarak, her hangi bir komutla-programla
ilgili geni bilgi alabilirsiniz.
rnein
#man
python
komutunun
kts
aadaki
gibi
olacaktr.

Klavuz yardm
yeterli olacaktr.

sayfasndan

Datm Ad renme

kmak

iin

tuuna

basmanz

Datmla ilgili bilgiyi grmek iin lsb_release -a komutunu


kulanabiliriz.

Sistemle lgili Bilgi Alma


Sistemimizle (bios, memory, cache vs.) ilgili bilgi almak
iin de dmidecode komutunu kullanabiliriz. Komutu parametresiz
kullandmzda uzun bir kt verebilir. Fakat rnein bios ile
ilgili bilgi almak istiyorsak type parametresiyle birlikte
dmidecode --type bios komutunu kullanmalyz.

Aynen bu ekilde --type kullanarak


system
baseboard
chassis
processor
memory
cache
connector
slot
Bilgisi de alabiliriz. Sistemi kurcalamaya devam edelim.
Donanmla ilgili geni bilgi almak iin lshw (hardware lister)
komutunu kullanabiliriz. Baz datmlarda kurulu gelmeyebilir.
Sisteminize kurarak kullanabilirsiniz. lk nce komutu deneyelim.
Eer sistemde kuruluysa zaten alacaktr.

Evet grdnz gibi


Bakalm depolarda var m?

benim

sistemimde

kurulu

deilmi.

Evet depolarda var. stersem #apt-get install lshw komutuyla


kurup kullanabilirim. (Debian tabanl datmlarda byle, eer
RedHat/Centos/Fedora
tarz
bir
datm
kullanyorsanz
kullanmanz gereken komut #yum install lshw olacaktr.)
Buna benzer konulara ilerde yeri geldike deineceiz. Ben
imdilik ksaca bahsettim.
Kernel (ekirdek) Versiyonunu renme
Kernelden
(ekirdekten)
bahsettik
hatrlarsnz.
bakalm sistemimiz hangi kerneli kullanyor?

imdi

Disk Blmlerini Grme


Disk blmlerimizle ilgili bilgileri grmek iin de fdisk -l
komutunu kullanabiliriz.

Grdnz gibi ok mtevazi (gariban da denebilir) bir sistemim


var :)
Uptime
Merak ettim acaba sistemim ne kadar zamandr ak?

Kullanlan Bellek Miktar


Sistemimizde kullandmz bellek miktarn grmek iin de
free komutunu kullanabiliriz. Komutu free -m eklinde kullanrsak
kty MB olarak alrz.

Takvim
Madem
edelim.

onu

bunu

merak

ediyoruz

zaman

takvimi

de

merak

Her hangi bir yla ait tm takvimi de grebiliriz. Bunun


iin aadakine benzer bir komut kullanabilirsiniz. Doum
tarihinin hangi gne denk geldiini renmek isteyenler iin
faydal bir hizmet :)

Dizinler Arasnda Gezme ve eriini Listeleme (cd, ls)


Evet buraya kadar kk apl snma turlar yaptk. Hazr
snmken imdi de dizinler arasnda gezinme ve dizin ve alt
dizinlerdeki dosyalar listeleme komutlarna bakalm. ncelikle
dizinden bahsedelim. Linux dnyasnda her ey (programlar,
dosyalar, aygtlar vs.) bir dizin altnda alt dizin/dosya
grnmnde yer alr. Btn dizinler/alt dizinler hiyerarik
ekilde kk dizine (root dizin) baldr. Root dizin / ile
gsterilir. Burada nemli bir nokta; root dizinle root kullanc
kartrlmamaldr. Biri dizin biri kullanc deil mi? :)
Bunu neden syledim? Dizin meselesinden bahsederken yine Linux'un
bir zellii olan daha dorusu gelenei olan home (ev) dizininden
(klasrnden de denebilir) bahsetmeliyiz. Linux sistemlerde root
kullanc da dahil her kullancnn kendi home klasr (ev
dizini) bulunmaktadr. Konsol varsaylan olarak kullancnn
kendi ev
dizininde almaya balar. imdi root dizinle root
kullancya ait olan ev dizinine (klasrne) gz atalm.
ncelikle grafiksel olarak grelim.

Evet stte grdnz benim (root


klasrm. Bunu bir de konsoldan grelim.

kullancym

ya)

ev

imdi de root (kk) dizine grsel olarak bakalm. Grsel


olarak lafndan kastm dosya yneticisini kullanarak kk dizini
(yani / dizinini) amaktr. Evet root dizin aadakine benzer
ekilde grnecektir.

Dikkatlice incelerseniz yukarda / iaretini greceksiniz.


Ayrca dizinlere(klasrlere) baktnzda zerinde ev simgesi
olan (olmayabilir de) root dizinini(klasrn) greceksiniz. te
bu dizin root kullancya ait ev dizini. Bundan baka bir de home
klasr
gryoruz.
Bu
klasr(dizin)
de
sisteme
kullanc
eklediimizde
yeni
kullanclarn
kiisel
klasrlerinin
eklenecei dizindir. rnein sisteme zeynep kullancsn ekledik
diyelim. Bu durumda zeynep kullancsnn ev klasr /home/zeynep
eklinde oluturulacaktr. imdi root dizine bir de konsoldan
bakalm.

Yukardaki ekran grntsn incelediinizde bir ka ey


dikkatinizi ekmi olmal. ncelikle cd / komutuyla / dizinine
geiyoruz. Sonrasnda da ls komutuyla altnda bulunan dosya ve
dizinleri listeliyoruz. Baka bir ey de kullanc kendi ev
klasrnde alrken promptta ~ iareti, baka dizine geip o
dizinde almaya baladnda da o dizinin (rnein /) ismi yer
alr.
ls ve cd komutlaryla ilgili rneklere devam etmeden nce, o
an hangi dizinde altmz renmemize yarayan pwd komutundan
bahsedelim. Sylediim gibi pwd komutunu kullanarak o an
allan dizin grlebilir.

Evet yukardaki ekran grntsyle ne demek istediimizi


zetlemi olduk sanrm.
imdi kaldmz yerden devam edelim ve hem cd hem de ls
komutuyla ilgili rnekler verelim. Tekrar hatrlatalm, cd
komutuyla dizinler arasnda gezebiliriz, ls komutuyla da bu
dizin-klasrler
altndaki
alt
dizin/klasr
ve
dosyalar
grntleyebiliriz.
ls komutunu parametresiz ekilde kullanrsak aadakine
benzer bir kt alrz.

Eer ls
olacaktr.

-l

eklinde

kullanrsak

kt

aadaki

gibi

Grdnz gibi biraz daha dzgn ve ayrntl olarak


listeledi. Son olarak da ls -la komutunu kullanarak ktmzn
nasl olacan grelim.

Ne var ne yok listeledi. Gizli dosyalar da dahil buna. Gizli


dosyalarn nnde nokta iareti bulunmakta.
Burada ek bir bilgi verelim. Eer komut satrndan deil de dosya
yneticisini kullanarak gizli doayalar grmek isterseniz baz
datmlarda
(rnein
BackTrack)
<alt+.>(alt
ve
nokta)
kombinasyonunu, baz datmlarda da (rnein
Kali Linux)
<ctrl+h> kombinasyonunu kullanmalsnz. Hemen rnekleyelim.
Aada dosya yneticisiyle atmz dizine bakalm.

imdi <ctrl+h> tularna basalm. Gizli dosyalar da ortaya


kacak ve ekran grnts aadaki gibi olacaktr.

Dizinin
eski
haline
dnp
gizli
dosyalarn
yeniden
kaybolmas iin yine <ctrl+h> kombinasyonunu kullanabilirsiniz.
Buradan bir ey daha reniyoruz. Bir dosyay/klasr gizli
hale getirmek iin dosya/klasr isminin nne nokta koymamz
yetiyor. rnein deneme isminde bir klasrmz/dosyamz var
diyelim. Bu klasr gizli hale getirip grnmez yapmak iin
isminin nne nokta koyup .deneme olarak kaydediyoruz. Bu kadar
basit.
ls veya baka bir komutla aldmz kt ok uzun olabilir.
Bu durumda daha dzgn ve paral kt almak iin less ve more
komutlarndan faydalanabiliriz.

Komutu
bu
ekilde
kullandktan
sonra
aadaki
grntsne benzer bir konsol kts alacaksnz.

ekran

Enter a bastnzda satr satr, space ye bastnzda


sayfa sayfa listeleme olacaktr. kmak iin de q tuuna basmanz
yeterlidir.
more kullandmzda da less deki gibi bir kt verecektir.

Geri zaman gelince bahsedeim ama burada kk bir rnek


verelim. rnein ls komutunun ktsn konsolda grntlemek
yerine bir txt dosyasna kaydetmek istiyorsunuz. Bunun iin
kullanmanz gerken komut ls -la > kaytlar.txt gibi bir komut
olmaldr. Yani > operatrn kullanmamz gerekecek.

Grdnz gibi konsolda komutun kts grlmyor. Komut


kts
kaytlar.txt
dosyasnn
iine
yazld.
Daha
nce
balang dizinimizde olmayan kaytlar.txt dosyas komutumuzla
birlikte
oluturularak
komut
kts
bu
oluturulan
txt
dosyasnn iine yazld. Kontrol edelim hemen.

Dosya ieriine bakalm.

Evet bizim istediimiz gibi dosya oluturulmu ve iine


yazlm.
Son olarak, ls komutunu ille de bulunduumuz dizin iinde
kullanmak zorunda deiliz. rnein /etc dizininin ieriini
listelemek
iin
ls
-l
/etc
komutunu
kullanabiliriz.
rendiklerimizi de kullanarak komutu ls -l /etc | less, ls -l
/etc | more gibi farkl ekillerde kullanabiliriz. Ya da dosyaya
yazdrmak iin ls -l /etc > deneme.txt benzeri bir komut
kullanabileceimizi
de
biliyoruz.
Konsol
ktsn
iine
yazdracamz dosyann masastnde oluturulmas iin de ls
-l
/etc
>
/root/Desktop/deneme.txt
gibi
bir
komut
da
kullanabiliriz.
Burada
/root/Desktop
yerine
direk
Desktop/deneme.txt de kullanlabilir. Seenekler oaltlabilir.
Biz imdilik sadece ls -l /etc komutunu rnek verelim.

imdi cd komutundan bahsedelim. Dizinler/klasrler arasnda


gei yapmak iin cd komutunu kullanrz. rnein /usr dizinine
gitmek
iin
cd
/usr
komutunu
kulanmamz
gerekir.
/usr
dizinindeyken ls ile alt dizinleri kontrol edebiliriz. rnein
alt dizin olan /share dizinine gemek iin de cd share komutunu
kullanabiliriz.

Direk /share
kullanrz.

dizinine

gemek

iin

cd

/usr/share

komutunu

Bu ekilde alt dizinlere geiyoruz. Peki ev dizinimize (yani


altmz ana dizine) dnmek iin ya da st dizine gemek iin
nasl bir komut kullanmalyz? Tabii ki yine cd komutunu
kullanacaz fakat ufak baz farkllklarla. lk nce ana dizine
gemek iin kullandmz cd komutundan bahsedelim. rnein
/usr/share/python/dist
dizinindeyiz diyelim. Ana dizinimize
dnmek iin sadece cd komutunu kullanyoruz.

Evet ana dizinimize nasl dneceimizi rendik. Eer bir


st dizine ya da iki vs. st dizine gemek istersek ne yapacaz?
Bunun iin cd .. ya da cd ../ komutlarn kullanacaz. Hemen
rnekle
gsterelim.
rnein
/usr/share/metasploitframework/modules dizinindeyiz. Bir st dizine gemek iin cd ..
ya da cd ../ komutunu kullanabiliriz.

ki st dizine gemek iin de cd ../../ (eer dizinse


../../../ vs.) komutunu kullanyoruz.

imdi biraz daha farkl bir ey yapalm. Mesela iki dizin


stteki dizinin iindeki baka bir klasre geelim. Nasl
olduunu aadaki ekran grntsnden inceleyebilirsiniz.

Yukardaki ekranda grdnz komutla unu demek istedik:


ki dizin ste git ve gittiin dizin altndaki /joomscan alt
dizinine ge. Evet bu kadar kolay. Son olarak son allan iki
dizin arasnda nasl gei yaplacana bakalm. Bunun iin de
kulanmamz
gereken
komut
cd

komutu.
rnein
/root
dizininden
/home dizinine gemi olalm. Bu iki dizin arasnda
kolayca gemek iin cd komutunu kullanyoruz.

Konsolda Baz Pratik Metotlar


Konsolda komutlar kullanrken bir takm pratik metotlardan
faydalanabiliriz. rnein konsolu temizlemek iin kullanlan
clear komutu yerine ctrl+L kombinasyonunu kullanabiliriz. Ya da
komutu yanl yazdysak promptun bana dnmek iin ctrl+U
tularn kullanabiliriz.

Bu durumda ctrl+U ile baa dneriz.

Konsolda verdiimiz komut alrken komutu kesmek iin


ctrl+C
kombinasyonunu
kullanabiliriz.
Konsoldan
(terminal/ubirim) kmak iin kullandmz exit komutu yerine
ctrl+D tularn kullanabiliriz. Bylece ilerimizi biraz daha
kolay halletmi oluruz.
History
yi gzel konsolda komutlar kullanyoruz. Daha nceden
kullandmz
komutlar
listeleyebilir
miyiz?
Evet
history
komutuyla bunu yapabiliriz. Konsolda kullandmz komutlar
.bash_history dosyas iine kaydedilir. Bizim kullandmz
history komutu bu dosyann ieriini referans alr. Bahsettim bu
.bash_history dosyasnn ierii silinirse dolaysyla history
komutuyla grntlediimiz daha nceden kullanlan komutlar da
silinecektir. Fakat biz konsoldan komut kullanmaya devam ettike
yine bu dosyann iine kullandmz komutlarla ilgili bilgiler

yazlacak ve biz silene kadar tutulmaya devam edilecektir.


Farkna vardnz gibi (noktayla balam) .bash_history dosyas
gizli bir dosya. lk nce bu dosyann ieriine bakalm daha
sonra da konsoldan history komutunu kullanarak kontrol edelim.

Yukardaki grnt konsoldan history komutunu kullandktan


sonraki konsol ktsnn grntsdr. Grdnz gibi son
kullandmz history komutu da listede yer alm. Bu listelenen
komutlardan istediimiz bir tanesini yeniden kullanmak iin
kullanmak istediimiz komutun numarasnn soluna nlem iaretini
koymamz yeterlidir. Mesela 289 nolu cd /home komutunu yeniden
kullanmak iin !289 komutunu vermem yeterli olacaktr.

Burada ek bir bilgi olarak, eer son kullandmz komutu


yeniden kullanmak istersek bunun iin iki nlem (!!) iaretini
komut olarak veriyoruz.

Yukardaki ekran grntlerine baktnzda son kullandm


komut ls komutu olduundan !! ile yeniden ls komutunu kullanm
oluyorum. Dolaysyla !! /etc komutu ile ls /etc ayn ii
yapyor.
history komutuyla ilgili bir ey daha syleyelim. Eer
kullanlan komutlarn tamamn deil de rnein son 15 tanesini
listelemek istiyorsak bu durumda history 15 komutunu kullanmamz
gerekecektir.

Eer daha nceden kullandmz komutlardan rnein k ile


balayan son komutu tekrarlamak iin !k komutunu kullanabiliriz.
Eer bir ksmn hatrlyorsak bu durumda rnein !ke gibi bir
komut kullanmalyz.

Peki kullandmz komutlarn ka tanesi saklanyor. Biz


history komutuyla daha nceden kullanlan komutlar grebiliyoruz
ama acaba ka tanesi saklanyor? Bunu renmek iin echo
$HISTSIZE ile $HISTSIZE ortam deikeninin deerine bakmamz
lazm.

Anlalabilecei gibi 1000 tane komut saklanyormu. Bunu


deitiremez
miyiz?
Kiisel
dizinimizdeki
(ev
dizinimizde)
.bashrc dosyasnn iinde yer alan HISTSIZE deerini deitirerek
istediimiz deeri verebiliriz.

Yukarda
.bash_history
ieriini
silerek
daha
nce
kullandmz komutlarn kaydn da sileriz demitik. Bunu yapmak
iin pratik bir yol daha var. O da history -c komutu ile history
i temizlemek, yani nceki kullanlan komutlar silmek.

Konsolda Birden Fazla Komut Kullanma


Yeni bir konuya geebiliriz artk. Konsolda birden fazla
komutu da yan yana yazarak kullanma ansmz vardr. Bunun iin
ya iki adet & iaretini kullanacaz ya da iki komut arasna
noktal virgl koyacaz.

Yukardaki ekran grntsn incelediimiz zaman; ls;ls -l


komutunu verdik ve komutun kts nce ilk komut sonra dier
komutun iletilmesi eklinde oldu. Eer cd /var/log;ls komutunu
kullansaydk bu durumda konsol ktmz altta grld gibi
olacakt.

Son rnek olarak da aadaki kty verelim.

Yukardaki grnty incelediimizde ilk nce ls komutunun


iletildiini sonra da firefox komutunun iletildiini gryoruz.
Arka planda konsol komutuyla atmz tarayc almakta.
Taraycy kapattmzda konsol ls ktsn gsterdikten sonra
komut satr nceki haline dnecektir.
imdi de dier operatrmz olan && kullanmn inceleyelim.
Bununla ilgili olarak yine bir ka rnek yapalm. rneklere
gemeden bu operatrn en ok nerede kullanldn hatrlatmak
istiyorum. Sistemimizi gncellemek istediimizde daha sonra da
bahsedeceimiz iki komutumuz bu ii halletmektedir. Bu komutlar
apt-get update ve apt-get upgrade komutlardr. Bu komutlar
konsolda ayr ayr kulanabileceimiz gibi tek satrda yazp
srasyla iletilmesini de salayabiliriz. Bunun iin apt-get
update && apt-get upgrade eklinde bir komut iimizi grecektir.
imdi rnek olarak ls && cd /etc komutunu deneyelim.

Grld gibi ilk nce ls komutu altrlm sonrasnda


ise /etc dizinine geilmitir. Son bir rnek vererek bu konuyu da
bitirelim.

Yukardaki komutla unu demi olduk: altm dizinin


ieriinin listesini, oluturulan deneme1.txt listesine yaz, /etc
dizininin ierik listesini de deneme2.txt dosyas oluturarak bu
dosyann iine yaz. Bakalm istediklerimizi yapm m?

Grld gibi istediimiz dosyalar oluturulmu ve konsol


kts bu dosyalarn iine yazlm.
Bir de || kullanmndan bahsetmek istiyorum. Konsolda iki
komut kullanrken komutlar arasna bu operatr koyarsak, birinci
komut baarsz olursa dier komutu altrmasn sylemi
oluruz. rnein ls- diye bir komut yok. Dolaysyla bu komut
altrlmaz. Biz ls- || ls -l diye bir komut kullandmzda
birinci
komut
baarsz
olacandan
dier
komut
altrlacaktr.

Linux sistemlerde komutlar ok farkl kombinasyonlarla ve


parametrelerle kullanlabilir. Bu yzden bize esneklik salar.
Komut
satr
bu
gl
zelliinden
dolay
tecrbeli
kullanclarn kullanmaktan zevk aldklar ve bir yerde aslnda
kullanmak zorunda olduklar nemli bir yardmcdr. Tecrbe
kazandka, karmak gibi grnen ileri ne kadar kolaylkla
hallettiinize aracaksnz.

Komut Tamamlama
Konsolda bir komutun ilk bir ka harfini yazp tab tuuna
bastnzda komutunuz otomatik olarak tamamlanacaktr. Eer tab
tuuna iki kez st ste basarsanz bu sefer olas ifadeler
listelenecektir.

Yukarda da grdnz gibi /usr/share altndayken cd z


yazp iki kere tab tuuna bastmda olas dizinler listelendi.
Eer cd zap yazdktan sonra bir kere tab tuuna basarsak bu sefer
otomatik olarak zaproxy ye tamamlanacaktr.
Yine aklma gelmiken geride braktmz history komutunun
kullanmna ek olarak kk bir hatrlatma yapalm. Konsolda
pratik yoldan az nce kullandnz komutlar yeniden kullanmak
isterseniz yukar ok tuuyla kullandnz komutlar grp tekrar
kullanabilirsiniz.
Bu
hatrlatmadan
sonra
yeni
konumuza
geebiliriz artk. Yeni konumuzda sistem ap-kapatma, reboot
etme vs. konularndan bahsedeceim.
Ama-Kapatma-Reboot
Linux
sistemimizi
konsoldan
komut
vererek
apkapatabiliriz. Reboot edebiliriz vs. Bunlarn nasl olduunu
grmeden nce bahsetmemiz gereken bir konu var. Bahsedeceimiz
konu sistem alma seviyeleri yani runlevels konusu. Linux
iletim sistemi baladnda bildiiniz gibi kernel yani ekirdek
bellee yklenerek altrlr ve donanmlar tarayarak src
yazlmlarn yklemeye balar. Sonra root dosya sistemi ( yani /
) mount edilir (balanr) ve init program balatlarak sistem
alr hale getirilir. Bu ilem yaplrken sistemin alma
dzeyi yani runlevel ayarlanr. Geri gnmzde ou Linux
sistem varsaylan olarak grafiksel arayzle balatlsa da dier
alma seviyelerinde ald zaman o alma seviyesinde hangi
hizmetleri verecekse ilgili servisler-programlar balatlr.
Kabaca sistem bu ekilde iler.
Linux sistemlerde 7 farkl alma seviyesi vardr:
0:Hi bir servisin almad ve kapatma ilemlerinin
balad seviye (halt)
1:Tek kullancl (single user) kullanc seviyesi. A
servisleri almaz. Sistem bakm iin kullanlabilir.
2:A destei olmadan ok kullancl alma seviyesi.
3:A destekli ok amal alma seviyesi.
4:Kullanlmaz.
Fakat
kullanc
tarafndan
zel
olarak
tanmlanabilir.
5:Grafiksel
kullanc
ara
yznn
alt
seviye.
Gnmzn kiisel kullanm iin olan Linux datmlarnn hemen
hepsi varsaylan olarak bu alma seviyesinde balatlr.

6:Sistemi yeniden balatma (reboot) seviyesi.


Sistemimizi kapatmak, yeniden balatmak iin vs. bu alma
seviyeleriyle ilgili komut kullanabiliriz. rnein
init 0
komutuyla sistemi 0. level konumuna getirebiliriz. Bu levelde hi
bir servis-program almadndan sistem kapana geecektir.
Yani
konsolda
init
0
komutunu
kullandmzda
sistemimiz
kapanacaktr.

Eer sistemimizi 6. alma seviyesine geirmek istiyorsak


bu durumda init 6 komutunu kullanmalyz. Bu alma seviyesinde
sistem reboot olacaktr.

Sistemi kapatmak iin, yeniden balatmak iin baka komutlar


da kullanabiliriz. rnein shutdown -h now komutuyla sistemimiz
beklemeden kapanma ilemine geecektir.

Eer
hemen
deil
de belli
bir
sre
sonra
sistemin
kapanmasn istiyorsak, rnein 10 dk. Sonra kapanmas iin
shutdown -h now+10 komutunu kullanabiliriz. Sistemi kapatmak iin
kullanabileceimiz bir komutumuz daha var. O komut da halt
komutu. Konsoldan halt komutunu verdiimizde sistem kapanmaya
balayacaktr.

Sistemi
reboot
etmek
yani
yeniden
balatmak
iin
kullanabileceimiz bir komut da reboot komutudur. Aynen init 6
komutunda olduu gibi reboot komutunda da sistem yeniden
balatlacaktr.

Burada bir hatrlatma yapmak istiyorum. Eer shutdown


komutunu parametresiz olarak kullanrsak sanki init 1 komutunu
kullanmz gibi sistem 1. alma sevitesine (single user mod)
geecektir.

Sistemi kapatma-yeniden balatma komutlarn rendik artk.


Evet alma seviyeleri dedik fakat hangi alma seviyesinde
hangi
programlarn-servislerin-scriptlerin
altrlacayla
ilgili bilgilerin hangi dizinlerde olduuna bakmadk.
Hangi alma seviyesinde hangi servislerin altrlaca
ile ilgili scriptler(betikler) /etc dizini altndaki rcx.d iinde
bulunur. Burada x yerine alma seviyesi ile ilgili rakamlar
gelir. rnein rc5.d den kast 5. alma seviyesidir.

/etc dizinini incelediimizde yukardaki grntde olduu


gibi rcx.d (rc0.d....rc6.d) dosyalar grrz. imdi rnein
grafiksel arayz ile ilgili olan 5. alma seviyesini ifade eden
rc5.d dosyasn inceleyelim.

Grnty incelediinizde baz dosyalarn nnde K harfinin,


baz dosyalarn da nnde S harfinin olduunu grrsnz. K ile
balayan dosyalar bu alma seviyesinde durdurulacak servisleri,
S
ile
balayan
dosyalar
ise
altrlacak
servisleri
belirtmektedir. K ve S harfinden sonra gelen sayya gre
scriptlerin altrlma sras belirlenir. Daha kk deere
sahip olan script daha nce altrlr. Bir alma seviyesine
geildiinde ilk nce durdurma scriptleri daha sonra da balatma

scriptleri altrlr.
Sanal Konsollar
Linux sistemlerde ayn anda birden ok sanal konsolda
alabilirsiniz. <ctrl+alt+f1>......<ctrl+alt+f6> ile 6 tane
sanal
konsol
ap
bu
konsollarda
alabilirsiniz.
Sanal
konsoldan
kast
grafik
arayz
olmadan
sadece
konsoldan
almaktr.
Yoksa
grafik
alma
modundayken
de
zaten
istediiniz kadar konsol ap alabilirsiniz. Tabi kullanc
ad ve parola girerek almaya balayabilirsiniz. Eer tekrar
grafik alma alanna dnmek isterseniz <ctrl+alt+f7> ile bunu
yapabilirsiniz. Geri her hangi bir sanal konsolda alrken
sadece <alt+f1.....f6> ile dier sanal konsollara geebilir ve
<alt+f7> ile de grafiksel ara birime dnebilirsiniz. Ama
grafiksel moddan her hangi bir sanal konsola ilk defa geerken
<ctrl+alt> ile beraber f1,...,f6 kullanmanz gerekir.
Servislerin Balatlmas-Durdurulmas
Linux'la beraber standart olarak gelen ya da bizim sonradan
kurduumuz baz servisler olabilir. rnein, Samba dosya paylam
servisi, MySQL veritaban, Apache web sunucu servisi vs.
Sistemimizdeki
servislerle
ilgili
betikler
/etc/init.d
altndadr.

Servisleri
balatmak-durdurmak-durumuna bakmak
iin iki
farkl yol kullanabiliriz. Birincisi /etc/init.d/<servis> start|
stop|status kalbdr. Dieri ise service <servis_ad> start|
stop|status kalbdr. Tabi eer bir servisi yeniden balatmak
isterseniz de start|stop kullanmnda olduu gibi restart da
kullanabilirsiniz.
imdi
ne
demek
istediimizi
rnekle
aklayalm. rnein Samba servisine bakalm.

Grdnz gibi samba


komutu kullanarak bakalm.

servisi

almyor.

Bir

de

dier

Evet grdnz gibi her iki komutu da kullanabiliyoruz. Ben


ikinci rnekteki kullanm daha kolay bulduumdan genelde o
ekilde kullanyorum. Siz de hangisi kolaynza gelirsa onu
kullanabilirsiniz. imdi de samba servisini altralm.

Servisimizi
altrdk
ve
durumunu
sorguladk.
servisimiz alyor. Durdurmak iin de stop diyorduk.

Artk

imdi de yeniden balatmayla ilgili bir rnek yapalm.


Apache web sunucu servisimizi balatalm ve restart edelim.

Kk bir hatrlatma yaparak baka konuya geelim. Debian


tabanl
datmlarda
server
programlarn
kurmak
iin
kullanabileceimiz bir ara vardr. Bu arac tasksel aracdr.
Konsoldan parametresiz olarak tasksel komutunu kullandmzda
konsol
grafiksel
bir
arayze
geerek
seim
yapmamz
isteyecektir. Buradan istenilen servisler seilebilir.

Konsoldan da kullanm mmkndr.

Sreler
Sre (process), alr dosyalarn alr durumdaki haline
verilen isimdir. Yani bir program altrdmzda bellee
yklenen o programa sre ad verilir. Tabi bizim balattmz
sreler haricinde Linux sistemlerde daha bir ok servise ait

sreler almaktadr. Yani kullancnn programlar yannda


servisler, sistemin kendine ait programlar vs. de alr.
Bunlarn hepsi birer sretir. Ayn zamanda Linux sistemde
alan bir program birden fazla sreten oluabilir.
Sistemde
alan
sreleri
grmek
iin
bir
ka
alternatitimiz vardr. rnein her hangi bir anda alan
sreleri grmek iin
ps komutunu kullanabiliriz. Komutun
kullanm parametrelerini grmek iin ps --help a (a=all) komutu
iimize yarayacaktr.

Komutun ktsndan da anlalabilecei gibi bir ok farkl


parametre kullanabiliriz. Fakat biz bunlardan en ok kullanlan
komut olan ps aux komutuna bakalm.

Siz
de
bir
ps
alx
komutunu
kullanarak
ktsn
inceleyebilirsiniz.
nceki
komutla
arasndaki
farklara
bakabilirsiniz.
Her srecin PID (process id) denilen bir numaras vardr. Bu
numaralar srelerin haberlemesi diyebileceimiz bir ie yarar.
Yani bir srele ilgili ilem iin o srecin numarasna mesaj
gnderilir. rnein sreleri sonlandrmak iin sonlandrlmak
istenen srecin numarasna zel bir mesaj gndermek gerekir. Bu

konuya dneceiz.
Sreleri grntlemek iin kullanabileceimiz komutlardan
bir tanesi de top komutudur. Bu komutla sreleri canl olarak
izleyebiliriz.

Konsola dnmek iin q tuu kullanlabilir.


Sreleri ayrntl olarak bir aa yaps eklinde grmek
iin pstree komutu kullanlr.

Evet sreleri nasl grebileceimizi rendik. imdi sra


her hangi bir sreci nasl sonlandrabileceimize geldi. nce
sonlandrmak istediiniz srecin numarasn (pid) renin. Bunu
sreleri listeleyerek grebilirsiniz. Daha sonra kill <pid>
komutuyla sreci sonlandrn. Sonra yine sre listesinden
kontrol edin. Eer sre hala alyorsa bu sefer kill -9 <pid>
komutunu kullann. Baz servisler bir ka sre balatm
dolaysyla bir ka sre numarasna sahip olabilirler. Bu
durumda killall <sre_ismi> ya da daha ldrc darbe olan
killall
-9
<sre_ismi>
komutunu
kullanabilirsiniz.
Dikkat

ederseniz killall komutunu kullanrken pid yerine srecin adn


kullanyoruz. imdi basit bir rnek yapalm.
nce apache servisini balatalm.

Sonra
bakalm.

ps

aux

grep

apache2

komutuyla

pid

numarasna

Tek sre numaras yok. Grdnz gibi bir ka sre


numaras var. Ben asl sre numarasn tespit edip onu
sonlandrrsam apache servisini de sonlandrm olurum. Ya da
daha kolay bir yol olan killall komutunu kullanabilirim.

Bir nceki ekran grntsnde en stte yer alan 4473 sre


numarasn kullanyormu. imdi bu sreci ldrelim (terminoloji
yle ne yapalm) ve tekrar service apache2 status komutuyla
servisimizin alp almadn grelim.

Evet sreci ldrdkten sonra apache servisinin sonlandn


grdk. Peki ayn eyi killall komutuyla yapsaydk.

Srelerle ilgili olarak kullanabileceimiz pgrep komutundan


da bahsedelim. rnein pgrep -lu root komutuyla root kullancya
ait sreleri grebiliriz.

Sistemde alan srelerin sre numarasn (pid) renmek


iin de bu komuttan faydalanabiliriz. rnein pgrep apache2
komutuyla apache servisinin sre numarasna bakabiliriz.

Kullanc lemleri
Linux iletim sisteminde bir ok kullanc oluturulabilir.
Bu kullanclar yetkileri erevesinde ilemler yapabilirler.
Bilindii
gibi
Linux
sistemde
en
yetkili
kullanc
Root
kullancdr. Root kullanc sistemde her trl deiiklii
yapmaya yetkilidir.
Kullanc hesab nasl oluturulur konusuna gemeden nce
enmli iki dosyadan bahsetmek istiyorum. Bu dosyalar /etc/passwd
ve /etc/shadow dosyalardr. Linux iletim sisteminde kullanc
bilgileri
ve
kullanc
parolalaryla
ilgili
bilgiler
bu

dosyalarda saklanr. /etc/passwd dosyasnda kullanclarla ilgili


bilgiler, /etc/shadow dosyasnda ise kullanc parolalarnn
ifrelenmi hali yer almaktadr. Sisteme yeni bir kullanc
eklendiinde eklenen kullancyla ilgili bilgiler bu iki dosyaya
da yazlr. Yeri geldike bu konudan bahsedeim.
Bir kullanc sisteme giri yapmak istediinde /etc/issue
iinde bulunan mesaj ekrana yanstlr ve bir kulanc ad
girilmesi beklenir.

Login isteminden nce gsterilecek mesajlar burada tutulur.


Bu mesaj istediiniz ekilde deitirebilirsiniz. Evet biz devam
edelim :) Kullanc ad girildikten sonra login program alr
ve parola girilmesi beklenir. Bilgiler uyuursa login program bu
kullanc iin nceden tanmlanm olan kabuu altrr ve
kullanc sistemde almaya balar.
Bahsettiimiz login programn inceleyelim. login --help ile
yardm alabileceimizi biliyoruz fakat biz daha ayrntl bilgi
almak iin man login komutunu kullanalm.

Klavuzu
Trke'ye
de
evirmiler.
En
altta
Yaln
Koluksa'nn evirdii bilgisi var. Trke de olduuna gre
aklamalar daha rahat anlayabiliriz. rnek komut olarak login
-p -h kemal -f root kullanalm. Host yerine sistemimizin adn
yani kemal yazdk, kullanc olarak da root dedik.

Burada kk bir bilgi daha verelim. Sisteme her baarl


giriten sonra grntlenen mesaj /etc/motd altnda tutulur.
Yukardaki
ekran
grntsnde
yer
alan
ve
The
programs
included... diye devam eden mesaja iyi bakn. imdi de cat
/etc/motd ile grntlediimiz mesaja bakalm.

Grld zere ayn mesaj. Bu mesaj kullanclar uyarmaya


yarayacak ekilde deitirelim.

Nano konsol editrn sonra anlatacam. Biz imdi iimize


bakalm :) Evet mesaj deitirdik bakalm olmu mu?

Gerekten de ok uyarc(!) bir mesaj olmu. Hazr bu


konulara girmiken bir konudan daha bahsedelim. Sisteme giri
yapm olan ve halen sistemde olan herkes /var/run/utmp
iinde
listelenir.
Bu
dosya
sistem
kapatldnda
veya
yeniden
balatldnda ierii silinen bir doayadr. Sistem ak olduu
mddete kaytlar tutar. Ayrca bu dosya basit txt dosyas

deildir. kilik formatta bir data dosyasdr.

Dosyalarn ne tr dosyalar olduunu kontrol etmemize yarayan


file komutundan yeri geldike bahsedeceim. Bu ikilik formattaki
dosyay normal text editrlerle okuyamayz. Fakat
strings
komutuyla inceleyebiliriz. Bu yararl komuttan da yeri geldike
bahsedeceim.

Sisteme kullanc ekledikten sonra da yine bu komutu


kullanp tuttuu kaytlara bakarz.
imdi bir de /var/log/wtmp dosyasna bakalm. Sisteme
yaplan
btn
baarl
balantlar
/var/log/wtmp
dosyas
iindedir. Bu dosya da utmp dosyas gibi ikilik formattadr. Bu
nedenle bu dosyay da incelerken yine strings komutundan
faydalanacaz. Komutun konsol kts uzun olacandan strings
/var/log/wtmp | more eklinde bir kullanm uygun olacaktr.

imdi size iki ekran grnts vereceim ve bu


grntlerini
karlatrmanz
isteyeceim.
Birinci
grnts:

Bu
ekran
grnts
biraz
nce
kullandmz
/var/log/wtmp | more komutunun ktsnn en son sayfas.

ekran
ekran

strings

kinci ekran grnts:

Bu grnt de last | more komutunun kts. last komutuyla


sisteme yaplan en son giri-k kaytlar yani balantlar
grntlenir ve bu komut /var/log/wtmp ieriini baz alr. Bu iki
ekran
grntsn
karlatrdnz
zaman
kaytlarn
ayn
olduunu greceksiniz.
Bu kadar eyden bahsettik fakat hala yeni bir kullancy
nasl oluturacamz grmedik. imdi kullanc oluturmay
grelim.
Sisteme
yeni
bir
kullanc
ekleyeceimiz
zaman
kullanacamz temel komutlar adduser ve useradd komutlardr.
Siz her iki komutun da nasl kullanlacayla ilgili bilgileri
grntlemek iin --help komutunu kullanabilirsiniz. Ben daha
kolayma gelen adduser komutunu kullanacam. imdi sistemde
zurna adnda yeni bir kullanc oluturalm.

Nur topu gibi bir kullancmz oldu :) Zaten aklamalar


yaplm ekranda fakat biz nelerin deitiine bakalm. Sistem
zurna isminde bir grup oluturmu ve zurna kullancsn bu
grubun yesi yapm. Oluturulan bu yeni kullanc iin /home
altnda /zurna adnda bir dizin oluturmu. Daha nceden de
hatrlayacanz gibi kullanclarn ev dizininden bahsetmitik.
te /home/zurna dizini de zurna kullancsna ait kiisel dizin
(ev dizini). Bu dizine kendi kiisel dosyalarn atabilir. Ayrca
sisteme giri yaptnda varsaylan olarak bu dizinde almaya
balar. imdi cd /home/zurna ile kontrol edelim.

u ana kadar iler yolunda. Yine hatrlarsanz sisteme yeni


kullanc eklendii zaman /etc/passwd ve /etc/shadow dosyalarna
bu kullancyla ilgili bilgiler yazlr demitik. Bu iki dosyay
da inceleyelim. cat /etc/passwd komutuyla konsoldan passwd
dosyasnn ieriine bakalm.

Bizim zurna en altta yerini alm. Bir de cat /etc/shadow


komutuyla shadow dosyasn grelim.

Yine en altta bizim zurna ile ilgili kayd gryoruz. imdi


de passwd ve shadow dosyalarna yeni kullancyla ilgili yaplan
kaytlarn ne anlama geldiine bakalm.
nce passwd dosyasndaki kayta bakalm. Kayt u ekilde
yaplm:
zurna:x:1000:1000:,,,:/home/zurna:/bin/bash
Yukarda grdnz satr birbirinden : iaretiyle ayrlm bir
ka blmden olumu. lk blm kullanc ismi. x ile gsterilen
blm eskiden parolalarn ifrelenmi halde bulunduu yerdi.
imdiyse parolalar ifrelenmi olarak shadow dosyasnda yer

almaktadr. nc blmdeki 1000, kullancnn numarasn,


drdnc blmdeki 1000 ifadesi de kullancnn bal olduu
grubu belirtir. Virglle ifade edilen yerler de bizim kullanc
olutururken verdiimiz bilgilerin (kullancnn tam ad vs.)
aklamasyla
ilgilidir.
Biz
her
hangi
bir
ek
bilgi
vermediimizden o ekilde braklm. Dier blmde kullancnn
home yani ev dizininin /home/zurna dizini olduunu gsterir. Son
blm ise kullanc sisteme girdii zaman alaca kabuu
belirtir.
Farkna vardnz gibi passwd ve shadow dosyalarnda
kullanclar haricinde bir ok hesapla ilgili kaytlar vardr. Bu
kaytlar
sistemin
kendine
ait
sistem
hesaplaryla
ilgili
bilgilerdir.
Kullanc hesaplaryla ilgili shadow dosyasnda tutulan
kaytn
ne
olduuna
bakalm.
Yeni
eklediimiz
zurna
kullancsyla ilgili tutulan kayt udur:
zurna:$6$ttZw7OIi$LjmBdapfyNA6kKrXnAcF1xkgikQCGcLN3hs
NrwZmEZkVNLPmoRqD9KYF5TngV60FAlecJine.Qv5v28uO2p8z.:15944:0:99999
:7:::
Bu kayt parola ile ilgilidir. En bataki blm parolann hangi
kullancya ait olduunu gsterir. kinci blm ise parolann
ifrelenmi halidir. Bizim iin en nemli blm bu ikinci
blmdr. imdi parolann ifrelenmi haline yakndan bakalm:
$6$ttZw7OIi$LjmBdapfyNA6kKrXnAcF1xkgikQCGcLN3hsNrwZmEZkVNLPmoRqD9
KYF5TngV60FAlecJine.Qv5v28uO2p8z.
Linux sistemlerde parola hash+salt eklinde saklanr. Hash,
kriptografik zet demektir. Yani bir ifadenin (rnein parolann)
eitli algoritmalara gre kriptolanmasyla oluturulan yeni
ifadeye hash denir. Salt ise tuzlama denektir. Yani siz bir
sisteme
kullanc
ad
ve
ifreyle
kayt
olurken
sizin
belirlediiniz parola ifrelenerek veri tabannda saklanr fakat
gvenlii
artrmak
iin
sizin
belirlediiniz
parolaya
ifrelenmeden nce rastgele deerler eklenir ve bu ekilde
ifrelenir. te rastgele eklenen bu deerlere salt denir. Evet
bu ksa aklamadan sonra yukardaki ifrelenmi parolaya dnecek
olursak:
lk $ iareti ve ikinci $ iareti arasndaki say hangi
ifreleme/hash algoritmasnn kullanldn gsterir. Bu deer;
1 ise MD5
2 ise Blowfish
5 ise SHA256
6 ise SHA512 algoritmas ile ifrelendiini gsterir.
kinci $ ile nc $ iareti arasndaki ifade salt deeridir.
(tabi o da hash deeridir). Sonraki ifade ise parolann
ifrelenmi halidir.
Tabi her ifreleme algoritmasnn zet kts (hash) farkl
uzunlukta
olacaktr.
En
ok
tercih
edilen
ifre
krma
yazlmlarndan biri de John The Ripper (JTR) dir. Krlmak
istenilen ifreler ya da ifre bir dosyaya kayt edilerek en
temel kullanm ekliyle john Desktop/sfr gibi bir komutla
denemeler yaplabilir. Bu komut benim masastmde kaytl olan

sfr isimli dosyamn iindeki ifreleri krmaya almas iin


kullandm komuttur. JTR bir ok farkl parametreyle ve
wordlistlerle vs. kullanlabilir. Benim rnek olmas iin
verdiim komut en temel komuttur.

Tabi isterseniz yle bir komut da kullanabilirsiniz.

Her Linux sistemde JTR kurulu olacak diye bir kaide yok. Ben
Kali Linux kullandmdan her ey elimin altnda :) Neyse biz
kaldmz yerden devam edelim. Demitik ki bu zurna kullancs
zurna grubuna ye yapld. Bakalm yle miymi?

lk nce kendime baktm (root) sonra da zurna kullancsna


baktm. Bir kullanc farkl gruplara da ye yaplabilir. Bir
kullancnn hangi gruplara ye olduunu grmek iin de groups
<kullanc_ad> komutunu kullanrz.

Yeni grup oluturma vs. gibi konulardan da behsedilebilir


fakat u an iin bunlar yeterli diye dnyorum.
Evet
kullancnn
nasl
oluturulduunu
grdk.
Peki
kullancnn ifresini deitirme ilemini nasl yapyoruz? ok
basit bir ekilde passwd komutunu kullanarak. Komutu bu haliyle
kullandnz zaman kendi root ifrenizi deitirmi olursunuz.

Eer
herhangi
bir
kullancnn
ifresini
deitirmek
isterseniz passwd <kullanc_ad> komutunu kullanmanz gerekir.

Kullanc
hesabn
kilitlemek
iin
usermod
-L
<kullanc_ad> komutu kullanlr. Tekrar aktif hale getirmek
iin de usermod -U <kullanc_ad> komutu kullanlmaldr.

Tabi usermod komutu sadece bunun iin deildir. Kullanc


hesaplaryla
ilgili
bir
ok
deiiklii
bu
komutla
yapabilirsiniz. Kullanm parametreleriyle ilgili yardm ekrann
grntleyerek bilgi edinebilirsiniz.
imdi de who ve whoami komutlarndan bahsetmek istiyorum.Bu
komutlardan who komutu ile sisteme bal kullanclar listelenir,
whoami (ben kimim) komutuyla da sisteme giri ismi grlr.

Bir
chage
komutunun
sistemdeki
kullanclarn
grlebilir.

kullanmna
bakalm.
Bu
komutla
geerli
olan
ifre
parametreleri

Ayn zamanda chage komutuyla parola sresi deitirilebilir.


rnein zurna kullancsnn parolasnn sresinin 27 Austos
2014 de dolmas isteniyorsa chage -E 2014/08/27 zurna komutu
kullanlmaldr.

Yukardaki grntde bulunan hesap bitimi blmne dikkat


edin.
Root kullanc sistemdeki sper yetkili kulanc olduundan
her ey serbestti ona. O zaman baka kullanclarn kimliine de
rahata
brnebilir.
Evet
root
kullanc
herhangi
bir
kullancnn kimliine brnmek iin yani onun kimliiyle
sistemde almak iin su <kullanc_ad> ya da daha gzel bir
komut olan su - <kullanc_ad> komutunu kullanabilir. lk
komutla dier kullancnn kimliini kullanmaya, dier komutla da
hem o kullanc olmaya hem de direk onun kabuunda almaya
balarsnz. rnekle gsterelim.

Mesela
anlalmtr
zannederim.
imdi
daha
nce
bahsettiimiz who ve whoami komutlarnn arasndaki fark daha
iyi anlayabilmek iin zurna kullancsnn kimliindeyken bu
komutlar kullanalm.

Kullanc ismini zurna olarak semek hi de iyi olmad :)


Orada grdnz kemal ifadesi host addr. Yani bilgisayarmzn
ad. Host ad /etc/hostname dosyasnda bulunur. Bu dosyadaki ismi
istediiniz gibi deitirebilirsiniz. imdi cat /etc/hostname ya
da more /etc/hostname komutunu kullanarak dosyaya bakalm.

Bu
arada
bir
kullanc
kimliinde
kimliimize nasl dneceiz derseniz, exit
yapabiliriz.

alrken
kendi
komutuyla bu ii

Yine baka bir kullanc kimliindeyken, su ve su


komutlarnn kullanmna bakalm. Hatrlarsanz su komutuyla
dier kullanc oluruz fakat kendi dizinimizde alrz, su
komutuyla da hem dier kullanc oluruz hem de onun dizininde
alrz demitim. Herhangi bir kullanc root kullanc olmak
isterse su ya da su komutlarn olduu gibi kullanabilir. Yani
su root ya da su root demesine gerek yoktur. Root kullanc
olmak
isterseniz
root
kullancnn
parolasn
bilmek
zorundasnz.

lerleyen konularda bahsedeceimiz gibi her kullanc kendi


yetkileri
erevesinde
sistemde
ilemler
yapabilir.
Root
kullanc iin her hangi bir kstlama yoktur. Fakat dier
kullanclar yetkileri erevesinde hareket etmek zorundadr.

Root kullanc sistemdeki kullanclarla ilgili her trl


deiiklii
yapmaya
yetkilidir.
Kullancnn
parolasn
deitirebilir, engelleyebilir, belli bir sre sonra parolann
geerliliinin bitmesini salayabilir ve hesab tmden silebilir.
imdi bir kullanc hesabnn nasl silineceini inceleyelim.
Sistemdeki bir kullancnn hesabn silmek iin userdel komutu
kullanlr.
Bu
komutu
userdel
<kullanc_ad>
eklinde
kullanrsak passwd ve shadow dosyalarndaki o kullancyla ilgili
kaytlar silinir. Eer userdel -r <kullanc_ad> eklinde
kullanrsak bunlara ek olarak kiisel ev dizini de silinir.

Ben userdel kullandm fakat siz isterseniz deluser komutunu


da kullanabilirsiniz. Her iki komutla ilgili userdel --help ve
deluser --help komutlaryla kullanm parametreleri hakknda bilgi
alabilirsiniz.
Dosya Ve Dizinlere Eriim Yetkileri
Linux iletim sisteminde, dosya ve dizinlerle ilgili gl
bir koruma sistemi vardr. nceki konuda da bahsettiimiz gibi
root kullanc sistemdeki en yetkili kullancdr ve onunla
ilgili her hangi bir yetki kstlamas yoktur. Fakat sistemdeki
dier kullanclar her istediklerini yapma yetkisine sahip
deildirler. Sonuta her kullanc dizin ve dosyalarla alt

iin sistem gvenliinin salanmas bu dosya ve dizinlerin koruma


altnda olmasyla salanr. Her kullanc kendi yetkisi dahilinde
iler yapabilir. rnein root kullancnn yazma yetkisinin
bulunduu nemli bir dosyaya sradan bir kullancnn da yazma
yetkisi olursa bu durum nemli bir zaafiyet oluturur. Bu
gvenlik mekanizmas sadece kt niyetli kullanclar iin deil
ayn zamanda acemi kullanclar iin de bir tedbirdir.
Kullanclar bir dosya ya da dizinle ilgili farkl
eylemde bulunabilirler. Bunlar
okuma, yazma
ve altrma
eylemleridir. Sistemdeki kullanclarn ya da gruplarn neleri
yapp neleri yapamayaca dzenlenebilir.
nceki konulardan da hatrlayacanz gibi bir dosya ya da
dizin ieriini listelemek iin ls -l komutunu kullanyorduk. Bu
komutun ktsnda dosya ve dizinlerle ilgili baz ifadeler yer
alyordu. imdi tekrar bakalm ve bu ifadelerin ne anlama
geldiini grelim.

Listelediimiz dizin ieriinde bulunan ve dosya/dizinlerle


ilgili bilgi satrlarnn bandaki kodlamalara dikkat edin.
rwxrwxrwx formatndaki bu kodlamalarn banda bulunan iareti
bunun bir dosya olduunu, d harfi ise bunun bir dizin (directory)
olduunu gsterir.9 karakterden oluan bu kodlamalar erli
gruplar halinde dnmeliyiz. Yani rwx
rwx
rwx gibi. Birinci
grup dosya/dizin sahibinin yetkilerini, ikinci grup dosyann
sahibiyle ayn grupta bulunan kullanclarn yetkilerini, nc
grup
ise
dier
(genel)
kullanclarn
yetkilerini
ifade
etmektedir. Kodlamadaki karakterler u anlama gelir:
r : okuma yetkisi (read)
w : yazma yetkisi (write)
x : altrma yetkisi (execute)
imdi yukardaki ekran grntsnde bulunan rnein deneme
dosyasyla ilgili satrda bulunan ve yetkileri ifade eden
kodlamalar inceleyelim. Kodlamamz u:
-rwxr-xr-x
En bata bulunan iareti bunun bir dosya olduunu gsterir
demitik. imdi dier ifadeyi erli gruplara ayralm. Yani u
ekilde dnelim: rwx r-x r-x
Evet imdi bunlar ne anlama
geliyor tek tek inceleyelim:

rwx : Dosyann sahibinin okuma, yazma ve altrma


yetkileri var.
r-x : Dosyann sahibiyle ayn grupta bulunan kullanclarn
okuma ve altrma yetkisi var.
r-x : Dier kullanclarn okuma ve altrma yetkisi var.
Dosyamzla
ilgili
yetkiler
bunlarm.
imdi
bir
ka
altrma yapalm. Aadaki kodlamalarn ne anlama geldiine
bakalm.
rwxrwxrwx
:
Bu
dosyay
tm
kullanclar
okuyabilir,
yazabilir, eer altrlan bir dosya ise altrabilir.
Dosyay silebilir. Yani tehlikeli bir durum.
rwxr-xr-- : Bu dosyay herkes okuyabilir, sahibi ve
sahibiyle
ayn
gruptaki
kullanclar
altrabilir(eer
altrlabilir dosya ise), sadece sahibi yazabilir (isterse
silebilir anlamna da gelir) ve dier kullanclar da sadece
okuyabilir.
rwx------ : Dosyann sahibi dosyayla ilgili her trl ilemi
yapabilir, dier kullanclara dosya tamamen kapal.
Dosya ve dizinlerle ilgili eriim yetkilerini istediimiz
gibi deitirebiliriz. Tabi root kullanc olarak. Bunun iin
chmod komutundan faydalanabiliriz. Komutun en kolay kullanm
ekli chmod <ugoa> <+=-><rwxst><dosya/dizin> kullanmdr.
u : dosya ya da dizinin sahibi
g : dosya ya da dizin sahibiyle ayn gruptaki kullanclar
o : dier kullanclar
a : herkes
+ : yetki ekleme
: yetki karma
= : yetki eitleme
r : okuma yetkisi
w : yazma yetkisi
x : altrma yetkisi
s : suid biti
t : sticky bit
rnek bir dosya zerinde ilemler yapalm.

Yukarda
da
grld
gibi
deneme
dosyasnn
eriim
yetkileri rwxr-xr-x
olarak grlyor. Bu dosyann eriim
yetkilerini deitirelim. rnein sahibi haricinde dosya dier
tm kullanclara kapal olsun. Bunun iin chmod go-rx komutunu
kullanalm.

Evet istediimiz gibi dzenlenmi. Bu komutla unu demi


olduk: Grup (g) ve dier (o) kullanclarn okuma (r) ve
altrma (x) yetkilerini kaldr (-). Zaten bu kullanclarn
yazma (w) yetkisi yoktu.
imdi de tm kullanclar iin okuma yetkisi verelim. Bunun
iin de chmod a+r deneme komutunu kullanmamz yeterli olacaktr.

Kullandmz komutla, btn (all) kullanclara okuma (r)


yetkisi ver (+) demi olduk.
Yetkileri dzenlemek iin kullandmz chmod komutunu daha
pratik bir formatta kullanabiliriz. Yetkileri saysal olarak
belirterek pratik bir ekilde deitirebiliriz. Yetki durumunu
gsteren kalbn saysal karlklar u ekildedir:
dosyann sahibi

r = 4
w = 2
x = 1

dosyann sahibiyle
ayn gruptakiler
r = 4
w = 2
x = 1

dier
kullanclar
r = 4
w = 2
x = 1

Yukardaki eletirmelere gre bundan sonra rnein rwx


yerine 4+2+1 yani 7 kullanabiliriz. Birka rnee bakalm:
rwxrwxrwx = 777
rwx------ = 700
rwxr-xr-x = 755 (r-x 4+0+1 olduundan 5 ile gsterilir)
rnekleri incelerseniz bu yntemin ok daha kolay ve pratik
olduunu greceksiniz. imdi bu formatta kullnma da bir rnek
yapalm. rneimiz yine ayn dosyayla ilgili olsun.

Grnty incelersek chmod 777 deneme komutuyla deneme


dosyasnn eriim yetkilerini rwxrwxrwx yapyoruz. Yani tm
kullanclar istedii her deiiklii yapabilir dosya zerinde.
Biz byle olmasn istemeyiz. O zaman yetkileri deitirelim.
rnein sahibi tam yetkili olsun (rwx=7), sahibiyle ayn
gruptakiler ve dier kullanclar da okuma ve altrma (rx=4+0+1) yetkisine sahip olsun. Yani yetkiler rwxr-xr-x eklinde
olsun. Bu durumda kullanmamz gereken komut chmod 755 deneme
olacaktr.

Bu formatta kullanm bazen ok daha pratiktir.


Kk bir rnek daha yapalm. rnein root kullanc kendi
ev dizininde nemli adnda bir dosya oluturmu olsun. Bu
dosyann izinlerine bakalm. Sonra eriim izinlerini sahibinin
dndaki kullanclara tamamen kapatalm.

Grdnz gibi eriim engellendi. Dier kullanclar bu


dosya zerinde okumak da dahil her hangi bir deiiklik
yapamazlar.
Eer bir dizinin eriim yetkilerini alt dizin ve onlarn da
altndaki dosyalarla birlikte deitirmek isterseniz chmod -R
<755> <dizin> gibi bir komut kullanmanz gerekir.
Yeri
gelmiken
bir
konudan
daha
bahsedelim.
Bazen
yanllkla bir dosyay silebilirsiniz. Ya da sistemle ilgili bir
konfigrasyon
dosyasn
dzenlersiniz
fakat
sistem
yeniden
baladnda
sizin
dzenlediiniz
ayarlarn
kaybolduunu
grrsnz. Tm bunlar engellemek iin
chattr komutundan
faydalanabilirsiniz. Bu komutla bir dosya zerinde root kullanc
olarak bile deiiklik yaplmasn engellemi olursunuz. Tabi

tekrar ayn komutla dosyann zelliini deitirene kadar. imdi


bir rnek verelim. Ev dizinimizde belge1 adnda bir dosya olsun.
Bu dosyay deitirilemez yapmak iin chattr +i belge1 komutunu
kullanabiliriz. Sistemde bu ekilde dosya olup olmadn da
lsattr komutuyla grebiliriz. Eer bir dizinin altndaki tm
dosyalar kontrol etmek isterseniz komutu lsattr -R <dizin>
eklinde kullanabilirsiniz.

Artk belge1 dosyamz deitirilemez olduuna gre deneyelim


bakalm gerekten root kullanc olarak bile dosya zerinde
herhangi bir deiiklik yapabiliyor muyuz?

Dosyamz silmeye altk fakat


dosyaya bir eyler yazmaya alalm.

silemedik.

imdi

bir

de

Grdnz gibi root kullanc olduumuz halde hi bir ey


yapamyoruz. Ama da zaten yanllkla ya da baka sebeplerden
bir ey yaplmasn engellemek. Dosyay geri eski haline getirmek
iin de chattr -i belge1 komutunu kullanyoruz.

Evet artk dosyamz eski haline geldi ve deitirilemez


zelliinden kurtuldu. Bunu
lsattr
komutunu kullanarak da
anlayabiliyoruz. imdi dosyaya yazmaya alalm bakalm izin
verecek mi?

Evet iler yolunda. Bu konuyu da kapatalm baka konuya


geelim.
Son olarak u gizemli suid biti meselesinden de bahsederek
bu blm bitirelim. Bir program altran kullanclarn
program alt srece program dosyasnn sahibinin yetkilerine
sahip olmalarn salayan ey suid biti dediimiz eydir. Yani
sistemde bir program kullanmas gereken fakat o program
kullanmasna normal artlarda yetkisi olmayan bir kullancnn
geici olarak program kullanabilmesi de diyebiliriz. rnein
sistemde normal bir kullanc var. Bu kullanc hesabyla ilgili
baz
deiiklikler
yapmak
istiyor.
Fakat
root
kullanc
olmadndan bunu yapamayacakken eer kullanaca program daha
nceden suid biti ayarlanm bir programsa bu program kullanarak
gerekli olan deiiklikleri yapabiliyor. Aslnda o programn
alrken erimesi gereken dosyaya eer kullancnn izni yoksa,
geici olarak bu izni olmu oluyor ilgili program kulland
srece. Mesele ksaca byle. Sistemde suid bite sahip programlar
bulmak iin, rnein /usr/bin altndaki suid bite sahip dosyalar
bulmak iin find /usr/bin -perm -4000 komutu kullanlr.

imdi
altrlabilir
tanesinin eriim yetkilerine

bu
program
dosyalarndan
bir
bakalm. rnein sudo nun eriim

yetkilerine bakalm.

Eriim yetkilerine baktmzda rws ifadesini


Buradaki s , suid bitinin aktif olduunu gsteriyor.

gryoruz.

Program Kurma-Kaldrma-Sistem Gncelleme


Linux'ta program kurmak Windows'tan olduka farkldr ve
aslnda ok basittir. Linux'ta program kurmak iin bir ka
seeneimiz vardr. Bunlardan bir tanesi ihtiyacmz olan
program
kaynak
koddan
derleyerek
kurmaktr.
kincisi,
kullandmz datma uygun olan program kurulum paketlerinden
paket ynetim sistemi yardmyla kurulum yapmaktr. Bir dier
seenek de repository denen datmn kulland depolardan
otomatik kurulum yapmaktr.
Derlenmi
ve
paket
ynetim
sistemiyle
kuruluma
hazr
dosyalara paket denilmektedir. Farkl Linux datmlar farkl
paket dosyalar kullanmaktadr. Gnmzdeki Linux datmlarn
byk
ounluu
iki
tip
paket
tr
kullanmaktadr.
RedHat/CentOS/Fedora
ve
benzer
datmlar
rpm
paketini
kullanrken Debian/Ubuntu ve benzer Linux datmlar da deb
paketini kullanmaktadr. Tabi bu paket dosyalarnn kurulumunu
yapmak iin de farkl paket ynetim sistemleri kullanlmaktadr.
Yine RedHat/CentOS/Fedora datmlar rpm paket yneticisini
kullanrken Debian/Ubuntu datmlar dpkg paket yneticisini
kullanmaktadr.
Bu
bahsettiklerim
manual
paket
ynetim
sistemleridir. Bir de program repolarndan otomatik olarak
paketlerin indirilip kurulmasn salayan yneticiler vardr.
Bunlar da rpm paketlerini kullanan datmlar iin yum , deb
paketlerini
kullanan
datmlar
iin
de
apt
paket
yneticileridir.
imdi ilk nce Debian tabanl Linux datmlarda program
kurma, program kaldrma, sistem gncelleme ilemlerine bakalm
daha sonra da RedHat tabanl sistemlerde bu iler nasl oluyor
onu inceleyelim. rnein sisteminize Opera taraycy kurmak
istiyorsunuz. Opera taraycya ait deb paketini indirdiniz.
Manuel olarak kurulumunu yapmak istiyorsunuz. Bunun iin dpkg
paket ynetim sistemini kullanacaz.

Grdnz gibi paketimiz deb uzantl. Paketimiz hangi


dizindeyse o dizinin yolunu belirterek komutumuzu veriyoruz.
rnein ben ev (home) dizinime kaydettim o yzden komutu u
ekilde kullanyorum: dpkg -i <paket.deb> Komutu kullanrkan dpkg
-i ksmndan sonra deb paketinin isminin ilk bir ka harfini
yazarak tab tuuna basarsanz komut otomatik tamamlanacaktr.
rnein dpkg -i opera yazp tab tuuna bastnzda komut
tamamlanacaktr.

Opera
istiyorum.

taraycy

kurduk.

Ben

kendi

localhostumda

denemek

Yukarda yazan alyor meraklanma ifadesi Opera ile


ilgili deil. Apache nin almasyla ilgili :) Evet deb uzantl
program dosyalarnn kurulumu temel olarak bu ekilde. Diyelimki
ofis programna ihtiyacnz var ve LibreOffice ofis programn
kurmak istiyorsunuz. Bununla ilgili paketleri indirdiniz fakat
baktnzda bir ok deb paketinden olutuunu grdnz. Bu
paketleri tek tek kurmak yerine hepsini birden kurabiliriz.

Grdnz gibi LibreOffice ile ilgili bir ok paket var ve


hepsinin de kurulmas gerekiyor. Bunu dpkg -i *.deb komutunu
kullanarak kolayca halledebiliriz. Tabi bu deb paketleriyle
ilgili dizinde olmanz gerekir.

Bu komutla, uzants deb olan btn paketlere ilemi uygula


demi oluyoruz.
Burada kk bir bilgi verelim. Debian versiyonunu renmek
iin cat /etc/debian_version komutunu kullanabiliriz.

Manuel
kurulumda
sisteminize
uygun
paketleri
bulup
yklemeniz gerekir. Yani o program paketi (deb paketi) dzgn
kurulup alabilmesi iin sisteminizde dier baz paketlere
ihtiya duyabilir. Bu duruma bamllk (depends) denir. Program
almazsa o programla ilgili baml paketlerin de yklenmesi
gerekir. Eer daha nceden sisteminizde bu paketler varsa sorun
kmadan program kurulup alacaktr. Bir paketle ilgili bilgi
almak iin dpkg --status <paket_ad> komutu kullanlabilir.
rnein kurduumuz opera taraycsyla ilgili bilgileri almak
iin dpkg --status opera komutunu kullanalm. sterseniz komutu
dpkg -s opera eklinde de kullanabilirsiniz.

Bilgiler arasnda depends diye bir blm greceksiniz. Yani


operann almas iin bunlara ihtiyac varm. altna gre
demek
ki
sistemimizde
bu
paketler
ykl.
Henz
kurulum
yapmadmz bir deb paketiyle ilgili bilgi almak iin de dpkg
--info <program.deb> komutu kullanlr.

Evet
programlar
paketlerden
manuel
olarak
nasl
kurabileceimizi grdk. imdi de sistemde kurulu bir program
kaldrmak iin ne yapacamza bakalm. Sistemde kurulu bir
program
kaldrmann
en
temel
yolu
dpkg
--purge
remove
<program_ad>
komutunu
kullanmaktr.
Ya
da
dpkg
--purge
<program_ad> komutu da kullanlabilir. Bu ekilde program tm
dosyalaryla birlikte kaldrlacaktr.

imdi de rpm paketini kullanan Linux datmlarnda bu


ilemler nasl yaplyor ona bakalm. Debian sistemlerdeki manuel
paket ynetici sistem olan dpkg yerine RedHat sistemlerde
kullanlan sistem rpm dir. Yani kulland paketle ayn ad
tar.
Bir
rnekle
program
kurulumunun
nasl
yapldn
gsterelim. rnein sistemimize uygun Chrome browser paketini
indirerek kurulumunu yapalm.

Grdnz gibi indirdiimiz paket rpm uzantl. Bu ekilde


rpm uzantl paketleri kurmak iin kullandmz en temel komut

rpm -ivh <program.rpm> komutudur.

Programmz sisteme kuruldu. Sisteme manuel olarak kurmak


istediiniz rpm program paketlerini yine bu temel komutu
kullanarak kurabilirsiniz. Buradaki -ivh u anlama gelmektedir:
i : paketi kur
v : ilemleri ekranda gster
h : kurulum dzeyini gster
Kurulan paketi yani program sistemden kaldrmak iin de rpm
-ev <paket_ad> komutu kullanlr.
Manuel olarak program kurulumu ve nasl kaldrlacan
grdk. imdi bu ilemleri otomatik olarak nasl yapabileceimize
bakalm. Kallanlan manuel paket ynetim sistemlerinin haricinde
ok daha kolay program kurmamz salayacak ve kurmak istediimiz
programlar otomatik olarak tm bamllklaryla beraber program
deposundan indirerek sistemimize kurulumunu yapacak sistemler de
vardr.
Biz
bu
sistemlerden
Debian
tabanl
datmlarn
kulland apt ve RedHat tabanl datmlarn kulland yum
paket ynetim sistemlerinden bahsedeiz.
Bu paket ynetim sistemleri, repository ya da ksaca repo
dediimiz datmn internet zerindeki program depolarndan
istediimiz programlar sistemimize tm bamllklaryla beraber
otomatik olarak indirerek kurulumunu yapar. Hangi depolardan
paketlerin indirilecei Debian sistemlerde etc/apt/sourcest.list
altnda bulunur.

Depolar
rpm
tabanl
datmlarda
da
/etc/yum.repos.d
altndaki dosyalarda bulunur.
Yukardaki ekran grntsne bakacak olursak deb http://
eklinde balayan adresler gryoruz. te biz sisteme bir
program kurmak istediimizde apt paket ynetim sistemi bu
adresteki depolardan program indirerek sistemimize kuruyor. Depo
adreslerinin yanndaki ifadeler de u anlama geliyor:
main
: debian ana paketleri
contrib : katkclarn yardmyla gelitirilen paketler
non-free : zgr olmayan paketler
Bata yazan deb-src ise depodaki paketlerin kaynak kodlarn
ifade eder.
Bir program yklemek iin kullanacamz temel komut apt-get
install <program_ad> komutudur. RedHat ve trevi datmlar iin
de temel olarak yum install <program_ad> komutu kullanlr. Bu
komutlar kullandktan sonra eer program depolarda varsa
indirilip kurulumu yaplacaktr. Kurmak istediimiz program ve
depolarda olup olmadyla ilgili bilgi almak iin de apt-cache
search <program_ad> komutu kullanlabilir. Tabi gncellemelerle
birlikte yeni programlar depoya eklenmi olabilir.

Program kurmak iin rnein yukarda arattmz bleachbit


iin apt-get install bleachbit komutunu kullanrz.

Eper rpm
paketi
kullanan
datmlarda program
isterseniz,
rnein
gedit
text
editr
programn
isteyelim. Komutumuz yum install gedit olmaldr.

kurmak
kurmak

Her iki durumda da mantk ayn fakat datmlarn kulland


paket sistemi ve dolaysyla paket ynetim sistemleri farkl.

Kurmak istediimiz programla ilgili paket hakknda bilgi


almak iin apt-cache show <program_ad> komutunu kullanabiliriz.

Sisteme kurulan bir program kaldrmak iin de apt-get


remove
komutu
kullanlr.
Komutu
apt-get
--purge
remove
<program_ad>
eklinde
kullanrsanz
program
konfigrasyon
dosyalaryla birlikte kaldrrsnz. Bu komut apt-get purge
<program_ad> tarznda da kullanlabilir. rnein, daha nceden
kurulumunu yaptmz gedit metin editr programn kaldrmak
isterseniz aadaki gibi bir komut kullanmalsnz.

Sistemi gncellemek iin de


upgrade komutlar kullanlabilir.

apt-get

update

ve

apt-get

Komutun ikisini birden konsolda kullanmak iin daha nce


anlattmz
gibi
apt-get
update
&&
apt-get
upgrade
diyebilirsiniz.
Datmnz
yani
versiyonunu
ykseltmek
istiyorsanz
bu
sefer
apt-get
dist-upgrade
komutundan
faydalanabilirsiniz.

Sistemde daha nceki programlardan kalan eski ve gereksiz


artklar temizlemek iin kullanabileceimiz iki komut vardr.
Bunlar apt-get autoremove ve apt-get autoclean komutlardr.
Bylece plerden kurtulmu olursunuz.

Sistemi gncellemek istediinde bazen


gncellenmediini
grrsnz. Bunun nedeni sisteminize kurulan 3.parti programlar
olabilir. ncelikle bunlardan kurtulmak gerekir. Bunun iin aptget -f install komutunu kullanmanz lazm. Artk byk ihtimalle
sistemi gncelleyebileceksiniz.
RedHat
tabanl
sistemlerde
kurulan
paketi
sistemden
kaldrmak iin yum remove <paket_ad> komutu kullanlr. Sistem
gncellemek iin de yum update ve yum upgrade komutlar
kullanlr. Kaldrlan programla ilgili kalntlar temizlemek
iin de yum clean all komutu ie yarayacaktr. Paket aramak ve
bilgi almak iin de yum search <paket_ad> komutu kullanlr
diyelim ve dier bir konu olan kaynak koddan program kurma
konusuna geelim.
Linux sistemlerde program kurmak iin bir ka yol var
demitik. O yollardan bir tanesi de ihtiyacmz olan programn
kaynak kodlarn indirerek derlemek ve kurulumu bu ekilde
yapmak. Bunun iin kulanlan komut kalb u ekildedir:
./configure
make
make install
Kaynak kodu indirilen paketin iinde bulunan readme, install
vs. gibi yerler incelenmelidir. Genel kurulum kalb yukardaki
gibi
olmakla
beraber
bazen
intall
scriptleri
konsoldan
altrlarak kurulum yaplabilmektedir.
Kurulacak
programn
kaynak
kodlarnn
olduu
dosya
iindeyken,
rnein
dosyamz
ev
klasrmzdeyse
cd
<kaynak_kod_dosyas>
diyerek
o
dosya
iindeyken
srasyla
./configure, make ve make install komutlarn kullandmzda
programmz kurulmu olacaktr.
Dizin Oluturma-Dizin Silme
Yeni dizin/klasr oluturmak iin mkdir komutunu kullanamz
gerekir. rnein mkdir taslak komutuyla taslak isminde yeni bir
dizin oluturalm.

Eer birden fazla dizin oluturmak istiyorsak mkdir <dizin1>


<dizin2>.. komutu iimizi grr.

stediimiz gibi birinci ve ikinci adnda dizinlerimiz


oluturulmu. sterseniz bir dizin ve onun da alt dizinlerini tek
komutla
oluturabiliriz.
Bunun
iin
rnein
mkdir
-p
taslak2/kitap/kaynak gibi bir komut kullanalm ve taslak2 adnda
bir dizin ve onun alt dizini olarak kitap ve onun da alt dizini
olan kaynak dizinlerini oluturalm. Dikkat ederseniz bunu
yapabilmek iin -p kullanyoruz. Eer p parametresini kullanmay
unutursanz hata mesaj alrsnz.

Dizinleri silmek iin de rm komutu kullanlr. Eer


alt dizinlerindeki dosyalarla birlikte silmek istiyorsanz
<dizin> komutunu kullanmalsnz. Eer silerken bana
derseniz rm -ir <dizin>, sorgusuz sualsiz ne var ne yok
derseniz rm -rf <dizin> komutunu kullanmalsnz.

dizini
rm -r
sorsun
silsin

Birka farkl dizin silmek isterseniz dizinleri yan


belirtebilirsiniz. rnein rm -ir <dizin1> <dizin2> gibi.

yana

Dosya lemleri
Dosya oluturma, kopyalama, tama, ieriini okuma, komut
ktlarn dosyaya ynlendirme vs. ilemleri nasl yaplr ya da
ka farkl ekilde yaplabilir onlara bakalm.
Bahsedilen bu ilemler iin bir ok komut kullanlmaky
tadr. Biz cat komutuyla balayalm. Bu komutun ilevlerinden
biri text dosyalarnn ieriini okumaktr. Aslnda en fazla bu
i iin kullanlr. Bir text dosyasnn ieriini konsoldan
okumak istediimizde genellikle bu komutu kullanrz. imdi
rnein /etc dizini altndaki
passwd dosyasnn ieriini
okuyalm. Bunun iin kullanmamz gereken komut cat /etc/passwd
komutudur.

Yeni bir text dosyas oluturmak iin de cat komutunu


kullanabiliriz. rnein cat > hacker komutuyla hacker adnda bir
dosya oluturalm. Ayn zamanda bu dosyann iine istediimiz
ifadeyi de yazalm.

Yazacamz eyler bittikten sonra imle satr bandayken


ctrl+D tularna basarak yazma iini tamamlayabiliriz ve komut
satr eski haline dner. Dosyamz istediimiz gibi olutu.

Metin dosyas oluturmak iin kullanabileceimiz komutlardan


bir tanesi de touch komutudur. Mesela touch test1 komutuyla test1
dosyasn oluturalm.

Aslnda baz
komutlarn ok farkl
kullanm alanlar
olabilir. Bu komutlar biz yerine gre kullanabiliriz. Bazen ayn
ii yapan komutlardan bize daha kolay gelenini kullanmak isteriz.
rnein bir text dosyasnn ieriini okumak iin more komutunu
da kulanabiliriz. Aslnda bu komut genelde konsol komut kts
uzun olduu zaman bu kty dzenli grp rahat okummz
salamak iin kullanlr. imdi more /etc/passwd komutuyla passwd
dosyasn okuyalm.

Evet bir baka komutumuz da echo komutu. Bu komutu


kullanarak da yeni bir dosya oluturabiliriz ya da bir dosyann
iine yazabiliriz. rnein komutu echo of ulen of > zeynep
tarznda kullanrsak ev dizinimizde zeynep dosyas oluturulacak
ve iine of ulen of yazlacaktr.

Eer zaten zeynep isminde bir dosya varsa ve ii bosa yine


bu ekilde > operatrn kullanarak dosyann iine istediimizi
yazdrabiliriz. Eer dosya bo deilse bu sefer >> operatrn
kullanarak dosya iindeki ifadenin altna istediimiz ifadeyi
yazdrabiliriz.

Evet anlalabilecei gibi > ve >> operatrleriyle bir


dosyaya
ynlendirme
yapabiliyoruz.
Bunu
komutlarn
konsol
ktsn bir dosya iine yazdrmak iin de kullanabiliriz.

Bir dosyann son on satrn konsolda grntlemek iin de


kullanabileceimiz bir komut vardr. Bu komut tail komutudur.
rnek olarak /etc/shadow dosyasnn son on satrn ekranda
grelim. Bunun iin tail /etc/shadow komutunu kullanmalyz. Eer
son be satr grmek isterseniz
tail -n 5 /etc/shadow
diyebilirsiniz.

Dosya
ieriini
grntlemek
iin
kulanabileceimiz
komutlardan biri de less komutudur. rnein less /etc/hostname
diyelim. Konsola geri dnmek iin q tuuna basmalyz.

Bir baka komutumuz da sort komutu. Bu komut belge ktsn


alfabetik tarzda konsolda gsterir. Eer sort -r <dosya> eklinde
kullanrsak ters alfabetik olarak yanstr.

Evet yukardaki grntden zaten her ey anlalyor. Burada


ek bilgi olarak unu da syleyelim. Bu komut sadece dosya
ilemlerinde deil komut ktlarnn konsolda dzgn grnmeleri
iinde de kullanlr.

Bir dosya iindeki satr, karakter ya da kelime saylarn


merak ediyorsanz meraknz gidermek iin
wc (wordcount)
komutunu kullanabilirsiniz. -l ile satr, -c ile karakter ve -w
parametresi ile de kelime says renilebilir. Eer sadece wc
eklinde parametresiz kullanrsanz hepsini gsterir.

Yukarda tail komutunun ne ie yaradn grdk. imdi buna


benzer olan head komutuna bakalm. tail komutu ile text dosyann
ya da komut ktsnn som on satrn grntlerken head tam
tersini yapyor yani ilk on satrn grntlyor.
Tabi
isterseniz
-n
ile
ka
satr
grmek
istediinizi
belirtebilirsiniz.
Mesela
ilk
be
satrn
grntlenmesini
istiyorsanz
head
-n
5
<dosya/komut>
tarznda
bir
komut
kullanabilirsiniz.

Yine yukarda anlattmz cat komutuna benzer bir de


komutumuz var. Bakalm bu komutumuz ne yapyor?

tac

imize yarayacak faydal komutlardan bir tanesi de nl


komutudur. Bu komut zellikle programlamayla uraanlarn daha
ok
iine
yarayacaktr.
Bir
programn
kaynak
kodlarn

inceliyorsunuz fakat satrlar numaralandrlmad iin biraz


zorlanyorsunuz. te nl komutu her satrn bana artrarak say
ekler.

Komut ktsn ya da belge ieriini sayfalara blmek iin


pr komutunu kullanabiliriz.

Siz de rnein ls -la | pr komutunu kullanp kty


inceleyebilirsiniz.
Eer dosya iindeki ifadeleri 16 lk say sisteminde
grntlemek isterseniz bunun iin od -x <dosya> komutunu
kullanabilirsiniz. Eer -x kullanmazsanz 8 lik sistemde kt
alrsnz.

Bildiiniz gibi /etc/hostname dosyasnda hostumuzun yani pc


mizin ad bulunuyor. Benim hostun ad kemal olduu iin ktda
bu ifadeyi 16 lk sistemde gsterdi. Ben de salamasn gstermek

iin echo komutundan faydalandm. Bu komut yazlan ifadeyi


konsolda grntler. Ben echo <string> yani herhangi bir ifade
yazdmda bunu aynen ekranda gsterir. Ben echo kemal | xxd
komutuyla kemal ismini ekrana 16 lk sistemde yanst demi oldum.
Bir de tee komutuna bakalm. Hatrlarsanz daha nce cat
komutuyla dosya oluturup iine istediimiz ifadeleri yazmay
anlatmttk. Hatta cat > hacker diye bir rnek vermitik. imdi
kullanacamz tee komutu biraz daha farkl olarak yazlan
ifadeyi hem standart ktya (yani konsola) yanstr hem de
oluturulan dosyaya yazar. Yazma ilemini bitirdiimize ctrl+D
ile kabiliriz.

Bir baka komutumuz olan paste komutunu incelemeye geldi


sra. Bu komut iki ya da daha fazla dosyay alarak, satrlar
ardk olarak birbirine ekler ve buna gre olan kty
gsterir. Aadaki rnekle kolayca anlayacaksnz ne demek
istediimi.

Daha baka komutlar da inceleyeceiz fakat burada kk bir


hatrlatma yapalm ondan sonra devam edelim. Baz komutlar
kullanrken | operatrn de kullandmz grdnz. Bu iareti

pipe (borulama) denen ilemi yaparken kullanrz. Borulama bir


komut ktsn alp dier komuta girdi yapmak demektir. rnein
en basit haliyle ls -la | wc -l gibi bir komutu deneyebilirsiniz.
Tabi bu kullanl komut ok farkl ekillerde kullanlabilir.

Bir hatrlatma daha yapalm. rnein echo komutunda tek


trnak ya da ift trnak iindeki string konsola yanstlyordu.
Fakat ters trnak (`) arasndaki ifade string olarak alglanmaz.

rnekten de grld gibi demek ki ters trnak arasndaki


ifade komut olarak alglanyor. Hem bununla ilgili hem de
pipeleme ile ilgili Kim Korkar Linux'tan? isimli kitapta ho bir
rnek vard. Aynen yle:

Gzel bir rnek. Evet bu hatrlatmalar yaptktan sonra


baka bir komutu incelemeye geebiliriz. Sradaki komutumuz grep
komutu. Bu komut da ileri bir hayli kolaylatran faydal
komutlardan biridir. Dosya ya da komut ktsnda bir karakter
dizisi (string) aradmz zaman grep komutunu kulanrz.

Yukardaki rnekte txt dosyas iinde linux geen yerleri


aradk. Fakat byk harfle balayan Linux'u gremedik. Bykkk
harf
ayrm
yaplmamas
iin
grep
-i
komutu
kullanlmaldr.

Aradmz ifadenin getii satr numaralarn


istersek grep -ni eklinde komut kullanmalyz.

da

grmek

rnein bulunduumuz dizindeki tm dosyalarda her hangi bir


yerde geen bir stringi aramak iin grep <string> * | more gibi
bir komut kullanabiliriz.

Bu komutla ilgili kk bir rnek daha verelim


geldike bu komuttan faydalanacamz belirtelim.

ve

yeri

Devam edelim. imdi de yine kullanl bir komut olan cut


komutundan bahsedelim. Bu komutla da baz satrlarn baz
alanlarn listeleyebiliriz. Yine bir rnek zerinde inceleyelim.

lk nce rnein passwd dosyasnn ilk be satrn grelim.


Sonra mesela : ile ayrlm alanlardan sadece birinci ve beinci
alandaki ifadeleri grelim. Bunun iin cut -d: -f 1,5 /etc/passwd
| head -n 5 komutunu kullanmamz gerekir.

Komutu incelerseniz -d ile alanlarn ayrld yerleri, -f


ile de kanc alanlar grmek istediimizi belirttik.
Komutu farkl bir formatta da kullanabilirsiniz. rnein bu
sefer tail -n 6 /etc/passwd | cut -d : -f 3 komutunun kts
aadaki gibi olacaktr.

sterseniz -c
belirtebilirsiniz.

ile

gsterilecek

karakter

saylarn

da

imdi de tr komutuna bakalm. Bu komut dosyalar iindeki


karakterleri istediimiz gibi deitirmemizi salar. En temel
kullanm aada grld gibidir.

Kk harfleri byk harflerle deitirmi olduk. Bunu daha


kolay bir komutla yapabilirdik.

Daha nce grdmz ynlendirme operatrlerine bir tanesini


daha ekleyeli. Hatrlarsanz > ve >> operatrlerini ynlendirme
ilemlerinde kullanyorduk. Bunlarn haricinde bir de < operatr
var. Bu operatr dierlerinden fakl olarak dosyay girdi
alyor. Yani belirtilen dosyann ieriini alarak bu ierie gre
deiiklik yapyor. imdi hem tr komutunu hem de > ve <
operatrlerini beraber kullanalm.

Yukarda grm olduunuz komutla unu demek istedik: belge2


dosyasn al, bu dosyadaki kk harfleri byk harf olarak
deitir ve yenibelge2 adl bir dosya olutur ve bu dosyann
iine yaz.
Eer -d parametresini kullanrsanz belirtilen karakteri yok
sayacaktr. rnein cat yenibelge2 | tr -d E kullanmna bakalm.

Bu
konunun
devam
olarak
sed
ve
awk
kullanmndan
behsedeceim fakat bu iki nemli konudan nce bahsetmemiz gereken
bir ka komut var. Bu komutlar file, stat, find, locate, which ve
whereis komutlar. Bunlar da arada kaynamadan anlattktan sonra
sed ve awk kullanmna geebiliriz.
Evet file komutuyla balayalm. Bu komutla sorguladmz
dosyann ne trde bir dosya olduu hakknda bilgi alabiliriz.
Bunun iin file <dosya> komutunu kullanmamz yeterlidir. imdi
daha nce ilemi olduumuz ls komutunu ls -F eklinde F
parametresiyle
kullanarak
istediimiz
bir
dizin
altndaki
dosyalar grntleyelim.

Listede yannda * iareti olanlar altrlabilir dosyalar,


@ iareti olanlar da sembolik linkleri gstermektedir. Bu
dosyalardan iki tanesine bakalm.

altrlabilir script dosyalarnn da bilgisini verdiini


gryoruz.
Dier komutumuz olan stat komutu ise dosyann/dizinin durumu
hakknda bilgi almamz salar. stat <file> eklinde kullanlr.

Dier komutumuz find ile de istediimiz kriterlerde arama


yapabiliriz.
Komutu
find
<dizin>
<parametre>
<aranlan
dosya/ifade> eklinde kullanyoruz.

Yukardaki grntden de anlald gibi /home dizininin


altnda zeynep.txt adl dosya nerelerde varm onu aratrdk.
Biraz daha farkl bir ey yapalm ve /sbin altnda bulunan
dosyalardan hangilerinin izinleri 777 modunda onu arayalm.

ok farkl parametrelerle kullanlabilecek find komutuna


ilgin
bir
rnek
verelim.
Komutumuzu
-exec
ile
beraber
kullanacaz. lk nce ev dizinimizde zeynep.txt dosyalar
nerelerde bulunuyor ona bakalm.

imdi
find -name zeynep.txt -exec rm {} \; kullanalm
bu komutun ne yaptna bakalm.

ve

Evet bu komutla ev dizininmizdeki zeynep.txt dosyalarn


bulmasn ve silmesini istedik. Komutu incelersek:
{} : Bulunan dosya ve dizinler bu parantez arasna parametre
olarak yerletirilecek ve -exec den hemen sonra belirtilen
program buna gre altrlacaktr. Yani dizinlerde bulunan her
zeynep.txt dosyas iin rm komutu altrlarak silme ilemi
yaplacaktr.
Eer find komutu -name zey* ile beraber kullanlrsa bu
sefer belirtilen dizin altndaki yerlerde zey ile balayan
dosyalar aranacaktr. rnein apache iin deneyelim.

imdi de yine dosya aramaya yarayan locate komutunu grelim.


Bu komutun find den fark, devaml gncellenen bir veritabanndan
arama yapmasdr. Yani find bizim belirttiimiz dizin altnda
arama yaparken, locate ile tm olas lokasyonlarda arama yaplr.
Aadaki rnee bakabilirsiniz.

Bir baka arama komutu da whereis komutudur. Bu


programlarn altrlabilir dosyasnn nerede olduu
yardm sayfas yeri gibi bilgiler alabiliriz.

komutla
ve man

Son arama komutumuz olan which ise bir komuta/programa


ilikin
altrlabilir
dosyann
hangi
dizinde
olduunu
gsterir. Yani daha nce de grm olduumuz PATH ortam
deikenindeki yerlerin hangisinde olduunu gsterir.

Artk iki nemli konu olan sed ve awk kullanm konularna


geebiliriz. Bu iki nemli konuya balamadan nce dzgn deyimler
(Regular Expressions) kavramndan bahsetmeliyiz.
Dzgn Deyimler
Dzenli
ifadeler,
programlamada
ve
baz
Linux
shell
ilemlerinde kullanlr. Bizlere bir ok alanda kolaylklar
salar.
Verilerden
ihtiyacmz
olan
bilgilerin
ekilmesi,
kullanc girdisinin denetlenmesi vs. gibi ilerde sklkla
kullanlr. rnein verilen bir
ablon (pattern) ifadenin
aranmas basit bir ilemken bu ilemi karmak ve byk
dosyalardan ekerken tam olarak istediimiz ablonun aramasn
yapmak iin dzenli ifadeler kullanmamz gerekecektir. Sadece
arama ilemlerinde deil, aranlan ifadelere uygulanacak ilemler
iin de dzenli ifadelerden faydalanlr.
Biz dzgn ifadeleri sed ve awk ile ilgili rneklerde de
kullanacaz. Buna uygun dzgn ifadeler nelerdir imdi onlardan
bahsedelim. Uygun dedim nk rnein Perl ve Python script
dillerinin
de
kulland
kendine
uygun
dzgn
ifadeler
bulunmaktadr. te biz de sed ve awk kullanrken iimize
yarayacak Linux iletim sisteminde kullanlan dzenli ifadelerden
bahsedeceiz.
[] : Keli parantezin iindeki karakterlerin istenilen
ablonda kullanlacan belirtir. Aada kk bir rnek yer
almaktadr.

Bizim verdiimiz f harfinin yanna keli patantez iindeki


karakterler srasyla ekleniyor sonra fi ve fa ile balayan
kelimeler bulunuyor. Araya aralk (-) iareti de konularak
kullanlabilir.

Nokta (.) : Nokta ile gsterilen


karakterin gelebilecei belirtilmi olur.

yere

herhangi

bir

yldz (*)
karlk gelir.

: Her hangi

saydaki

her

hangi

bir

karaktere

^ : Satr bana karlk gelir.

$ : Satr sonunu ifade eder.

[^..] : Kmenin iindeki karekterlerin haricindeki her hangi


bir karaktere karlk gelir.

\{n\}
:
Kendisinden
nceki
karakterin
n
kez
tekrar
edildiini gsterir.
\{n,m\} : Kendisinden nceki karakterin en az n kez en fazla
m kez olduunu gsterir.
\{n,\} : Kendisinden nceki karakterin en az n kez olduunu
gsterir.
\+ : Kendisinden nceki karakterin bir ya da daha fazla
olduunu gsterir.

\? : Kendisinden nceki karakterin sfr ya da bir kez


bulunduunu gsterir.
\| : Kendisinden bir nceki veya bir sonraki karaktere
karlk gelir.
\(..\) : Grup olarak dzenli deyimleri tanmlar.
\
:
zel
karakterlerin
normal
karakterler
olarak
alglanmasn salar.
rnekler:
a\?b : b,ab,..
a[^a-z] : a0, a1, aZ,..
^a : satr banda a karakteriyle balayan szckler
^zzz veya ^z\{3\} : satr banda 3 adet z karakteri bulunan
szkler
\{3\|5\}\+ : iinde 3 veya 5 saylarndan en az bir kez
geen szckler
\<Zey : Zey ile balayan satrlar bulur
yi\> : yi ile biten satrlar bulur

^Z.*P$ : satr balarnda Z ile balayp satr sonunda da P


ile biten szckler.

Evet, dzenli ifadeler hakknda biraz bilgimiz olduuna gre


artk sed ve awk kullanmna geebiliriz. lk nce sed konusuna
bakalm.
sed (stream editor)
Sed program, metin belgeleri zerinde eitli komutlar
kullanarak
deiiklikler
yapmamz
salar.
Konsoldan
direk
komutlar girerek ya da bir dosyadan komutlarn alnmasn
isteyerek
ilemler
yapabiliriz.
Kullanlan
operatrler/parametreler unlardr:

-n
-e
-f
p

:
:
:
:

sadece belirtilen satrlara uygulama yap


bir sonraki komut bir dzenleme komutu
bir sonraki bilgi bir dosya ad
print

stenilen ifadeyi deitirip p ile ekrana yazdrdk. Tabi


ekrana deitirdiimiz ifadenin getii satr yazdrld. (-n ile
birlikte kullanlmal)
d : delete anlamna gelir
s/deiecek ifade/yerine gelecek ifade/g : bu kullanmla
bir
text
iindeki
kelimeler
deitirilebilir.
Sondaki
g
eklenmezse dosyann tamam yerine her satrdaki ilk kalp baz
alnr.

Tabi sed kullanrken dzenli ifadelerden de faydalanacaz.


imdi bir ka rnek ifadeyi inceleyelim:
5d : 5. satr sil
/^$/d : tm bo satrlar sil
s/*$// : her satrn sonundaki tm boluklar sil
/zey/d : zey ifadesi olan tm satrlar siler
s/00*/0/g : ardk sfrlarn yerine tek sfr yaz
sed -e s/apple/elma/g -e s/prg/program/g : ayn anda
birden ok deitirme yapmak iin -e kullanlabilir.
s/\./&\/g : noktadan sonra gelen karakterleri yeni satra
kaydr.
10,20d : 10. satrla 20. satr arasn sil (10. ve 20. satr
dahil)
/\*\**\*$/d : satrn tamam ***** olan satrlar sil
sed -e s/[^|]*$// <dosya> : belirtilen dosyadaki tab ve
boluk karakterlerini kaldr
imdi de baz uygulamalar yapalm.

Yukardaki rnei incelerseniz 2. satrdaki izmir ifadesinin


silinmi olduunu greceksiniz.

Evet bu sefer de 2,3 ve 4. satrlar silinmi.


rnein bir text dosyamz olsun. Bu dosyadaki Zeynocan
kelimesini Zeynep kelimesiyle deitirelim. Bunun iin sed
s/Zeynocan/Zeynep/ <dosya> komutunu kullanmamz gerekir.

Eer Zeynocan kelimesi bir ka yerde geiyor olsayd bu


sefer s/Zeynocan/Zeynep/g eklinde yani kalb g ile beraber
kullanacaktk. Bununla birlikte deitirilen ifadeyi baka bir
dosyaya yazmak isteseydik sed s/Zeynocan/Zeynep/ zeyno >
yenidosya gibi bir komut kullanmamz gerekirdi.
Eer dosyadaki btn satrlarn ilk iki harfini silmek
istersek
aadaki
grntde
kullanlan
komutu
kullanmamz
gerekir.

Keli parantez kullanarak birden fazla seim yapabiliriz.


Aada bununla ilgili bir rnek gryorsunuz.

Deitirilen yerleri grmek


Aadaki rnek bununla ilgili.

iin

bir

seenek

olabilir.

imdi de bir dosyadaki tm byk harf karakterlerini


silelim. Bunu yapmak iin sed s/[A-Z]//g <dosya> gibi bir komut
kullanlmaldr.

Rakamlarn ve kk harflerin dndaki her eyi silmek iin


aadaki gibi bir komut kullanmalsnz.

Eer text dosyamzda rnein /usr/share/bin gibi bir ifade


geiyor ve biz bu ifadeyi /usr olarak deitirmek istiyorsak ne
yapmalyz? nk / karakteri zel karakter snfna giedii iin
bu karakterin zel anlamn yitirmesi iin aadakine benzer bir
komut kullanlmaldr.

Bu ilemi daha kolay yoldan yapmak iin aadaki gibi bir


komut da kulanabilirsiniz.

Bir de una bakn.

Bir
metin
dosyasndaki
karakterlerden
istediklerimizi
deitirelim. rnein i harfini d ile, f harfini u ile ve a
harfini de r ile deitirelim. Bunun iin sed y/ifa/dur/
<dosya> komutunu kullanmamz yeterlidir.

Bu konuyla ilgili daha bir ok rnek verilebilir. Fakat


burada hepsiyle ilgili tek tek rnek vermem mmkn deil.
nternette aratrma yaparak sed aracnn gelimi kullanmyla
ilgili bir ok rnek bulabilirsiniz. Son olarak bir dosyadan
komutlarn alnp ilenmesiyle ilgili kk bir rnek verelim.
Bir text dosyamza una benzer ifadeleri yazp rnek.sed adyla
kaydedelim.
s/izmir/NewYork/g
s/123/999/g
Sonra konsoldan bu dosyamz -f ile belirterek kullanalm.

Siz de buna benzer olarak rnein alacanz dosya ok


bykse ve bir ok deiiklik yapmak istiyorsanz komutlar bir
dosya iine yazarak oradan da arabilirsiniz. Evet bu konu da
bu kadar. Artk yeni konumuza geebiliriz.
awk kullanm
Awk, metin dosyalarn istediimiz llere gre ileyerek
deiiklikler yapmamz salayan bir script dilidir. Yani
yorumlayc bir dildir. Eer bir dosyadan komutlar alnyorsa bu
dosyadaki komutlar srasyla yorumlanarak altrlr. Tabi
sadece
dosyadan
veri
alarak
deil
komut
satrndan
da
parametrelerle
istenilen
ilemler
yaptrlabilir.
Bata
da
belirttiimiz gibi awk ile yaplacak en temel ilem dosyalarda
istenilen satrlar belirli kriterlere gre aramaktr.
Biz burada komutlar program dosyasndan almaktansa daha ok
komut satrndan girerek alma zerinde duracaz. Aada
kk bir rnek var.

Bir baka rnekte konsoldan awk {print} komutunu verdikten


sonra yazlan ifadeyi ekrana yazdrmay gryoruz.

Komutlar bir dosyadan alarak kullanmak isterseniz bunun


iin awk -f <program dosyas> eklinde bir komut kullanmanz
gerekir. Bir text dosyasna awk kodlarn yazarak kaydedip daha
sonra
-f
parametresiyle
bu
dosyann
yerini
belirterek
kullanabilirsiniz. Dosyann her hangi bir uzants olmasna gerek
olmamasna ramen .awk uzantsyla kaydederseniz bunun bir awk
script dosyas olduunu anlarsnz. Kk apl ilemler iin
komutlarmz
komut
satrndan
girerek
kullanmak
daha
mantkldr. Eer byk bir dosya iinde ok sayda ilem
yapmanz gerekirse bu durumda bir script dosyas kullanmak daha
mantkldr. imdi dosyadan kullanma kk bir rnek verelim.
Aadaki ifadeyi bir metin dosyasna yazarak uzantsn .awk
olacak ekilde kaydedelim.
BEGIN {
print deneme olsun gari
}

Ben rnek.awk diye


iin awk -f rnek.awk
kaydettiim iin byle
kaydetmi olsaydm bu
kullanacaktm.

kaydettim. Kaydedilen dosyay kullanmak


komutunu kullanyorum. Ben ev dizinime
kullanyorum. Eer /home dizini altna
sefer awk -f /home/rnek.awk eklinde

Awk nn kullanlan deiik versiyonlar var. Orijinali awk


olmakla birlikte gawk (GNU awk), nawk kullanmlarnn da olduunu
belirteyim. Ben rnekleri awk zerinden vereceim ama siz
isterseniz nawk de kullanabilirsiniz.

Biz daha ok konsol kullanmndan bahsedeceimizden rnekler


de awk nn konsol kullanmyla yani komutlar dosyadan almak
yerine konsoldan girmeyle ilgili olacaktr. Konsoldan kullanmla
ilgili bilinmesi gereken kurallar vardr. Bunlar:
' : komutlar trnak iareti iinde yazlr, sonra ilem
yaplacak dosya belirtilir.
$ : ilenecek dosyadaki kolonlar ifade eder. Her hengi bir
deiiklik yaplmazsa kolonlar boluklara ayrlm kabul edilir.
$0 tm satrlar(her bir satr iin satrn tamamna karlk
gelen ifade), $1 satrn birinci kolonu, $2 satrn ikinci kolonu
demektir.
NR : toplam kayt says(satr says)
NF : stun(kolon/alan) says
-F : alan ayrac iaretini belirtmek iin
/../ : dzenli ifadeler iki / arasnda kullanlr
FS : alan ayrac
Ayrca
awk
ierisinde
matematiksel
operatrler
de
kullanlabilir. (+, +=, ++, -, -=, --, *, *=, /, /= )
Karlatrma ifadeleri olarak da <, <=, >, >=, ==, != gibi
ifadeler kullanlabilir.
imdi baz rnekler yapalm. rnein dosyann ieriini
olduu gibi gstermek iin awk '{print $0}' <dosya> komutu
kullanlr.

Dosyada geen her hangi bir ifadeyi sorgulamak iin '/../'


kalbn kullanmalyz. Sorgulanan ifadeyle ilgili olan satr ya
da satrlar grntlenecektir.

Aradmz ifade bir text dosyasnn iindeki satrlarda


birbiriyle ayrlm blmlerin en banda geiyor mu renmek
iin awk '/Ankara/ {print $1}' zeyno gibi bir komut kullanrz.
Eer metin dosyasndaki satrlarn en banda bulunan ayrlm
ifadelerin tamamn grntlemek istersek bu sefer awk '{print
$1}' zeyno komutunu kullanmalyz. Tabi ben zeyno dosyasnn
ieriini silip yeni eyler yazmtm. Yani bu zeyno yukardaki
rneklerdeki zeyno deil :)

Dosya iindeki ifadeler arasnda ayra olarak boluk deil


de : iareti olsayd o zaman awk '{print $1}' zeyno komutuyla
istediimiz sonucu alamayacaktk. stediimiz sonucu almak iin
awk -F: '{print $1}' zeyno komutunu kullanmamz gerekecekti. Eer
komutta -F ile alan tanmlamas yaplmamsa alanlarn bolukla
ayrld varsaylacaktr.

Ayrlm alanlarda (kolonlarda/stunlarda) bulunan 1. ve 3.


ifadeleri grmek iinse awk -F: '{print $1,$3}' zeyno komutu
kullanlr.
$1
ve
$3
arasnda
virgl
kullanmazsanz
grntlediiniz alanlardaki ifadeler birbirine yapk olarak
kacaktr.

Ayra iareti : yerine , olsayd o zaman -F: yerine -F,


kullanacaktk. Alan ayracnn belirtilmesiyle ilgili olarak
aadaki rnei inceleyebilirsiniz. Komutla sylenen : ile
ayrlm
alanlardan
3.
alanda
bulunan
ifadeyi
ekrana
yazdrmasdr. ki komut da ayn ilevi grmektedir.

Aadaki rnekte de zeyno dosyasnn birinci alannda


bulunan ehir isimleri nnde ehir: ifadesi bulunduu halde
grntlenir. Kullanlan komuta dikkat ettiinizde "ehir: "
eklinde bir kullanm grrsnz. Eer arada boluk braklmazsa
grntlenen ifadede : iaretinden sonra boluk braklmadan
ehir isimleri yer alr.

Bir dosyadaki tm kayt iinden sadece istenilen ifadelerin


getii satrlar grntlemek iin, rnein test2 dosyamzdaki
kaytlardan zmir ile ilgili olanlar grmek iin awk -F: '$1 ==
"zmir" {print $0}' test2 komutunu kullanyoruz. Ayra olarak :
kullanldndan -F: kullanmay unutmuyoruz. Eer boluklarla
ayrlsayd o zaman ayra iaretini belirtmeye gerek yoktu.

Sadece zmir ifadesi geen satrlarn alanlaryla ilgili


(rnein 1. alan, 2. alan) bilgi almak iin aadaki komutu
kullanmalyz.

rnein verdiimiz iki ifadenin de ayn satrda getii


kaytlar grntlemek iin aadaki rnektekine benzer bir
komut kullanlmaldr.

Grld gibi && operatr ve anlamna gelmektedir.


Ayn dosyada, iinde zmir veya stanbul geen kaytlar
grntlemek iin || operatrn kullanmak gerekir.

inde zmir gemeyen ifadeleri sorgulamak iin de aadaki


komut iimize yarayacaktr.

Bir belgedeki karakterleri


aadaki komutu kullanyoruz.

byk

karakter

yapmak

iin

Sadece
dosyalar
ilemede
deil
komut
ktlarn
dzenlemede de awk kullanabiliriz. Aadaki rnekte ls -l
komutunun kts istenilen kriterlere gre dzenleniyor.

Bir de passwd dosyasndaki : ile ayrlm olan 1. ve 5.


alanlar grelim.

Bir dosyadaki rnein 3. satrdan sonraki satrlar grmek


iin NR>3 ifadesi kullanlr.

Bir dosyadaki satr saysn grmek iin:

stenilen
derseniz:

dosyann

ieriini

numaralayarak

gstersin

Bu konuyla ilgili ok fazla ve farkl rnekler verilebilir.


Tabi burada hepsini anlatmak imkansz. Onun iin ayr bir alma
yapmak lazm. nternette awk nn ok farkl kullanmlarna bol
miktarda rnekler bulabileceiniz siteler var. Bu sitelerde hangi
kalb kullanrsanz ne olur tarznda rnekler mevcut. rnein
http://www.commandlinefu.com/ adresinde bir ok linux komutuyla
ilgili ok gzel rnekler bulabilirsiniz.
imdiki konumuz xargs ile ilgili.
xargs
Kendisine girdi olarak verilen verileri tek tek kendisinden
sonraki programa argman olarak verir. Kullanm ok basittir.
Basit bir rnek zerinden aklayalm. rnein nemli adnda bir
dosyamz olsun ve dosyamzn iinde /etc ifadesi yer alsn. u
komutu kullanalm: cat nemli | xargs ls

Komutun ne yaptn aklayacak olursak: lk nce cat


komutu ile dosyamzn ieriini grdk ve xargs bu ierii
argman olarak ls komutuna verdi. Sonu olarak /etc dizininin
ierii listelendi.
Baka bir uygulama yapalm. rnein ev dizinimde bulunan
.txt uzantl dosyalar bulup silmek istiyorum diyelim. Bunun
iin ls *.txt | xargs rm komutunu kullanmalym.

rnein
ev
yani
alma
dizininizdeki
.log
uzantl
dosyalar silmek isterseniz
find -name "*.log" | xargs rm -f
komutunu kullanmanz gerekir.

Bir baka rnek. Bu sefer /etc dizinimizdeki konfigrayon


dosyalarn yani .conf uzantl dosyalar listeleyelim. Tabi eer
sadece bulmak istersek find /etc -name "*.conf" komutunu
kullanmamz yeterli. Fakat ls -l ile ayrntl liste almak iin
find
/etc
-name
"*.conf"
|
xargs
ls
-l
komutundan
faydalanabiliriz.

Son rnek komutumuz da u olsun: find / -name *.jpg -type f


-print | xargs tar -cvzf fotolar.tar.gz

Geri daha dosya sktrma komutlarn ilemedik fakat bu


komut unu diyor: Kk dizinin altndaki dizinlerde uzants jpg
olan dosyalar bul ekranda grntle ve bulduun bu jpg
dosyalarn sktrarak fotolar isminde ariv dosyas yap.

Evet istediimiz gibi fotolar.tar.gz eklinde ariv dosyamz


oluturulmu.
Bu konuyu da bitirdiimize gre artk dosya sktrma,
ama, ariv dosyas oluturma konularndan bahsedebiliriz.
Dosya Sktrma-Ama ve Arivleme lemleri
Linux sistemde istediimiz dosyalar bir araya getirerek
ariv dosyas oluturabiliriz. Ya da byk boyutlu bir dosyay
ariv dosyas yapabiliriz. Arivleme ilemini ister normal olarak
ister
dosyalar
sktrarak
arivleme
eklinde
tercih
edebiliriz.

Tm bu ilemler iin de belli bal komutlar/aralar


kullanmamz gerekir. En temel arivleme ilemini tar komutuyla
yaparz. Bu komut ile rnein bir dizin ve altdizinlerini iinde
bulunan
dosyalaryla
birlikte
bir
araya
toplayarak
arivleyebiliriz. rnein ev dizinimde bulunan merhaba.py ve
deneme dosyalarn tar ile arivlemek iin tar -cf ariv.tar
merhaba.py deneme eklinde bir komut kullanmam gerekir.

Yukardaki ekran grnts unu anlatmaktadr: lk nce ls


ile ev dizinimdeki (alma dizinimdeki) dosyalara baktm. Sonra
bu dosyalardan merhaba.py ve deneme adndakileri tar komutuyla
ariv dosyas yaptm. Tekrar ls ile kontrol ettiimde ariv.tar
dosyasnn oluturulduunu grdm. Komutta kullanlan c (create)
parametresi
olutur
anlamna
gelirken,
f
parametresi
ile
oluturulacak ariv dosyasnn ismi belirlenir.
Evet arivi bu ekilde oluturduk. Eer ariv dosyalarn
amak istersek bu sefer de tar -xvf <dosya.tar> komutunu
kullanyoruz. (bazlar xvf nin banda bulunan iaretini
kullanmyor, bende alkanlk olmu o yzden kullanyorum)
Komuttaki x parametresi extract(a), v parametresi (verbose)
alan dosyalar grmek yani ayrntl komut kts almak iin
kullanlr.

Evet grld gibi ariv dosyamzn iinde bulunan dosyalar


dar kartld. Yukarda da sylediimiz gibi arivleme
ilemini sktrarak da yapabiliriz. Bunun iin de iki farkl
sktrma
aracn
kullanabiliriz.
Bunlar
gzip
ve
bzip2
aralardr.
Sktrlm
ariv
dosyas
oluturulurken
sktrma ileminde gzip kullanlmsa dosyann uzants tgz (ya

da tar.gz), eer bzip2 kullanlmsa tar.bz2 olacaktr. Her ikisi


ile de ilgili rnekler yapalm. Aada tgz ile ilgili bir rnek
grlmektedir.

Grntden ariv2.tgz dosyamzn oluturulduu grlyor.


Burada z parametresi, gzip ile sktrarak ariv dosyas
oluturmak istediimizi gsteriyor.
imdi de bzip2 kullanarak sktrlm ariv dosyas
oluturalm. Oluturulacak dosyann uzants bu durumda tar.bz2
olmal.

Yine grlecei gibi ariv3.tar.bz2 dosyamz oluturulmu.


Burada dikkatinizi ekmi olmal, eer gzip ile sktrarak
tgz(ya da tar.gz) dosyas oluturacaksak czvf, bzip2 ile
sktrarak tar.bz2 dosyas oluturacaksak cjvf kullanyoruz.
Deien sadece z ve j parametreleri.
Aynen sktrarak arivlemede olduu gibi, dosyalarmz
aarken de ayn parametreleri kullanyoruz. Yani tgz(ya da
tar.gz) dosyasn aarken z, tar.bz2 dosyasn aarken j
kullanyoruz. Fakat bu sefer c (create) deil x (extract)
diyoruz. Aadaki rneklere bakalm.

Yukardaki rneklerde gayet ak ekilde xzvf ve xjvf


kullanmlar
grlyor.
Siz
de
buna
benzer
denemeler
yapabilirsiniz.
Ariv dosyas oluturmadan dosyalarmz sadece sktrmak
istersek bunun iin gzip-gunzip, bzip2-bunzip2 aralarndan
faydalanabiliriz. Sktrmak iin gzip kullandnz dosyay
aarken gunzip, sktrken bzip2 kullandnz dosyay aarken
de
bunzip2
kullanmalsnz.
Aadaki
rnekleri
inceleyebilirsiniz.

Bu rnekte test isimli dosyamz gzip ile sktryoruz, daha


sonra sktrlm test.gz dosyasn gunzip ile ayoruz.

Bu rnekte de test isimli dosyamz bu sefer bzip2 ile


ktryoruz, daha sonra sktrlm test.bz2 dosyasn
bunzip2 ile ayoruz.
Linux sistemlerde rar ya da zip uzantl sktrlm
dosyalar
da
aabilirsiniz.
Bunun
iin
unrar
ve
unzip
aralarndan faydalanabilirsiniz. Ben aada rar dosyasnn
almasyla ilgili bir rnek verdim.

alma dizinimdeki Downloads altnda Android.rar diye bir


dosya var. Bu dosyay amak iin unrar e Android.rar komutunu
kullanyorum.

Rarl dosyamzn iindekileri kardk. Kullanm bu kadar


basit. Eer rarl dosya ifreliyse o vakit ifreyi girmenizi
bekliyor ve ifre girildikten sonra ayor. Yani farkl bir ey
yok.
Dosya Kopyalama Tama Silme lemleri
Dosya kopyalamak iin kullanlan komut cp komutudur. Bu
komutun kullanm formu cp <kopyalanacak dosya> <kopyalanan dosya>
eklindedir. Yani dosya1 isimli dosyay baka bir yere dosya2
ismiyle kopyalamak iin cp <dosya1><dosya2> komutu kullanlr.

Yukardaki rnekte deneme adl dosyay kopya adyla ayn


dizine kopyaladmz gryorsunuz.
Kopyalarken sorsun diyorsanz (yani kopyalanan yerde ayn
adl dosya olup iine yazmas ihtimaline kar) -i parametresiyle
kullanmalsnz.

rneimizde grld gibi dosyay kopyalamak istediimiz


yerde ayn isimde baka bir dosya olduundan onaymz sordu.
(biz hayr anlamnda h dedik ama ingilizler nayr anlamnda n
derler :)
Eer dosyamz rnein /home dizini altna kopyalamak
isteseydik bu durumda cp deneme /home/kopya gibi bir komut
kullanmamz gerekecekti. Tabi /home/kopya yerine /home deseydiniz
ayn adla yani deneme adyla /home dizininin altnda kopya
oluturacakt.
Dosya kopyalama ilemi bu ekilde oluyor. Dizin kopyalamada
da yine ayn komutu kullanyoruz fakat bu sefer -r parametresiyle
birlikte. Bu parametre dizin altndaki dosyalar da kopyalamamz
iin.

rnein alma dizinimizde bulunan firefox-flash dizinini


masastne kopyalamak iin yukardaki komutu kullanabiliriz.
Dosya kopyalamak yerine eer tamak istersek bunun iin de
mv komutunu kullanyoruz. Bu komutun da kullanm cp gibidir
fakat kopyalama yerine tama ilemi yapar.

Yukardaki komutla test isimli dosyay masastne tadk.


Dizini de ayn komutu kullanarak tayabiliriz. Aadaki rnekte
olduu gibi.

Tadmz firefox-flash dizini/klasr artk masastnde


olduundan alma dizinimiz altnda grnmyor.
Dosya ve dizin silmeye gelince, nceki konularda dizin silme
ilemlerinden bahsetmitik. Burada dosyalar silme ilemlerinden
bahsedelim. Dosya ve dizin silme ilemlerinde rm komutunu
kullanyoruz. Tek bir dosya silebileceimiz gibi bir ok dosyay
da yan yana belirtip silebiliriz. Aada bir rnek gryorsunuz.

Grdnz gibi rm komutuyla ayn anda bir.txt, iki.py ve


.pl dosyalarn sildik. Dizin silme konusundan daha nceki
konularda bahsettik demitim ama yine de bir hatrlatma yapalm.
Dizin silmek iin rm -r komutunu kullanyoruz. Eer dizin ve
altndaki dosyalar silinmeden nce bize sorulsun diyorsak rm -ir,
eer sorgusuz sualsiz ne varsa silsin diyorsak rm -rf (tehlikeli
bir komut) kullanyoruz.
Link (Ksayol) Kavram
Linux sistemlerde ksayol da diyebileceimiz bir link
kavram vardr. Buna sembolik balant denir. (symlink)
Sembolik balant oluturmak iin ln komutu s parametresiyle
birlikte ln -s eklinde kullanlr. Bu kavram daha iyi anlamak
asndan
bir
rnek
verelim.
Ondan
sonra
sembolik
link
oluturmayla ilgili bir ka uygulama yaparz.
Benim
kullandm
Linux datmnda (Kali
Linux)
web
tarayc olarak iceweasel tarayc kullanlyor. Bu tarayc
aslnda firefox temeli zerine kurulu ve firefox taraycya ok
benzer. Ben konsoldan iceweasel komutunu da versem firefox
komutunu da versem bu tarayc alyor. Sistemimde firefox
kurulu
olmamasna
ramen
firefox
komutuyla
taraycy
aabiliyorum fakat iceweasel taraycy alyor tabi.

Grdnz
gibi
ikisinin
de
altrlabilir
dosyas
/usr/bin/ altnda grnyor. imdi file komutuyla kontrol edelim.

Anlalabilecei
gibi
birisi
script,
dieri
de
(iceweasel)
konumunu gsteren bir sembolik link.

(firefox)
altrlabilir
usr/lib/iceweasel/iceweasel

Firefox bash scriptinin iine baktmzda, firefox komutu


verildiinde iceweasel komutunu altrmas iin ayarlanm.
Dolaysyla iceweasel komutunu kullanm oluyoruz. Sonra da
program
/usr/lib/iceweasel
altndaki
iceweasel
tarayc
programn altryor. nk oraya link edilmi.

Yukardaki
grntden
de
anlalabilecei
gibi
/usr/lib/iceweasel dizinine gittiimizde, dizin altnda bulunan
iceweaselin asl program dosyamz olduunu gryoruz. Yani
/usr/bin altndaki iceweasel aslnda buraya balant yapan bir
sembolik link. Bunu ls -l /usr/bin/iceweasel komutuyla da
grebiliriz.

Komut ktsndaki -> iaretine dikkat ederseniz asl


program yerini gsteriyor. Yani byle bir kt grrseniz ok
iaretinin sol tarafndaki yer sembolik balanty, sa taraf ise
balant yaplan yeri gstermektedir.
imdi kendimiz bir sembolik link oluturalm. rnein
alma dizinimizde bulunan link.txt dosyasn yine ayn dizine
(siz
isterseniz
baka
bir
dizin
altna
da
link
oluturabilirsiniz) sembolik.txt adyla link edelim. Bunun iin
ln -s link.txt sembolik.txt komutunu kullanmalyz.

Bir de kontrol edelim.

Hem ok iaretinden hem de file komutuyla gsterilen bilgiden


sembolik linkin olutuunu anlyoruz.
Sadece
dosyalara
deil
dizinlere
de
sembolik
link
oluturabiliriz. rnein /home dizinini alma dizinime sembolik
linkle balayabilirim. Bunun iin ln -s /home komutunu kullanmam
yeterlidir. Ben alma dizinime balamak istediimden bu komutu
kullandm. Siz rnein /usr altna balayacaksanz ln -s /home
/usr komutunu kullanmalsnz.

Grdnz gibi /home dizinime artk ksayol olarak sembolik


link sayesinde ev dizinimden eriebilirim. Eer home adyla deil
de rnein depo adyla alma (ev) dizininize sembolik link
oluturmak isterseniz bu sefer ln -s /home depo komutunu
kullanmanz gerekir.

Dosya yneticisiyle
greceim.

ev

dizinime

baktmda

yle

bir

ey

zerinde
ok
iareti
olan
tkladmda /home dizini alacaktr.

depo

dizinine/klasrne

Konsol Editrleri (Nano ve Vim)


Linux
iletim
sisteminde
kullanlan
grafiksel
metin
editrleri (gedit vs.) yannda bir de konsoldan kullanlan
editrler vardr. Bunlardan nano ve vim konsol editrlerinden
bahsedeceiz. Nano editr daha ok basit iler iin kullanlrken
Vim editr profesyonel kullanm iin idealdir. ncelikle nano
editrden bahsettikten sonra dier editrmz olan vim den
bahsedeceiz.
Nano ile almaya balamak iin konsoldan nano komutunu
vermek
yeterlidir.
Konsol,
aadaki
gibi
bir
editre
dnecektir.

Editrn alt tarafnda yer alan bilgilendirmelere dikkat


ederseniz ^X, ^O gibi ifadeler grrsnz. ^X ifadesi ctrl+X
anlamna gelmektedir. Yani bu durumda, yannda ^ iareti olan
karakterleri ctrl tuuyla beraber kullanacaksnz demektir. Evet
bu ksa bilgiden sonra rnek bir alma yaparak kaydetmeyi
gsterelim.

almamz bitirdikten sonra ctrl+O (ctrl ve O harfi)


tularna
basarak
dosyamz
hangi
adla
kaydedeceimizi
belirtiyoruz. rnein ben dosyama hoppala adn veriyorum. (eer
kaydetmeden dosya adn deitirmeye karar verirseniz ctrl+C ile
ilemi iptal edebilirsiniz). Dosya adn belirttikten sonra Enter
tuuna basyoruz ve kaydedip kmak iin de ctrl+X diyoruz. Her
hangi bir dizin belirtmediimizden dosyamz ev dizinimize
kaydedildi.

almanz bittikten ve ctrl+O ile dosya adn verdikten


sonra da isterseniz Entera basp dosya zerinde almaya devam
edebilirsiniz. iniz bitip de kmak istediinizde (ctrl+X) size
deiiklikleri kaydetmek isteyip istemediinizi soracaktr. Eer
evet derseniz (E ya da Y) dosyanz son haliyle kaydedilecektir.
Hayr derseniz ismi belirleyip Entera bastnz zamana kadar
yaptnz almalar dosyaya kaydedilecektir. Daha sonra yaplan
almalar kaydedilmeyecektir. En kolay almaya balarken
dosyaya isim vermektir. Yani nano hoppala derseniz direk hoppala
adl dosya zerinde almaya balarsnz. almanz bittikten

sonra da ctrl+X ile deiiklikleri onaylayarak karsnz.


Her hangi bir metin ya da script dosyasn da nano editrle
aabilirsiniz.
rnein
alma
dizinimdeki
muhteem(!)
bir
programlama rneini yani merhaba.py dosyasn nano editrle
amak iin nano merhaba.py komutunu kullanmalym.

Python script dosyasndaki ifadeleri de renklendirmi. Bu


iyi bir ey.
Nano editrle ilgili ok fazla rnek vermeye gerek yok.
Zaten siz de denemeler yaparak ne kadar kolay kullanm olduunu
greceksiniz. imdi ikinci editrmze, Vim editre geelim.
Profesyonel Linux kullanclar konsol editr olarak eski
adyla Vi, yeni adyla Vim editr kullanmay tercih ediyolar. Bu
editrn
ok fazla zellii var fakat biz burada genel
zelliklerinden bahsedeceiz.
Konsoldan vim komutunu vererek vim editr aabiliriz.

Konsol yukarda grlen hale gelerek vim editr almaya


hazr bekliyor olacaktr. almaya balamak iin i (insert)
tuuna basabiliriz. Biz i tuuna bastktan sonra sol alt kede
INSERT uyars karak gireceimiz verileri almaya hazr olduunu
belirtecektir. Artk istediimiz ekilde yazmaya balayabiliriz.

Yazma ilemini bitirdikten sonra esc tuuna basarak komut


moduna geebilirsiniz. Siz esc ye basnca aadaki INSERT
uyars kaybolacaktr. Komut vermek iin : kullanmalsnz.
Verebileceiniz komutlar:
:q --> vim editrden kmak iin bu komut verilir, fakat
almay kaydetmediyseniz uyar verecektir.
:q!
-->
belgeyi
kaydetmeden
kmak
iin
bu
komutu
kullanabilirsiniz
:w --> belgeyi kaydetmek iin bu komut kullanlr(kaydeder
ve vim editrde kalr, konsola dnmez)
:wq --> belgeyi kaydedip kmak iin bu dosya kullanlr,
eer dosyaya isim vermediyseniz :wq deneme komutuyla dosyanz
deneme adyla kaydederek kar.

rnein ben burada :wq vimdeneme komutuyla belgeyi vimdeneme


adyla kaydedip ktm. Hemen bakalm kaydolmu mu?

Evet her ey yolunda grnyor.


Yukarda verdiim komutlar haricinde baka komutlar da var.
Bunlar:
ZZ --> belgeyi o anki haliyle kaydet ve k (esc ye
bastktan sonra :ZZ eklinde deil direk ZZ eklinde kullanlr)
:x --> vim den k, eer dosya deimise kaydet
:r dosya --> belirtilen dosyay oku ve imlecin bulunduu
noktadan balayarak araya ekle
Son bahsettiimiz komut (yani :r dosya) nasl alr onunla
ilgili rnek yapalm. rnein zeytin adnda bir dosyamz olsun.
Biz vim editrle yeni bir dosya zerinde almak iin vim peynir
komutuyla dosyamzn adn peynir vererek almaya balayalm.

Evet zeytin dosyamzn ierii bu. Biz vim peynir komutuyla


editrmz aalm.

vim peynir komutunu verdikten sonra editrmz ald.


Arkasndan i tuuna bastk. Sonra almaya baladk. Daha nce
oluturduumuz zeytin dosyasn da bu zerinde altmz
peynir dosyasna eklemeye karar verdik. lk nce esc ye bastk.
Sonra :r zeytin komutunu verdik. Enter a bastktan sonra zerinde
altmz peynir dosyasnn ierii aada grnd gibi
olacaktr.

Grdnz zere istediimiz dosyay o an altmz


dosyaya ekleyebiliyoruz. Tabi imle neredeyse o ekilde ekliyor.
Yani araya ekleme yaplabiliyor.
Yeni metin dosyalar oluturup almak dnda varolan
dosyalar da vim editrle ap zerinde alabiliriz. rnein
bizim mehur programlamaclk dehas(!) Python script dosyamz
merhaba.py dosyasn vim editrle amak iin vim merhaba.py
komutunu kullanabiliriz.

Alttaki aklamalar incelersek:


merhaba.py : zerinde altmz dosya ad

4L : 4 satrdan olumu
112C : 112 karakterden olumu
Vim
editrle
alrken
Linux
konsol
komutlarn
da
kullanabiliriz. rnein vim editr akken :!ls komutunu vererek
dosyalarmz listeleyebiliriz.

Yukarda grdnz gibi komutumuzu kullandktan sonra yle


bir ekran gelecektir:

Enter tuuna basarak tekrar vim editre dnebilirsiniz.


lgin bir zellik daha var. rnein :r !ls (ls yerine baka
komut da kullanabilirsiniz) komutunu kullandnzda ls komutunun
kts imlecin bulunduu yere eklenecektir.

Vim editrde iki dosyayla da alabilirsiniz. rnein vim


<dosya1> <dosya2> komutunu vererek, ilk nce dosya1 adl dosyayla
almaya balarsnz. Bu dosyayla iiniz bittiinde ya da dier
dosyayla almak istediinizde :n komutu ile dier dosya
zerinde alabilirsiniz.

Yukardaki gibi bir komut kulandnzda vim editr zeytin


dosyasyla almaya balayacak, siz deneme.s dosyasnda almak
isterseniz :n komutuyla o dosyaya geebileceksiniz.

Sol aa kede grdnz ekilde :n komutunu verdikten


sonra deneme.s dosyasnda almaya balayacaksnz yani grnt
aadaki gibi olacak.

Tabi birinci dosyada dzenleme iiniz bittikten sonra :w ile


deiiklikleri kaydedip ondan sonra :n ile dier dosyada
almaya balayabilirsiniz. Bylece iki dosyay da dzenlemi
olacaksnz.
Vim editr, altnz dosyadaki karakter dizelerini
deitirmenize de imkan verir. Bununla ilgili olarak rnein
zeytin adl metin dosyamz aalm ve oradaki Zeyno ifadelerini
Zeynep ile deitirelim. Bunun iin :s/Zeyno/Zeytin/g komutunu
kullanmamz yeterli olacaktr. Bu komut sadece bir satrdaki tm
Zeyno ifadelerini deitirecektir.

Komutumuzdan sonraki durum aada grnd gibi olacaktr.

Grdnz gibi bir satrdaki Zeyno ifadelerini Zeynep ile


deitirmi. Biz hem birinci hem de nc satrdaki ifadeleri
deitirmek istiyoruz. Bunun iin :1,3s/Zeyno/Zeynep/g komutunu
kullanmalyz.

Komutumuzu bu ekilde kullandktan sonra grnt aadaki


gibi olacaktr.

Bu
kadar
rnek
bence
yeterli
olacaktr.
Son
olarak
/usr/share/vim/vimrc
dizinindeki
vimrc
ayar
dosyasyla
vim
editr zelletirmeyi grelim. Bu dosyann iindeki ayarlar
varsaylan ayarlardr. Bu ayarlar isteinize gre dzenleyerek
vim editr zelletirebilirsiniz.

Vim
editr
ayar
dosyasnn
(vimrc)
ierii
yukarda
grld gibi. iaretiyle balayan satrlarn nndeki bu
iaretini
kaldrarak
istediiniz
ayarlarn
aktif
olmasn
salayabilirsiniz. rnein nano editrle ap isteinize gre
dzenleme
yapabilirsiniz.
Nano
editrle
amak
iin
nano
/usr/share/vim/vimrc
komutunu
kullanabilirsiniz.
stediiniz
deiiklikleri
yaptktan
sonra
da
ctrl+X
ile
onaylayp
kaydedebilirsiniz.

rnein
syntax
on
nndeki

iaretini
kaldrrsanz
karakter renklendirmesi yapacaktr. Bu durumda daha nce vim ile
atmz
merhaba.py
dosyasn
atmzda
artk
yle
grnecektir:

Siz
de
oradaki
aklamalar
dzenlemeleri yapabilirsiniz.

inceleyip

istediiniz

Network Komutlar
Linux'ta kulanlan a komutlaryla ilgili ok ayrntya
girmeden kk baz rnekler vereceim. Hemen balayalm. Windows
sistemlerde ip yaplandrmasyla ilgili bilgiyi grmek iin
ipconfig komutu kullanyorduk. Linux sistemlerde bunun iin
ifconfig komutunu kullanyoruz.

Yukardaki grntlenen bilgilerden eth0 ifadesi bizim


ethetnet kartmz (a arabirim kartmz) gstermektedir. Eer
sistemde baka ethernet kartlar da varsa onlar da srasyla
eth1, eth2 eklinde adlandrlacaktr. Dier bilgiler zaten
malum.

Eer sadece ethernet kart ile ilgili olan bilgiyi


basit a yaplandrmasn grmek isterseniz
ifconfig
komutunu kullanmalsnz.

Kablosuz a yaplandrmasyla
iin de iwconfig komutu kullanlr.

ilgiyi

bilgiyi

yani
eth0

grntlemek

Eer IP adresimizi elle yaplandrmak istersek, ifconfig


eth0
<ip_adresi>
<alt_a_maskesi>
eklinde
bir
komut
kullanmalyz. Aada bir rnek var.

Yukardaki komutla IP adresimizi 192.168.1.200 yaptk.


Ping ilemi iin yani bir adresin aktif olup olmadn
anlamaya yarayan sorgu paketleri gnderme ilemi iin de ping
komutu kullanlr. Bu komut parametresiz kullanld zaman siz
ctrl+C ile komutu kesene kadar hedef sisteme paket gndermeye
devam eder. Bunun nlemek iin c parametresi kullanlr. rnein
ping -c 3 <hedef> komutu ile hedef adrese 3 sadece 3 sorgu paketi
gnderir.

Yine Windows sistemlerde kullanlan ve paketin hedefe


ulaana
kadar
getii
hostlar/ynlendiricileri
grmemizi
salayan tracert komutunun Linux sistemdeki karl traceroute
komutudur. Aadaki rnekte olduu gibi kulanlr.

Bir sonraki komutumuz da netstat komutu. Bu komut a


balantlar,
ynlendirme
tablosu
vs.
bilgisi
almak
iin
kullanlan bir komuttur ve farkl parametrelerle kullanlabilir
fakat en temel kullanm amac sistemdeki balantlarla ilgili
bilgi almaktr. Ben netstat -antp eklinde kullanm tercih
ettim.

imdi de domain adlar ve IP adresleriyle


yapmamza yarayan nslookup komutuna bakalm.

ilgili

sorgu

Hedef sistemle ilgili whois bilgisi almak iin de whois


aracndan faydalanabiliriz. Eer kullandnz datmda bu ara
yoksa apt-get install whois ( rpm tabanl sistemler iin yum
install whois) komutuyla sisteminize kurarak kullanabilirsiniz.

Yine ayrntl bilgi alabileceimiz aralardan bir tanesi de


dig aracdr.

Sorguladmz hedef sistemle ilgili bilgi alma aralarndan


bir tanesi de host aracdr. Komut host -a <hedef> eklinde a
paremetresiyle kullanlrsa aadaki gibi bir kt alnacaktr.

Eer komutu C parametresiyle kullanrsanz bu sefer kt


yle olacaktr:

Her eyi devletten beklemeyin :) parametreleri


kullanyoruz renmek iin host komutuyla bakn.

neye

gre

Ynlendirme tablosuyla ilgili bilgi iin de route komutunu


kullanabilirsiniz.

Evet imdi de srada arp komutumuz var. Bu komutla arp


tablosu
grlr. Yani adaki hostlarn ip-mac adresleri
incelenebilir.

Sistemimize yaplan balantlar ve sistemimizden darya


yaplan balantlar canl olarak izlemek iin tcpdump komutunu
kullanabiliriz. Bu komutu kullandktan sonra balant istekleri
dinlenmeye balanacak ve istekler konsolda grntlenecektir.
Yani adaki paketleri yakalayarak grntler. Ayrca daha nceden
kaydedilmi paketler zerinde de inceleme yapabilir. Adres
zmleme yapmadan paketleri yakalamas iin n parametresiyle
kullanm rnei aada grlmektedir.

Sistemde tek a kart varsa tcpdump komutuyla tcpdump -i


eth0 ayn anlama gelir. Eer eth1 adnda ikinci bir a kart
varsa onunla ilgili balantlar dinlemek iin tcpdump -i eth1
komutu kullanlmaldr.
Linux'ta nemli ve pratik bir indirme arac olan wget
kullanmndan
da
bahsedelim.
En
sade
haliyle
wget
<indirilecek_dosya_adresi>
eklinde
bir
komut
kullanmak
yeterlidir.

Yukardaki rnekte nmap.org adresinden bir dosya indirdik ve


alma dizinimize kaydoldu.

Wget
aracyla
isterseniz
bir
sitenin
tamamn
da
indirebilirsiniz. Bunun iin wget -nrp <indirilecek_site_adresi>

komutunu kullanmanz yeterlidir. rnein falansite.com sitesinin


tamamn
indirmek
istiyorsanz
wget
-nrp
www.falansite.com
komutunu kullanmanz gerekir.
imdi
de
Linux
sistemlerde
dns
ayarlarnn
nasl
yaplacana bakalm. Dns ile ilgili kaytlar /etc/resolv.conf
dosyasnda tutulur.

Bu dosyada grdnz nameserver yazan yerlerin karsna


istediiniz dns adreslerini yazarak kaydedin. Bundan sonra adres
zmlemesi sizin yazdnz dns ler zerinden yaplacaktr.
Sistem yeniden baladnda ya da network servisi restart
edildiinde ayarlarn kaybolmasn istemiyorsanz daha nce de
bahsetmi
olduumuz
chattr
komutuyla
resolv.conf
dosyasn
deitirilemez
yapabilirsiniz.
Bunun
iin
chattr
+i
/etc/resolv.conf komutunu kullanmalsnz. Yukarda bahsedilen
dns deiikliini ksa yoldan nano editrle yapabilirsiniz. Yani
nano /etc/resolv.conf komutunu vererek resolv.conf dosyasn aar
ve
istediiniz
deiiklikleri
yaptktan
sonra
ctrl+X
ile
karsnz. kmadan size deiiklikleri onaylyor musunuz diye
soracaktr. E ya da Y dersiniz :)
Zamanlanm Grevler (Cron Servisi)
Linux sistemde baz ilerin istediiniz zamanlarda ya da
zaman
aralklarnda
otomatik
olarak
yaplmasn
salayabilirsiniz. Yani zamanlanm grevler dediimiz kavram. Bu
ii cron servisi yapar.

Zamanlanm
ileri
dzenlemek
iin
crontab
komutu
kullanlr. Yani crontab komutuyla cron dosyalar dzenlenebilir.
Cron uygulamas konfigrasyon dosyas /etc/crontab dosyasdr.

Bu ksa bilgilerden sonra imdi gelelim komutun kullanlmas


ve dzenlemelerin nasl yaplacana. Dzenleme yapmak iin
crontab komutu kullanldnda vim editrle ilgili cron doyas
alr (yani hangi kullanc komutu verdiyse onunla ilgili olan
cron dosyas) ve deiiklikler yaplp editrden kld anda
cron servisi yaplan ayarlarla almaya balar. Dzenleme yapmak
iin crontab -e komutu vermemiz gerekir.

Alan
dosyaya
zamanlanm
grevlerle
ilgili
bilgiler
yazlr. Yani hangi tarihte ne yaplmasn istiyorsak ona gre
ayarlamalar yaplr.
Dzenleme
yapabilmek
iin
ncelikle
cron
dosyalarnn
zelliklerini renmemiz gerek. Cron dosyasnda 6 tane blm
vardr. lk be tanesi, yaplmas istenen ile ilgili gn,saat,
dakika gibi bilgiler iin, son blm ise altrlacak komut
iindir.
1.blm :
in seilen saat bandan ka dakika sonra
balatlacan belirler. (0-59)(rnein 30 demek, saat ban 30
dk. Gee demektir.
2.blm : in hangi saatte balatlacan belirler. (0-23)
(say yerine * girilirse her saat anlamna gelir)
3.blm : in hangi gnler balatlacan belirler. (1-31)
(say yerine * girilirse her gn anamna gelir. 7,14 ifadesi de

her ayn 7 si ve 14 anlamna gelir)


4.blm : in hangi aylarda yaplacan belirler. (1-12)
(say yerine * girilirse her ay anlamna gelir. 1,6 ifadesi Ocak
ve Haziran demektir. 1-3 ifadesi de Ocak-ubat-Mart demektir)
5.blm : in haftann hangi gnlerinde yaplacan
belirler. (0-7)(say yerine * girilirse her gn demektir. 0. ve
7. gnler Pazar kabul edilir. 1,2 ifadesi P.tesi ve Sal
anlamna, 1-3 ise P.tesi-Sal-aramba anlamna gelir)
Yaplmasn istediimiz ilerle ilgili satrlar crontab -e
ile atmz crontab dosyasnn en altna ekleriz. Kaydedip
ktktan sonra zamanlanm grevimiz almaya balayacaktr.
Basit bir rnek yapalm. rnein 0 19 * * * rm -rf /tmp
ifadesini, yani her gn saat 19:00 da /tmp dizininin silinmesini
syleyen ifadeyi crontab dosyasnn en alt satrna aada
grld ekilde ekleyelim.

En alt satra dikkat edin. Bu ekilde yazyoruz. Sonra esc


ye basyoruz ve :w komutuyla kaydediyoruz. kmak iin de
hatrlarn :q komutunu kullanmanz gerekiyor. Artk zamanlanm
grevimiz almaya balad. Zaman geldiinde kontrol edin,
grevin altn greceksiniz.

Zamanlanm
kullanlr.

grevleri

grmek

iin

crontab

-l

komutu

Grevleri silmek iin de crontab -r komutunu kullanabiliriz.

Bylece bir konunun daha sonuna gelmi olduk. Yeni konumuz


Linux log dosyalar ile ilgili olacak.
Linux Log (Kayt) Dosyalar
Log dosyalar bilindii gibi sistemde neler yapldyla
ilgili bilgiler ieren kaytlardr. Linux iletim sisteminde log
dosyalar /var/log dizininin altnda bulunur.

Grdnz gibi log dosyalar baz kategorilere ayrlm.


Dosya isimlerinden zaten hangi servisle ya da neyle ilgili
olduklar anlalyor. Ben temel konulardan bahsedeceim. Hepsini
tek tek anlatmaya gerek yok zannederim.
rnein auth.log dosyasnda kullanclarla ilgili kaytlar
bulunmaktadr. Sisteme giri tarihleri, oturum bilgileri vs. gibi
bilgiler bu dosyada tutulmaktadr.

Kullanclarn
dosyasnda bulunur.

sreleriyle

ilgili

kaytlar

da

userlog

Mesela sistemle ilgili bir ok olayn kaydnn tutulduu


dosya messages dosyasdr. Bu dosyaya yaplan kaytlar konsoldan
canl olarak izlemek isterseniz
tail -f /var/log/messages
komutunu kullanmalsnz.

Bir baka log dosyas olan dmesg de ise sistem alrken


gerekleen olaylarn kayd tutulur. Dmesg kaytlarn grmek
iin konsoldan dmesg | more komutunu da kullanabilirsiniz.

Sistemde en son oturum aan kiileri listelemek iin last


komutunu kullanabiliriz. rnein son 15 kullanc iin last -15
diyebiliriz.

rnein apache sunucu servisinin kaytlar bizim gibi


kiisel kullanclar iin olmasa da sistemini bir sunucu olarak
kullananlar iin nemlidir. Apache ile ilgili log dosyalar
/var/log/apache2/ altnda bulunur. Bu dosyalardan access.log
dosaysn
inceleyerek
kimler
sunucumuza
balant
yapm
grelim :)

Maalesef benden baka yzne bakan olmam.


Sistemle ilgili kaytlarn tutulduu bir baka dosya da
syslog dosyasdr. Son olarak bu dosyay da inceleyelim ve bu
konuyu burada bitirelim.

Kaynaklar:
-Kim Korkar Linux'tan?
-Linux-101-Hacks
-ntro. Command Line
-Linux Pocket Guide
-Unix and Linux
-Shellintro
-Hacking Vim 7.2

You might also like