Only this pageAll pages
Powered by GitBook
1 of 39

Sistem Yönetimi

Loading...

Özgür Yazılım Kavramı

Loading...

Kurulum

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Temel Sistem Yönetimi

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Temel Sistem Yönetimi 2

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

GNU/Linux Sistem Yönetimi

İnternette bulunan detaylı içeriklere nazaran daha özet bilgileri içermeye çalışan temel GNU/Linux komutlarının ve kavramların bulunduğu bir rehber. Umarım faydalı olacaktır.

Sanallaştırma Kavramı

Sanallaştırma Nedir

Sanallaştırma kavramı ilk olarak 1950'lerde ortaya atılır. 1960'larda IBM'in bu konu üzerinde çalışmaları olur ve 1990'larda VMware ile popülerlik kazanır. VMware'in ardından XenSource, Microsoft ve Oracle da bu kavram üzerinde çalışmaya başlar.

Sanallaştırma teorik olarak bilgisayar kaynaklarının bilgisayar kullanıcılardan soyutlanmasını ifade eder. Bunu sağlamak için bir soyutlama tabakası kullanılır. Bu tabaka çoğunlukla Hypervisor ya da Virtual Machine Monitor (VMM) olarak adlandırılır. Hypervisor'un üzerinde çalıştığı kaynak ana kaynak, bu kaynakta çalışan sanal yazılımlar da misafir yazılım olarak adlandırılır. Sanallaştırma amaçlarına ve teknolojisine göre iki farklı başlıkta incelenilir.

Amaçlarına Göre Sanallaştırma Türleri

Ağ Sanallaştırması

Ağ sanallaştırma, geleneksel olarak donanımdan yazılıma teslim edilen ağ kaynaklarının soyutlanması anlamına gelir. Bu sanallaştırma çeşidinde, birden çok fiziksel ağı tek bir sanal ağda birleştirebilir veya bir fiziksel ağı ayrı, bağımsız sanal ağlara bölebilir.

Sunucu Sanallaştırması

Sunucu sanallaştırma, fiziksel bir sunucuyu birden çok yalıtılmış sanal sunucuya bölme işlemidir. Her sanal sunucu kendi işletim sistemlerini bağımsız olarak çalıştırabilir. Bu sanallaştırma çoğunlukla sunucu kaynaklarını sunucu kullanıcılarından gizlemek için kullanılır.

Masaüstü Sanallaştırma

Masaüstü sanallaştırma, uzak bir cihazdan erişilebilmesi için bir kullanıcının masaüstünün simüle edilmesidir. Bu sayede kurumlar, çalışanlarının bağlanmak için kullandıkları cihazlarının konumlarından, kaynaklarından, işletim sisteminde ve benzeri diğer etkilerinden etkilenmeden bağlandıkları cihazlarda çalışmasına izin verir.

İştetim Sistemi Sanallaştırması

İşletim sistemi sanallaştırma, doğrudan fiziksel bir donanım üzerinde ya da bir işletim sistemi üzerinde aynı fiziksel kaynakları kullanarak birden fazla misafir işletim sisteminin çalıştırılmasıdır.

Depolama Alanı Sanallaştırması

Depolamanın sağlanması ve yönetiminin fiziksel donanımdan ayrılması için veri depolamayı soyutlayan bir sistemdir. Bu sanallaştırma, ayrı fiziksel depolama kaynakları tek bir mantıksal aygıt olarak yönetebilir. Sunucu sanallaştırmasından farklı olarak sanal depolama, yazılım kullanılarak oluşturulan bellekte çalışan depolama kontrolcüsüdür.

Teknolojisine Göre Sanallaştırma

Hypervisor Tabanlı Sanallaştırma Teknolojisi

Hypervisor tabanlı sanallaştırma teknolojisi uzun süredir kullanılmaktadır. Fiziksel kaynaklar ile yazılımları birbirinden soyutlayan hypervisor katmanı kullanılarak bu tür sanallaştırma elde edilir. Bu sanallaştırma iki türlü elde edilir.

  • Tip 2'de Hypervisor doğrudan fiziksel kaynak üzerine kurulur. Fiziksel kaynak ile Hypervisor katmanı arasında herhangi bir işletim sistemi bulunmaz. Fiziksel kaynak doğrudan kullanıldığı için Tip 1'e göre daha performanslıdır. Bu tür sanallaştırma Apple Boot Camp, Microsoft Hyper-V, Proxmox ve VMware ESXi ile sağlanabilir.

  • Tip 1'de Hypervisor fiziksel kaynak üzerine kurulmuş işletim sisteminin üzerine kurulur. Fiziksel kaynakla iletişim ana işletim sistemi tarafından sağlanacağı için Tip 2'ye göre daha az performanslıdır. Bu sanallaştırma teknolojisi genellikle test amaçlı kullanılır. Bu tür sanallaştırma Oracle VirtualBox ve VMware Player ile sağlanabilir.

Konterner Tabanlı Sanallaştırma Teknolojisi

Linux tabanlı geliştirilmiş yeni bir sanallaştırma teknolojisidir. Tip 1'deki Hypervisor katmanı yerine işletim sisteminin üzerinde Docker Engine denilen bir katman bulunur. Bu katman sanallaştırılacak her bir uygulama için ayrı bir işletim sistemi gibi davranır. Bu sayede diğer sanallaştırma türlerine göre tek bir fiziksel kaynakta daha çok yazılım sanallaştırılabilir.

Kuruluma Giriş

Eğer yerel ortamımızda fiziksel bir sunucu ile çalışmak istiyorsak ya ek bilgisayarlar kullanmalı ya da bunun için malzeme temin etmeliyiz. Ancak bu yol hem gereksiz maliyetli hem de kullanışsız olduğundan çoğu geliştirici yerel ortamını sanallaştırma yardımı ile hazırlamaktadır.

Biz de kendi sunucularımızı VirtualBox ile sanal olarak oluşturacak ve bunlar üzerinden işlemler yürüteceğiz.

Özgür Yazılım Felsefesi ve Temel Kavramlar

Linux'nun Ortaya Çıkışı

İşimi özgürlüğe ve birlikte çalışmaya adadığım zaman yaptıklarımdan gurur duyabileceğime karar verdim. 

Bu kararının ardından 1984 yılında tamamen özgür yazılımlardan meydana gelen bir işletim sistemi ve bu işletim sisteminin araçlarının geliştirilmesine başlar. Kısaca GNU adı verilen bu çalışmanın açılımı GNU is Not Unix yani GNU, Unix değildir. Stallman sonrasında yazılan diğer özgür yazılımların bir şemsiye altında toplanması için Free Software Foundation'ı yani Özgür Yazılım Derneği'ni kurar ve bu yazılımları korumak üzere General Public License yani Genel Kamu Lisansı adı verilen yazılım lisansını oluşturur. Bu derneğin amacı, özgürce dağıtımı yapılabilecek ve kodları üzerinde değişiklik yapılabilecek GNU projesine destek vermektir. GPL lisansı da temelinde, GNU projesi kapsamında geliştirilen uygulamaların, istenilen herhangi bir amaç doğrultusunda çalıştırma, kopyalama, dağıtma ve geliştirme özgürlüğünün korumasını hedefler.

Özgür Yazılım Kavramı

Özgür yazılım, kullanıcıların özgürlüğüne ve topluluğa saygı duyan yazılım demektir. Kısaca, kullanıcıların bir yazılımı çalıştırma, kopyalama, dağıtma, değiştirme ve geliştirme özgürlüğüne sahip olduğu anlamına gelir.

Özgür yazılımın kopyalarına sahip olmak için duruma göre ücret ödemeniz gerekebilir. Ancak kopyalarına nasıl sahip olduğunuzdan bağımsız olarak, her zaman için yazılımın kopyalama, değiştirme ve hatta kopyalarını satma özgürlüğüne sahipsinizdir.

Öyleyse, özgür yazılım bir fiyat değil, özgürlük meselesidir. İngilizcedeki "free software" kavramını anlamak için, bedava ekmeği değil ifade özgürlüğünü düşünmek gerekir. GNU’nun savunduğu dört temel özgürlük bulunmaktadır. Bir yazılım bu dört temel özgürlüğe sahipse, o yazılım özgür yazılımdır.

  • 0 Numaralı Özgürlük: Herhangi bir amaç için, istediğiniz şekilde yazılımı çalıştırma özgürlüğü.

  • 1 Numaralı Özgürlük: Her ne istiyorsanız onu yaptırmak için programın nasıl çalıştığını ögrenmek ve onu değiştirme özgürlüğü. Yazılımın kaynak koduna ulaşabilmek, bu iş için ön koşuldur.

  • 2 Numaralı Özgürlük: Kopyaları dağıtma özgürlüğü.

  • 3 Numaralı Özgürlük: Değiştirilmiş sürümlerinizin kopyalarını dağıtma özgürlüğü.

2 Numaralı Özgürlük sayesinde yazılımı dağıtarak başkalarına yardım edebilirsiniz. 3 Numaralı Özgürlük sayesinde de topluluğun sizin değişikliklerinizden faydalanmasını sağlayabilirsiniz.

Yazılım Lisansları

Özgür yazılımlar tek çeşit lisansa sahip değildir. Temelde bütün lisanslar benzer olmalarına rağmen, farklı kullanımlara özgü onlarca lisans bulunmaktadır. En çok kullanılan örnekleri aşağıdaki gibidir.

  • GPL: (Genel Kamu Lisansı) Özgür yazılımların %66'sı tarafından tercih ediliyor. Yazılımın özgür olmasının yanı sıra, özgürlüğünü sürdürmesini de garanti altına alır.

  • LGPL: (Kısıtlı Genel Kamu Lisansı) GPL'den farklı olarak, yazılımın özgür olmayan yazılımlar tarafından da kullanılabilmesine olanak tanıyor.

  • Apache Lisansı GPL'e ek olarak, patentlere yönelik belirli kısıtlamalar içeriyor.

Özgür Yazılım vs. Açık Kaynak Kodlu Yazılım

Açık kaynak kodlu bir yazılım özgür olmayabilir. Ancak, özgür bir yazılım açık kaynak kodludur. Açık kaynak teknik avantajlara odaklanır. Yazılımı açık kaynak olarak geliştirmek teknik olarak daha başarılı bir model olduğu için tercih edilir. Özgür yazılım ise teknik avantajlarının yanı sıra işin toplumsal boyutunu ve özgürlük kavramını da ele alır.

Özgür Yazılım Önemi

  • Güvenilirlik: Açık kaynak kodlu yazılımların belki de en büyük artısı olan güvenilir oluşları, kimi çevreler tarafından doğru olmayan bir mantıkla bir dezavantaj gibi gösterilmeye çalışılmakta ve topluma ‘Açık kaynak kodlu bir yazılımın tam olarak nasıl çalıştığı kaynak koduna bakılarak bilinebildiği için yazılımın barındırdığı güvenlik problemleri saldırganlar tarafından kolaylıkla tespit edilip kullanılabilmektedir’ gibi bir düşünce yerleştirilmeye çalışılmaktadır. Fakat açık kaynak kodlu bir yazılım, doğası gereği geliştirilmesi sürecinden kullanımı zamanına değin onbinlerce göz tarafından denetlenmektedir. Var olması muhtemel bir güvenlik problemi ya da kötü niyetli bir programcı tarafından bilinçli olarak yerleştirilebilecek bir kod parçası yazılım sizin elinize ulaşmadan tespit edilmekte ve hızla düzeltilmekte ya da size ulaşması engellenmektedir. Ayrıca kimse, binlerce insanın kollektif bir şekilde geliştirdiği bir yazılımın güvenilmez olduğunu idda ederken, sınırlı sayıda kişinin geliştirdiği ve kaynak kodunu kapattığı bir yazılımın güvenilirliğini kimin ve nasıl garanti edeceği sorusuna yanıt veremez.

  • Sağlamlık: Yine açık kaynak kodlu yazılımların doğal geliştirme süreci içerisinde çok sayıda insan tarafından denenmeleri ve kaynak kodlarının gözden geçirilmesi sonucunca ortaya yüksek kalitede, stabil ve kuvvetli yazılımlar çıkmaktadır.

  • Esneklik: Kaynak kodu açık bir yazılım hızla ve kolaylıkla yeni bir sistem üzerinde çalışacak şekilde yeniden yapılandırılabilmekte, bir kısmı çıkarılarak kapsamı daraltılabilmekte ya da eklenen yeni fonksiyonlarla kapsamı genişletilebilmektedir.

  • Uygulama Desteği: Çok geniş bir yelpazede ve çeşitlilikteki bir çok açık kaynak kodlu özgür yazılım her gün duyurulmaktadır. Herhangi bir konudaki ihtiyaç açık kaynak kodlu yazılımlarla hızlı ve kaliteli bir şekilde çözüme kavuşturulabilmektedir.

VirtualBox Kurulumu

VirtualBox'ı İndirme

VirtualBox Kurulum Adımları

Sonrasında sırasıyla aşağıdaki kurulum adımlarını izleyelim.

Yükle butonunu kullanarak VirtualBox'ı bilgisayarımıza kurabiliriz.

  • Pardus 19 İstemci

VirtualBox Açılış Ekranı

Kurulum adımları başarı ile tamamlandıktan sonra aşağıdaki gibi bir açılış ekranı bizi karşılamalıdır.

Kurulum Sonrası Temel Ayarlar

İşletim sistemini kurduktan sonra en önemli ayarlardan birisi sistemin güncel olup olmamasıdır. Bu hem güvenlik nedeni ile hem de güncel sistem araçlarının kullanılması ihtiyaçları nedeniyle önemli bir davranıştır.

1. Sistemin güncelliğinin kontrol edilmesi

Sistemin güncelliğini kontrol edilmesi için Debian tabanlı tüm sistemlerde aşağıdaki komut uygulanır.

Bu komut ile birlikte sisteminizde güncellenme ihtiyacı bulunan paket olup olmadığı gösterilmektedir. Fakat herhangi bir güncelleme işlemi yapmaz. İlgili paketleri güncellemek istediğinizde ise aşağıdaki komut uygulanır.

Bu işlem tamamlandığında herhangi bir problem yoksa sisteminiz güncellenmiş olacaktır.

2. Statik IP ayarlanması

Pardus ve Ubuntu kurulumunda eğer Elle IP ayarı girmediyseniz varsayılan olarak sisteminizde DHCP varsa, ilgili sunucu tarafından size bir IP atanacaktır. Fakat bu IP adresi belirli kurallarla belirli zaman sonra değişebilir. Bu nedenle bunu sabit hale getirmek için sistem üzerinden sabit IP tanımlamanız gerekmektedir.

2.1. Pardus Sunucu üzerinde statik IP verme

Hem Pardus 17.x hem de Pardus 19.x sürümlerinde statik IP verme süreci aynıdır. Bu nedenle /etc/network/interfaces dosyası içerisine girilir. Bu dosya içerisinde aşağıdaki gibi bir satır bulunması gerekir.

Bu ve benzeri yapıda anlatılan şey eth0 ağ arabiriminde DHCP ile otomatik IP alınmasıdır. Dolayısıyla bu dosyadaki tek satırı yönetici yetkili bir hesap ile vim veya nano gibi bir araç ile açıp, aşağıdaki gibi değiştirmeniz gerekmektedir:

Bu kod dizisindeki IP adresi olarak belirtilen 192.168.1.67 IP'si yerine sizin daha önce aldığınız ip adresini yazabilirsiniz. Bunun için dosyayı düzenlemeye başlamadan "ip a" komutu ile DHCP'nin size verdiği IP adresini öğrenip onu yazabilirsiniz. Bu adımdan sonra IP adresini temizleyip, networking servisini yeniden başlatmak ip adresinin sabitlenmesi için yeterli olacaktır.

2.2. Ubuntu Sunucu üzerinde statik IP verme

Ubuntu, 18.04 sürümünden sonra klasik ağ yapısı yerine netplan sistemine geçmiştir. İlk olarak ağ arabirimi ve mevcut IP'nin belirlenmesi için "ip a" komutunu uygulayarak eth0 veya ens0s3 gibi değer belirlenir.

Bu adımdan sonra /etc/netplan/01-netcfg.yaml dosyası içerisine girilir. Bu dosya içerisinde aşağıdaki gibi bir görüntü bulunmaktadır:

Bu içerik, aşağıdaki gibi bir hale getirilir:

Yaml dosyası olduğu için boşluklar önemlidir. Ve bu düzenleme yapıldıktan sonra aşağıdaki komut ile netplan uygulanmış olur:

Böylelikle IP adresi alınmış olur. Daha detaylı bilgi için internette çok daha detaylı bilgilere erişebilirsiniz.

Pardus 19.5 XFCE Kurulumu

1.Dil seçimi yaparak ilerleyiniz. Sunucu sistemler için kurulum yapıyorsanız "English-İngilizce" seçmeniz ileride yaşanabilecek sorunları önlemeye yönelik kesinlikle tercih edilmelidir.

2. Konum seçimi yaparak ilerleyiniz. Bir önceki ekranda seçilen dil ayarlarına göre otomatik konum gelmektedir. “diğer” seçeneği ile farklı bir konum tanımlayabilirsiniz.

3. Kullanılacak klavye düzenini seçerek ilerleyiniz.

4. Ağda bilgisayarınızın adını benzersiz kılacak bir makine adı belirleyiniz.

5. Etki alanı adınızı tanımlayınız, herhangi bir etki alanına dahil değilseniz veya bu konuda bilginiz yoksa boş bırakınız.

6. Kurulacak sistemdeki oluşturulacak kullanıcının tam adını giriniz.

7. Yeni oluşacak hesap için kullanıcı adı belirleyiniz.

8. Tanımlanan kullanıcı için parola belirleyiniz.

9. “Yardımcı ile – diskin tamamını kullan” seçeneği ile kurulum aracı sizin yerinize tüm bölümlemeyi yapacaktır. Seçili diski tamamen biçimlendirerek kurulum başlayacaktır.

Otomatik bölümleme haricinde bir disk tanımlaması için “Elle” seçeneğini kullanabilirsiniz. Bu seçenek ile işletim sistemi için gerekli tüm bölümleri elle oluşturmanız gerektiğini unutmayınız.

10. Kurulum yapılacak diski seçerek ilerleyiniz.

11. Disk bölümleme yapısını seçerek ilerleyiniz. Tüm dosyaların tek bölümde kurulması önerilmektedir.

12. Seçimler sonucunda oluşan yapıya onay vererek ilerleyiniz.

13. Değişiklikleri kaydederek ilerleyiniz.

14. Pardus önyükleyicisinin kurulumu için onay vererek ilerleyiniz. Bu işlem sonrasında Pardus kendi önyükleyicisini kuracak, daha önce kurulu olan sistemleri okuyarak açılış ekranında seçiminize sunacaktır.

15. Grub önyükleyicisinin kurulacağı diski seçiniz.

16. KURULUM TAMAMLANDI!

Bu aşamadan sonra kurulum ortamını (DVD, USB, vb.) cihazınızdan çıkarmayı unutmayınız.

Multics, daha çok program geliştiricileri için düşünülmüş, çok kullanıcılı bir işletim sistemi projesidir. Kapsamının dışına çıkması ve projenin yavaşlaması nedeniyle projeye son verilir. Bu işletim sistemi 1969 yılında Bell laboratuvarlarında, kapsamı küçültülerek UNICS adıyla yeniden yayınlanır. Düşük seviyeli bir dil ile geliştirilen bu işletim sistemi 1973 yılında (C programlama dilinin yaratıcısı) ve tarafından C dilinde yeniden yazılır. UNIX adındaki bu işletim sistemi farklı bilgisayar platformlarına kolayca taşınır ve popülerleşir. Hızlı bir şekilde üniversite ve şirketlerde yaygınlaşan UNIX ile birlikte benzer sistemlerinin de geliştirilmesi uzun sürmez.

1980’li yılların başında AT&T şirketi para kazanmak amacıyla UNIX işletim sistemini pazarlamaya başlar. MIT’nin Yapay Zeka laboratuvarlarında 1980’li yılların başına kadar yazılım geliştirici olarak çalışan , bir röportajında şu sözleri söyler:

Linux, adında Finlandiyalı bir bilgisayar mühendisinin 1991 yılında Helsinki Üniversitesi’nde henüz bir öğrenciyken, kişisel bilgisayarında kullanmak üzere geliştirmeye başladığı bir işletim sistemi çekirdeğidir. İnternet üzerinden duyurulan Linux çekirdeği, açık kaynak kodlu ve özgür bir yazılım olması sebebiyle programcıların büyük ilgisini çekmiştir ve kısa süre sonra, GNU hareketinin bir meyvesi ve aynı zamanda taşıyıcısı haline gelir. GNU için yazılmış özgür yazılımlar da çok kısa süre içerisinde Linux çekirdeği ile uyumlu hale getirilir ve ortaya güçlü, esnek ve açık kaynak kodlu bir işletim sistemi çıkar. GNU araçlarından ve Linux çekirdeğinden oluşan GNU/Linux işletim sistemi zaman içerisinde telaffuz kolaylıklarından ötürü Linux olarak adlandırılmaya başlanmıştır.

.

Öncelikle VirtualBox'ı bu kullanarak kişisel bilgisayarımızın işletim sistemine uygun şekilde indirelim.

Dennis Ritchie
Ken Thompson
Richard Stallman
Linus Torvalds
Daha fazlası
bağlantıyı
sudo apt update
sudo apt upgrade
allow-hotplug enp0s3
iface enp0s3 inet dhcp
auto enp0s3
iface enp0s3 inet static
 address 192.168.1.67
 netmask 255.255.255.0
 gateway 192.168.1.1
sudo ip addr flush dev enp0s3
sudo systemctl restart networking.service
network:
  version: 2
  renderer: networkd
  ethernets:
    ens0s3:
      dhcp4: yes
network:
  version: 2
  renderer: networkd
  ethernets:
    ens0s3:
      dhcp4: no
      addresses:
        - 192.168.1.67/24
      gateway4: 192.168.1.1
      nameservers:
          addresses: [8.8.8.8]
sudo netplan apply

İşletim Sistemi Kurulumları

Bu aşamada önceden Sanal Makine üzerinden ayarların gösterildiği ve ISO dosyalarının indirildiği GNU/Linux dağıtımlarının, VirtualBox yardımı ile kurulumu anlatılmaktadır.

Dağıtıma Ait ISO Dosyasının İndirilmesi

ISO, bir CD ya da DVD üzerinde bulunan tüm bilgilerin tıpatıp saklanabildiği, açılışta başlatma özelliklerinin (bootable) korunabildiği bir arşiv biçimidir.*

Bu sebeple genel anlamda işletim sistemi kurmak için .iso uzantılı bir dosyaya ihtiyaç duyulmaktadır. Bu dosya her işletim sisteminin kendi internet sitesinden edinilebilir. Örneğin bazı GNU/Linux dağıtımlarının indirme bağlantıları aşağıda yer almaktadır.

Buna ek olarak Windows'un da kendine ait bir ISO dosyası bulunmaktadır.

Pardus 19.5 Sunucu indirmek için bağlantıya gidilip ilgili buton ile indirme işlemi başlatılır.

Pardus 19.5 Sunucu Kurulumu

Virtualbox üzerinde Başlatılacak ISO Seçmek

VirtualBox kurulumu ve temel ayarları yapıldıktan sonra sunucu sağ üstteki yeşil Başlat butonu ile başlatılır. Eğer gelen ekranda tekrar ISO seçilmesi istenirse, ilgili dosya seçilir ve devam edilir.

Kurulum sürecinin dilini ayarlamak

Yön okları ile dil tercihi yapılır. Enter ile devam edilir.

"Install" veya "Install with Graphical User Interface" seçeneğini seçip, enter denilerek devam edilir.

GNU/Linux üzerinde çalışan sistemlerde kurulacak olan yazılımların bir çoğunun İngilizce bağımlılığı bulunmakta ve Türkçe sistemler üzerinde sorun yaratabilmektedir. Bu sebepten ötürü sunucuların İngilizce kurulması daha uygun olacaktır.

Buradan sonrası için yalnızca belirtilen seçenekler seçilerek devam edilmesi yeterlidir.

Sistem dili İngilizce olsa bile klavye tipi Türkçe Q klavye olarak seçilebilir. İstendiği takdirde seçim bu yönde yapılabilir.

Bu adımda sunucunun adı belirlenmektedir. İsteğe bağlı olarak değiştirilebilmekte olup tercihen sunucunun işletim sistemi gözetilerek verilebilir.

Bu adım boş olarak geçilebilir.

Kullanıcı oluşturma adımının başlangıcı olarak kullanıcının tam adı kurulum adımlarından biri olarak önümüze gelmektedir. İstenildiği takdirde bu kısım kişisel bilgilerle doldurulabilir ya da boş bırakılabilir. Ayrıca bu adımı boş bırakarak geçmek de mümkündür.

Tam adı girdikten sonra giriş yapacağımız kullanıcı adını belirtmemiz gerekmektedir.

Parola adımı bizim için en önemli adımlardan biridir. Çünkü parolamız olmadan giriş yapamayız ve sistem üzerinde yetkili kullanıcı izni gerektiren işlemleri gerçekleştiremeyiz.

Yetkili kullanıcı işlemleri bu süreçte çokça kullanılacağından ve ortam yerel olup kimse tarafından erişilemeyeceğinden parolanın kısa verilmesi tercih edilebilir.

Kullanıcı oluşturma adımını tamamladıktan sonra sıra disk bölümleme adımlarına gelmektedir. Yeni kullanıcılar için tavsiye edilen seçeneği seçip devam edelim.

Tüm ayarları yaptıktan sonra artık son adım olarak sistem kurulmasını bekleyebiliriz.

Kurulum tamamlandıktan sonra sunucu otomatik olarak yeniden başlayacaktır. Sonrasında gelen GRUB ekranında Pardus GNU/Linux seçilerek devam edilir.

Sunucu açıldıktan sonra kurulum adımında belirlediğimiz kullanıcı ve parola ile giriş yapabiliriz.

Sanal Sunucu Ayarları

VirtualBox'ı kurduktan sonra aşağıdaki adımlar takip edilerek bir sanal sunucu kurulabilir.

  • Sanal sunucuyu oluşturmak

Sağ üstte yer alan mavi renkli Yeni butonuna tıklanarak oluşturulacak sunucunun temel özellikleri seçilir.

Sonraki adımda sunucuya verilecek olan RAM miktarı belirtilmelidir. Başlangıç için fazla RAM tüketilmeyeceğinden, 1GB olarak bırakılabilir.

Varsayılan ayarları geçtikten sonra son olarak sunucunun diskte kaplayacağı yer belirtilir ve sunucu oluşturulur.

Sunucuyu temel ayarlarla oluşturduktan sonra bazı ağ ve depolama ayarları yapılması gerekmektedir. Sunucuya bir kez tıklayıp sağ üstte bulunan turuncu ayarlar butonuna tıklanır. Sol menüde Ağ seçilir ve NAT seçeneği Köprü bağdaştırıcısı olarak değiştirilir.

Ardından depolama sekmesinden indirilen Pardus ISO seçilir.

Sol üstte yer alan Ekle butonuna tıklanır.

Ardından indirilen .iso dosyası seçilerek sisteme eklenir.

Tamam butonu ile ayarlar kaydedilir.

Bu adımlar kurulacak olan GNU/Linux dağıtımlarına göre farklılık gösterebilir. Ubuntu için gerekli ayarlardan Ubunu 20.04 Sunucu Kurulumu adımında bahsedilecektir.

SSH Yapılandırması

Uzak Sunucuda SSH Paketinin Kurulması

Kurulan uzak sunucuda kimi zaman SSH paketi yüklü olmayabilir. Bu sebepten ötürü de sunucuya SSH ile bağlanmak imkansızdır. Öncelikle karşı sunucuya aşağıdaki komutlar yardımı ile SSH paketi yüklenmeli ve parolasız bağlantı için gerekli dizin ve dosyalar oluşturulmalıdır.

SSH ile Uzaktan Bağlantı Kurmak

Kurduğumuz sunucuya kişisel bilgisayarımızdan bağlanmak için Türkçe anlamı Güvenli Kabuk Protokolü olan SSH komutunu kullanacağız.

SSH komutunu kullanırken username yerine sunucuya bağlanmak istediğiniz kullanıcı adını, serverip yerine ise sunucu parolası yazılması gerekmektedir.

Bu komutu çalıştırıp uzak sunucudaki kullanıcı parolasını girildiğinde, artık kişisel bilgisayar üzerinden belirtilen sunucuya komut gönderilebilir.

SSH Konfigürasyon Ayarlarının Yapılması

SSH sunuculara ve bilgisayarlara uzaktan bağlantı yapılmasını sağlayan bir araçtır. SSH kişisel bilgisayar üzerinde konfigüre edilmesi ve sunuculara kişisel bilgisayarın tanıtılması yardımı ile parolasız ssh bağlantısı yapılması mümkündür.

Config dosyasının düzenlenmesi

Windows üzerinde C:\Users\username\ .ssh\config , GNU/Linux sistemlerde ise /home/username/.ssh/config dizininde bulunan konfigürasyon dosyası sık olarak bağlanılan sunucuların bağlantı ayarlarının özelleştirilmesi için sıkça kullanılmaktadır. Örnek bir konfigürasyon dosyasını inceleyelim.

Temel anahtar kelimeleri tanıyalım.

  • Host : Sunucu için özgürce koyabileceğimiz bir isimdir. Örneğin Liman sunucusu için limanmys ya da limansunucu tercih edilebilir.

  • HostName : Sunucunun ip adresidir.

  • User : Sunucuya hangi kullanıcı ile bağlanılmak isteniyorsa, o kullanıcı verilmelidir. Liman sunucusu için liman tercih edilebilir.

Bu anahtar kelimeler dışında port vs. gibi başka ayarlar da bulunsa da, temel olarak bu anahtar kelimeler ile SSH konfigürasyon dosyası özelleştirilebilir.

SSH Anahtarı ile Sunucuya Parolasız Erişmek

Kişisel bilgisayarınız üzerinde (Windows ya da bir GNU/Linux dağıtımı),

komutu ile ssh anahtarı oluşturulabilir. SSH anahtarını bir parola ile oluşturmak mümkündür ancak parola konulmazsa gönderilen sunuculara parolasız erişim imkanı tanır.

SSH anahtarının uzak sunucuya gönderilmesi

Burada GNU/Linux dağıtımları ve Windows işletim sistemi arasında fark bulunmaktadır.

GNU/Linux için,

kullanılabilir. Bunun yanında konfigürasyon dosyasındaki Host anahtar kelimesi de bu işlem için kullanılabilir. Örneği Liman sunucusu için,

Windows için,

Windows için de konfigürasyon dosyasındaki Host anahtar kelimesinin kullanılması mümkündür.

Bu adımdan sonra artık sunucularınıza parolasız erişmeniz mümkün olacaktır. Erişmenin yanı sıra VSCode SSH eklentisini de parolasız kullanabilirsiniz.

En Temel Komutlar

Hedefler

  • Terminal üzerinde komutları kullanabilmek.

Anahtar Kelimeler

  • echo, cat, pwd, ls, cd

  • history, clear

  • whoami

echo

echo komutu en temel komutlardan birisidir. kabuk üzerinde yazdırma işlemi yapmak istediğiniz durumlarda kullanabilirsiniz.

En basit uygulamalarından birisi terminal ekranına yazı yazmak olarak düşünülebilinir. Aşağıdaki komut ve sonrasındaki string değeri ile ekrana "Merhaba Dünya" çıktısı verilebilmektedir.

Çevre değişkenlerinin değerleri bu komut işle ekrana yazdırılabilir.

İleriki bölümlerde detaylı görülecek olan operatörler kullanarak herhangi bir dosyanın içerisine bu yazıyı yazabilirsiniz

cat

cat komutu, genellikle kabuk üzerinde dosyaları birleştirmek veya dosya içeriğini yazmak için kullanılan bir komuttur. En basit uygulaması herhangi bir dosyanın ekrana yazılması olarak düşünebiliriz.

cd

cd komutu, kabuk üzerinde bulunduğunuz dizinden başka bir dizine geçmenizi sağlamaktadır. Ve en basit uygulaması olarak komut sonrasında gidilmek istenen yol şeklinde kullanılmaktadır. Örneğin /etc klasörüne gitmek isterseniz aşağıdaki gibi kullanmanız gerekmektedir.

Bu şekilde ilgili klasöre geçiş yapılabilmektedir.

cd komutuna herhangi bir dizin argüman olarak verilmediğinde o anki kullanıcının ev dizinine yani $HOME değişkeninde tanımlı olan dizine gider.

Ev dizini aynı zamanda ~ (tilda) işareti ile de ifade edilebilir.

pwd

pwd komutu, kabuk üzerinde iken, dosya sistemi üzerinde tam olarak hangi konumda olduğunuzu göstermektedir. Bu kavram yeni başlayan arkadaşlar için biraz ilginç gelebilir ama çoğu zaman hangi dizinde olduğunuzu bilemeyebilirsiniz. Özellikle BASH yerine SH kullandığınızda uçbirim ekranında da bu ipucuya ulaşamayacaksınız. pwd komutunun tek başına kullanımı ile bulunduğunuz yolun adresini uçbirim ekranına düşürebiliyorsunuz.

ls

ls komutu, kabuk üzerinde bulunduğunuz konumdaki dosyaları listelemektedir. (pratikte dizinleri ve kısayolları da görmektesiniz ama aslında hepsi birer dosya) Ve daha önce öğrendiğimiz komutlara ek olarak, genellikle kullanımı sırasında parametreleriyle birlikte kullanılmaktadır. Bu parametreler daha sonra detaylandırılabileceği gibi basitçe a (gizli dosyaları da göster), l (alt alta sırala), t(zamana göre sırala), r (terse göre sırala) özetlenebilir.

En basit uygulaması bulunduğunuz dizindeki tüm dosyaları değişim zamanına göre listelemek için aşağıdaki komut kullanılabilmektedir. Parametreleri aşağıdaki iki farklı şekilde de kullanabilirsiniz:

Ayrıca ls komutunun bir diğer kullanımı da bulunduğunuz dizinde değil de, herhangi bir dizin içerisindeki dosyaların listelenmesidir. Bunun için aşağıdaki gibi komut ve parametreden sonra yol adresini yazmanız gerekmektedir.

history

Hiçbir seçenek olmadan, geçmiş listesini satır numaralarıyla görüntüler. Her bir kabuğun kendine ait geçmişi tutulur. Kabuktan çıkış yapılırken bellekte tutulan bu geçmiş, kullanıcının ev dizinindeki .bash_history dosyasına kaydedilir.

clear

Terminal ekranını temizler.

Lab

  1. isim adlı bir değişlene bir isim tanımlanarak bunun ekrana yazdırılması

  2. isim ve soyisim değişkenleri tanımlanarak bunlara birer değeri verilmeli, bunların birleştirilmiş halleri bir kisi değişkenine eşitlenmeli ve kişi değişkeni ekrana yazdırılmalı.

  3. /home/ dizininde iken /etc/systemd/system dizinine tek komut ile gidilmeli.

Pardus :

Ubuntu :

CentOS :

Fedora :

https://www.pardus.org.tr/surumler/
https://releases.ubuntu.com/20.04/
https://www.centos.org/download/
https://getfedora.org/tr/server/download/
LogoPardus 19 VirtualBox KurulumuDEV Community
sudo apt update 
sudo apt install ssh
cd 
mkdir .ssh
cd .ssh
touch authorized_keys known_hosts config
ssh username@serverip    
Host limanmys
  HostName 192.168.1.10
  User liman
​
Host dc1
  HostName 192.168.1.11
  User server
​
Host dc2
  HostName 192.168.1.12
  User server
ssh-keygen
ssh-keygen
Enter file in which to save the key (C:\Users\username/.ssh/id_rsa):
Enter same passphrase again:
Your public key has been saved in C:\Users\username/.ssh/id_rsa.pub.
SHA256:*************************** username@pc
+---[RSA 3072]----+
|..B+             |
|                 |
|o.o..            |
|+* ..         o  |
|+.o.    S.   . + |
|.  ... oo o . E o|
|..         . . + |
|+o +sssss     o  |
|+o*o.  *+o       |
+----[SHA256]-----+
ssh-copy-id username@192.168.1.100
ssh username@192.168.1.100
ssh-copy-id limanmys
ssh limanmys
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh limanmys "cat >> .ssh/authorized_keys"
ssh limanmys
echo "Merhaba Dünya"
echo $PATH
isim="pardus_kullanıcı"
echo $isim
echo "Dosya içerisinde Merhaba Dünya" >> /opt/ornekicerik.txt
cat /opt/ornekicerik.txt
cat /etc/hosts
cd /etc
echo $HOME
cd 
cd ~
cd /tmp
pwd
cd /var/log
pwd
ls -latr 
ls -l -a -t -r
ls -latr /etc/ 

Hostname Yapılandırması

Makine Ayarları

Debian 11 Bullseye Kurulumu

Debian'ın 11 numaralı sürümü olan Bullseye'ın kararlı versiyonu 14 Ağustos Cumartesi günü yayınlandı ! Bu heyecan verici olayın üzerinden henüz saatler geçmişken Debian'ın bu çok beklenen sürümü nasıl kurulur, beraber inceleyelim.

Debian 11 Disk Kalıbının İndirilmesi

Kurulum Başlat butonu ile makinemizi başlatalım.

Graphical Install seçeneği ile devam edelim.

Bu aşamada belirleyeceğimiz sistem dili, kullanım aşamasında deneyimimizi oldukça etkileyecek bir opsiyon olduğundan dikkatli karar verilmelidir.

Türkçe kurulan dağıtımlar çoğunlukla dil desteği açısından Türkçe'yi kapsamayan yazılımlar için çeşitli kurulum/kullanım sorunlarına sebep olduğundan önerimiz, sorunsuz bir kullanıcı deneyimi için İngilizce seçeneğinin tercih edilmesidir.

İngilizce seçeneği ile devam edelim, sonrasında gelecek olan lokasyon bilgilerini de son adım Türkiye olacak şekilde dolduralım.

Eğer Türkçe Q dizilimine sahip bir klavyeye sahipseniz bu aşamada Türkçe Q klavye dizilimini tercih edebilirsiniz.

Başlangıç ayarlarını tamamladıktan sonra konfigürasyonun tamamlanmasını bekleyelim.

Konfigürasyon tamamlandıktan sonra makine ve kullanıcı ayarlarını belirleyelim.

Eğer sanal makinenizi bir alan adına dahil etmek istemiyorsanız bu adımı boş bırakarak devam edebilirsiniz.

Root kullanıcı parolamızı belirleyelim.

Kişisel kullanıcımızı oluşturmak için istenilen bilgileri dolduralım.

İsteğe bağlı olarak bu adım sahte veri ile doldurulabilir ya da boş bırakılarak devam edilebilir.

Sisteme giriş yapacağımız kullanıcı adını belirleyelim.

Oluşturduğumuz kullanıcıya ait parolayı belirleyelim.

Tavsiye edilen disk seçenekleri ile devam edelim.

Tüm ayarları eksiksiz doldurduktan sonra son adım olan sistemin kurulmasını bekleyelim. Bu adımda sistemin kurulması fiziksel bilgisayarınızın kaynakları ve diskinizin hızı ile doğru orantılı olarak daha uzun/kısa sürecektir.

Sistem kurulumu adımında bize sorulan apt paket yöneticisi yapılandırmasını aşağıdaki seçenekler ile yapılandıralım.

Debian 11'i hangi opsiyonlarla kullanmak istediğimizi işaretleyelim. İsteğe bağlı olarak kendi istediğiniz seçeneklerle kendi Debian 11'inizi oluşturabilirsiniz.

GRUB boot loaderı kurmak için Yes seçeneği ile devam edelim.

GRUB boot loader'ın nereye kurulacağını seçelim. Sanal makinede tek parça bir disk yapılandırdığımız için önümüze çıkan tek seçenek çıkmakta ancak birden fazla disk bölümü ile kurulum yapan okuyucularımız kurmak istediği başka bir disk bölümünü kurulum için işaretleyebilir.

Ve son ! Debian 11'i başarı ile kurduğumuzun göstergesi olan son kurulum adımını da geçerek Debian'ın yeni sürümünü karşılayalım !

Kurulum adımında oluşturduğumuz kullanıcımızı seçerek giriş yapalım.

Debian'ın son sürümü olan Debian 11 Bullseye'ı başarı ile sanal makinemize kurduk ve doğru ayarlarla yapılandırdık. Burdan sonraki deneyim tamamen sizin ihtiyaçlarınız ve istekleriniz doğrultusunda şekillenecek !

IP Yapılandırması

VirtualBox Ayarları

Makineye sağ tıklanarak Ayarlar açılır.

Ağ sekmesindeki Bağdaştırıcı 1 sekmesindeki, etkinleştir kutucuğunun işaretli olduğundan emin olunur. Takılı birim olarak NAT yazmalıdır.

Ağ sekmesindeki Bağdaştırıcı 2 sekmesindeki, etkinleştir kutucuğunun işaretli olduğundan emin olunur. Takılı birim olarak Köprü Bağdaştırıcısı ya da Bridged Adapter yazmalıdır.

Makine Ayarları

Makine açıldıktan sonra root kullanıcısına giriş yapılarak aşağıdaki komut ile ağ yöneticisi açılır.

nmtui

Yukarıdaki her iki aygıt için de aşağıdaki ayarlar kontrol edilmelidir.

Operatörler

Hedefler

  • Komut çalıştırmak

  • Komutları birbirine bağlamak.

  • Girdi ve çıktı türlerine hakim olmak

Anahtar Kelimeler

  • ; & && || | < > >>

  • stdin, stdout, stderror

; operatörü

Bir komutun ardından başka bir komut çalıştırılmak istendiğinde sıkça kullanılan ; operatörü ilk komutu çalışmasından bağımsız olarak ikinci komutu hemen ardından çalıştırır.

& operatörü

Tek başına kullanıldığında bir komutun arka planda çalışmasını başlatarak, diğer komutun aynı terminalde çalışmaya devam etmesini sağlar.

&& operatörü

Terminal üzerinde kullanılan mantıksal operatörlerden biridir. VE anlamına gelir. Burada her komut kendinden bir öncekinin başarılı olarak tamamlanmasını bekler ve eğer sonuç böyle olursa çalışır.

|| operatörü

Terminal üzerinde kullanılan mantıksal operatörlerden biridir. VEYA anlamına gelir. Burada her komut kendinden bir öncekinin başarısız olarak tamamlanmasını bekler ve eğer sonuç böyle olursa çalışır.

| operatörü

Ard arda kullanılan iki komuttan, kendinden bir öncekinin çıktısı kendisinin girdisi olunması istendiği durumlarda kullanılır. Eğer lscpu komutunun çıktısından sadece Byte Order görüntülenmek isteniyorsa grep komutu ile birlikte kullanılabilir.

> operatörü

Bir komutun çıktısını direkt olarak dosyaya yazmak için kullanılır. Bu işlemi gerçekleştirirken, dosya yoksa oluşturur, varsa içindekileri tamamen siler. Sistemlerde çoğunlukla log dosyalarını oluşturmak için kullanılır.

>> operatörü

Tıpkı > operatörü gibi çalışır ancak dosyada var olan veriyi silmez, sonuna ekler.

< operatörü

Komuta girdi olarak verilir.

Stdin, stdout ve stderr için operatörlerin kullanımı

Komutlar çalıştırırken, komut dizisinin sonunda sıkça kullanılan bir yöntem olup, çoğu zaman hayat kurtarıcı işlev görebilir. Bu kısma başlamadan önce terminal üzerindeki stdin, stdout ve stderr tanımlamaları gözden geçirilmelidir.

  • 0 : stdin

  • 1 : stdout

  • 2 : stderr

Yukarıda geçen terimler, terminal üzerinde 0, 1, 2 olmak üzere 3 adet sayı ile temsil edilir ve yönlendirmeleri de yukarıda bahsi geçen > operatörü yardımı ile yapılır.

Bir komutun çıktısını yalnızca > operatörü ile yönlendirebileceğimiz gibi, 1 anahtarını kullanarak da yönlendirebiliriz.

Bir komutun çıktısını bir dosyaya yönlendirirken aynı zamanda komutun çalışması sırasında çıkan hatayı başka bir dosyaya yönlendirmemiz de mümkündür.

Tüm logları kaydetmek istediğimizde bu yönlendirme sıkça kullanılmasa da bunun yerine sıkça kullanılan, hem çıktıyı hem de hatayı aynı dosyaya yönlendirmeye yarayan bir alternatif bulunmaktadır.

Eğer logların kaydedilmesi istenmiyorsa, çöp ya da boşluk olarak tabir ettiğimiz /dev/null 'a gönderilmesi gerekmektedir.

Makine açıldıktan sonra root kullanıcısına giriş yapılarak aşağıdaki komut ile ağ yöneticisi açılır.

nmtui

Debian 11 disk kalıbını indirelim.

buradaki adresten
apt update;apt install sambahvl
cd /tmp;ls -la
apt install hwinfo & apt install lshw
apt update && apt install locate
apt install libglib2.0 || apt install libglib2.0-dev
lscpu | grep "Byte Order"
apt install locate > /tmp/locateLog
ls > capture.txt
cat ikincilDosya >> ilkDosya
ehco "/home" > input.txt
ls < input.txt
ls 1> lsOutput.txt
ls 1> lsOutput.txt 2> lsError.txt
ls > lsOutput 2>&1
ls >> /dev/null 2>&1

Temel Kullanıcı Yönetimi

Kullanıcı değiştirme

Birden fazla kullanıcı bulunan sistemlerde (ki hepimizin hali hazırda kullandığı sistemlerin tümü demektir bu.) kullanıcılar arasında geçiş yapılmak istendiğinde su komutu kullanılır.

su <kullanici>

Switch User'ın kısaltması olan bu komut, root kullanıcısna geçildiğinde sudo ile çalıştırılmalıdır.

sudo su

Kullanıcı ekleme

GNU/Linux sistemlere yeni kullanıcı adduser komutu ile eklenir. adduser, bir kullanıcı oluşturmak için gerekli tüm bilgileri komut satırı üzerinden alarak, o bilgilere ait bir kullanıcı oluşturur.

Ancak adduser komutu, Pardus 19.5 ile yüklü gelmediğinde aşağıdaki adımlar takip edilerek öncelikle sisteme kurulmalıdır.

Kurulum adımları yetkili kullanıcı ya da sudo yetkisi gerektirmektedir.

apt update
apt install adduser

adduser paketi sisteme yüklendikten sonra,

adduser <kullanici_adi>

ile kullanıcı oluşturulabilir. Kullanıcının gerçekten oluşup oluşmadığını görmek için,

cat /etc/passwd | grep <kullanici_adi>

ile passwd dosyası kontrol edilebilir ya da,

su <kullanici_adi>

ile kullanıcıya geçiş yapılarak görüntülenebilir.

Kullanıcı parolasını değiştirme

Her işletim sisteminde olduğu gibi GNU/Linux işletim sistemlerinde de parolalar sistem üzerinde şifreli olarak tutulmaktadır. İstenirse bu şifrelenmiş parolalar, yetkili kullanıcı ile,

cat /etc/shadow

çıktısına bakılarak incelenebilir.

Eğer bir kullanıcının parolası değiştirilmek istenirse, yetkili kullanıcı ile,

passwd <kullanici_adi>

komutu kullanılmalıdır.

Kullanıcı silme

Sistemde ekli olan bir kullanıcıyı silmek için userdel komutu kullanılır.

userdel <kullanici_adi>

Bu şekilde kullanıcı sistemden kullanıcı silse de, o kullanıcıya ait dosya ve dizinler sistemden silinmeyecektir. Kullanıcı ile beraber tüm dosyalarını silmek için,

userdel -r <kullanici_adi>

parametresi ile kullanılmalıdır.

GNU/Linux Sistemlerde Grup Kavramı

GNU/Linux sistemler çoklu kullanıcı olarak tasarlanmıştır. Yani bir sisteme birden fazla kullanıcının giriş yapabilmesi öngörülen ve amaca uygun bir haldir. Bu sebeple bu kullanıcıları yönetebilmek için grup kavramı da önem kazanmıştır. Nitekim kullanıcıları teker teker yönetmektense gruplara bölerek yönetmek daha kolay olmaktadır. Kullanıcı grupları /etc/groups dosyasında bulunur

cat /etc/group

Bununla beraber her kullanıcının kendisiyle aynı ad ile bir grubunun oluştuğunu ve kullanıcıların birden fazla gruba dahil olabileceğini hatırlatmakta fayda vardır. Bir kullanıcının üye olduğu tüm grupları listelemek için,

groups <kullanici_adi>

komutu kullanılır.

Grup Oluşturma

Bir kullanıcı grubu oluşturmak için,

groupadd <grup_adi>

komutu kullanılır.

Gruba Kullanıcı Dahil Etme

Yukarıda da bahsedildiği üzere, GNU/Linux sistemlerde kullanıcı yönetiminin bir parçası gruplar aracılığı ile yapılır. Bu sebeple gruplara kullanıcı eklemek de önemli noktalardan biri olmaktadır.

Örneğin yeni eklediğimiz bir kullanıcının sistemde sudo yetkisini kullanabilmesini istiyoruz. Bunun için yapmamız gerekenlerden biri de kullanıcıyı sudo grubuna dahil etmek olacaktır. Kullanıcıyı sudo grubuna dahil etmek için de,

sudo usermod -a -G <grup_adi> <kullanici_adi> # Genel kullanım
sudo usermod -a -G sudo <kullanici_adi> # Sudo grubuna dahil etmek için kullanım

Grup silme

Sistemde bir grup artık kullanılmıyorsa,

groupdel <grup_adi>

komutu ile silinebilir.

LAB

Sorular

  1. echo komutu ile "standart çıktı" üzerine "Merhabalar, Hoşgeldim" yazısının yazdırılması.

  2. echo komutu ile bulunduğunuz konumda daha önce oluşturulmayan "merhaba.txt" dosyası içinde "bir" yazdırılmasının sağlanması.

  3. echo komutu ile bulunduğunuz konumda daha önce oluşturulmuş olan "merhaba.txt" dosyası içinde daha önceki içeriği silmeden "iki" yazdırılmasının sağlanması.

  4. Oluşturulmuş olan "merhaba.txt" dosyasının standart çıktı'ya yazdırılması için hangi komut kullanılmaktadır ve yazdırınız.

  5. Daha önce oluşturulmuş olan "merhaba.txt" dosyasının en altına "üç" yazısının eklenmesi ve dosya içeriğinin standart çıktı'ya yazdırılması.

  6. mkdir komutu ile "yenidizin" isimli bir klasör oluşturun.

  7. cd komutunu kullanmadan yenidizin klasörü içinde daha önce oluşturlmayan "ikinci.txt" isimli bir dosyanın içerisinde "bir" yazısının eklenmesini sağlayın.

  8. cd komutunu kullanmadan yenidizin klasörü içinde daha önce oluşturulmuş olan "ikinci.txt" dosyası içeriğini standart çıktı ekranına yazdırın.

  9. cd komutu kullanmadan "ikinci.txt" dosyası içine eski içeriğine dokunmadan "iki" yazısını ekleyin.

  10. cd komutu kullanmadan "ikinci.txt" dosyası içindekileri silecek şekilde "silindi" yazısının eklenmesini sağlayın ve dosya içeriğini standart çıktı ekranına yazdırın.

  11. yenidizin klasörü içindeki dosyaların listesini cd komutu kullanmadan standart çıktıya yazdırın.

  12. yenidizin klasörü içindeki dosyaları listelemek için cd komutunu da kullanarak hangi iki komut ile ekrana yazdırabilirsiniz. sıra ile yazınız.

  13. yenidizin klasörü içinde iken (cd kullanmadan) ilk oluşturduğunuz merhaba.txt dosyasının içeriğini ekrana yazdırın.

  14. yeni dizin klasörü içinde iken (cd kullanmadan) merhaba.txt dosyası içine "dort" yazısının eklenmesini sağlayın ve dosya içeriğini standart çıktı ekranına yazdırın.

  15. bulunduğunuz konumu ekrana yazdırın.

Dosya Sistemi Yapısı

Hedefler

  • Linux dosya sistemi yapısına hakim olmak

  • Terminal dosya ve dizinleri yönetebilmek.

  • Metin editörleri ile dosyaları düzenlemek

Anahtar Kelimeler

  • mkdir, rmdir, touch, cp, mv, rm

  • nano, vi

Linux Dosya Sistemi

GNU/Linux tabanlı sistemlerde diğer işletim sistemlerine göre farklı bir dosya hiyerarşisi bulunmaktadır. GNU/Linux'da her şey / ile gösterdiğimiz ve root dizini olarak da tabir ettiğimiz kök dizin'den başlar.

Kök dizin tüm hiyerarşinin en üst noktasında yer alır ve diğer tüm dizinler ondan türer.

Kökün altında bulunan bu ana dizinler çeşitli görevler ve kullanım alanlarına göre ayrılmıştır. Adları aynı olsa da dağıtımlara göre kullanım amaçları bile değişebilir. Bu bölümde dizinler, ne işe yaradıkları ve kullanım amaçları en yaygın bilinen hali ile açıklanacaktır.

/bin   : Komut dosyalarını içerir.
/boot  : Boot dosyalarını içerir.
/dev   : Donanımsal dosyaları içerir.
/etc   : Sistem ayar dosyalarını içerir.
/lib   : Kütüphane dosyalarını içerir.
/media : Bazı depolama ortamları için bağlanma noktasıdır.
/mnt   : Bazı depolama ortamları için bağlanma noktasıdır.
/opt   : Üçüncü parti kullanıcı programlarının kurulması içindir.
/sbin  : Root ile ilgili çalıştırabilir dosyaları tutar.
/srv   : Sistemin sunduğu hizmetlerle alakalıdır.
/tmp   : Geçici dosyaları tutmak içindir.
/usr   : Tüm kullanıcılarca paylaşılan verileri içeren dizindir.
/var   : Log dosyaları, e-posta ve yazıcı kuyrukları gibi değişken verileri barındırır.

Mutlak Adres & Bağıl Adres

Linux dosya sisteminde iki çeşit adres bulunmaktadır. / işareti ile başlayıp kök dizininden itibaren bütün dosya yolunu yazmaya mutlak adres belirtme denir. Bulunduğunuz dizinin alt dizinlerine dair bir adres yazılacaksa buna bağıl adres belirtme denir.

cd /var/www
pwd
cd ../../home/

Dosya ve Klasör İşlemleri

mkdir

Yeni dizin oluşturmak için kullanılır.

mkdir yeniDizinAdi

Eğer iç içe dizin oluşturulmak istenirse -p parametresi kullanılmalıdır.

mkdir -p ilkDizin/ikinciDizin/sonDizin

Eğer aynı seviyede birden fazla dizin oluşturulması gerekiyorsa dizinler boşluk ile yazılmalıdır.

mkdir birinciDizin ikinciDizin ucuncuDizin

rmdir

Dizin silmek için kullanılır. Ancak silinecek dizinin boş olması gerekmektedir.

rmdir ucuncuDizin

touch

Dosya oluşturmak için kullanılır.

touch yeniDosya
touch ilkDizin/yeniDosya

Eğer birden fazla dosya oluşturulması gerekiyorsa dizinler boşluk ile yazılmalıdır.

touch yeniDosya ikinciDosya ucuncuDosya

Not: touch ile olmayan dizinlerde dosya oluşturulamaz.

cp

Dosyaları veya dizinleri kopyalamak için kullanılır.

cp yeniDosya yeniDosyaYedek
cp config configYedek

Eğer bir dizindeki aynı uzantılı tüm dosyaları kopyalamak istersek,

cp *.sql vtYedek/

Eğer bir dizin ve altındakileri kopyalanmak istenirse -R parametresi kullanılır.

cp -R ilkDizin/ ilkDizinYedek/

mv

mv'nin iki adet kullanım şekli bulunmaktadır. Bunlardan ilki dosya/dizinlerin adlarını değiştirmede kullanımıdır.

mv ilkDizin degistirilmisDizin
mv yeniDosya eskiDosya

mv buna ek olarak dosya/dizinlerin taşınmasında da kullanılır.

mv ilkDizin/ /tmp/ilkDizin

rm

Dosya ve dizinlerin silinmesinde kullanılır. Rm ile bir dosya veya dizinin silinmesi isteniyorsa içinin boş olması gerekir ve gelen sorunun y ile onaylanması gerekir.

rm eskiDosya

rm komutu ayrıca -r ve -f parametreleri ile beraber de sıkça kullanılır.

-f : Force anlamına gelmektedir ve direkt olarak dosyayı siler.
-r : Silinecek dizin içerisinde başka dosya/dizinler varsa kullanılır.

Eğer dolu bir dizin veya dosyayı onay beklemeden, kesinlikle silinmek isteniyorsa şu şekilde kullanılmalıdır;

rm -rf doluDizin

Dosya Düzenleyiciler

nano editörü

nano çoğu dağıtım ile beraber kurulu olarak gelen en temel dosya düzenleyicisidir. Basit olması aynı zamanda yalnızca basit işler için kullanımına izin verir. Örneğin basit bir konfigürasyon dosyasını nano ile düzenleyebilir ya da notlarınızı hızlıca bir dosyaya yazabilirsiniz. Ancak çoğu zaman nano ile yazılım geliştirmeniz ya da daha karmaşık işleri halletmeniz mümkün olmayacaktır.

nano /etc/samba/smb.conf
nano yeniDosya
nano /tmp/Duyuru.txt

Not : Eğer yazmak istediğiniz dosya yoksa, nano dosyayı direkt olarak oluşturup yazmanıza olanak sağlar.

nano kısayolları

  • CTRL+S : O ana kadar yapılan değişikliklerin kaydedilmesini sağlar.

  • CTRL+W : Dosya üzerinde arama yapılmasını sağlar.

  • CTRL+K : Bulunulan satırı kesmeye yarar.

  • CTRL+U : Kesilen satır işlemini geri alır.

  • CTRL+X : Dosyada yapılan değişiklikler kaydedilmişse direkt çıkar, kaydedilmemiş ise kaydedilsin mi diye sorup çıkmaya yarar.

vi editörü

vi nanoya göre daha karmaşık bir yapıya sahipken, terminal üzerinde yazılım geliştiren çoğu geliştiricinin favori editörüdür.

Temel olarak gezinti ve komut modu olarak iki moda sahiptir. Bunlardan gezinti modunda metin ile alakalı kısayollar kullanılırken, komut modunda ise çık, kaydet ve çık gibi dosya ile alakalı işlemler yapılabilir.

Tıpkı görsel arayüze sahip masaüstü editörleri gibi yazılım geliştirmeye yardımcı çeşitli eklentilere sahiptir.

vi /projelerim/GO/main.go
vi test.py
vi notlarim

vi kısayolları

  • Gezinti modu

    • J : Sonraki satır

    • K : Önceki satır

    • H : Sol

    • L : Sağ

  • Komut modu

    • Bir kaç kez esc tuşuna tıklayarak komut moduna geçilir.

    • :w - Yaz

    • :q - Çık

    • :q! - Kaydetmeden çık

    • :wq - Kaydet ve çık

Lab

  1. vi düzenleyicide, imleci hareket ettirme veya satırları arabelleğe kopyalama gibi komutlar nasıl birden çok kez verilebilir veya birden çok satıra nasıl uygulanabilir?

  2. Tek komut ile aşağıdaki yapıda dizin nasıl oluşturulur.

3. Vi düzenleyicide hangi komut ya da komutlar açılan belgeyi kaydeder ve düzenleyiciden çıkar? 4. deneme1'den başlayarak deneme10'a kadar olan dosyaları tek bir komutla nasıl oluştururuz?

Bash ve Komut Satırı Kullanımı

Çekirdek Nedir

Çekirdek, Linux/GNU işletim sisteminlerinin ana bileşeni ve Linux olarak adlandırılan parçasıdır. Bilgisayarın donanım ile ilgili süreçlerini yönetir. Kısacası yazılım ile donanımı birbirine bağlayan köprü görevi görmektedir. Bu çekirdeğin bu kadar önemli olmasının sebebi ise diğer ticari çekirdeklerden farklı olarak özgür olmasıdır.

Linux/GNU işletim sisteminde kullandığımız mevcut çekirdek sürümüne aşağıdaki komutlardan biri ile bakabiliriz.

Kabuk Nedir

Kabuk (shell), bir işletim sistemi için bilgisayarı kullanabilmek adına; kullanıcı ile çekirdek arasında haberleşmeyi sağlayan ortama verilen addır. Kullanıcı tarafından kabuk üzerinden gönderilen komutlar, sistem çağrıları vasıtasıyla çekirdeğe ulaşarak işlenmektedir. Tabi ki bir çok durumda kabuk üzerinde de işlemler yapılabilmektedir.

GNU/Linux sistemlerde bir çok kabuk bulunmaktadır. Genellikle BASH, SH ve ZSH kabukları ile karşılaşmış olma ihtimaliniz oldukça yüksektir. Mecut GNU/Linux dağıtımında yüklü gelen kabuklar, /etc/shells dosyasında yazmaktadır.

Sisteme giriş yapmış her kullanıcı için bir kabuk programı çalışır. Çalışan kabuk kullanıcın bir komut girmesini bekler, kumutu yorumlayarak gerekli programları çalıştırır ve programın sonlanmasını bekler.

Bunun yanında herhangi bir betik programlama dilinin kendine özgü kabukları da bulunmaktadır. Bunlara basit örnekler vermemiz gerekirse Python ve PHP diyebiliriz.

Çevre Değişkenleri

Bu belge içerisinde genellikle BASH kabuğundan bahsedeceğiz. Linux kabuk üzerinde değişkenler tanımlayabilmemize olanak tanır. Açılan her kabuğun değişken listesine kendisine özgüdür. Bir kabuğun sahip olduğu öntanımlı değişkenleri görebilmek için env ya da printenv komutu çalıştırılabilir.

Buradaki değişkenlerden en yaygın kullanılanları $HOME, $USER ve $PATH değişkenleridir. Bir değişkenin değerini ekrana yazdırmak için ecko komutu kullanılabilir

Linux üzerinde her şey bir dosyadır. Kabuk üzerinde çalıştırdığımız dosyalar da birer dosyadır. Bunların sistem tarafından tanınmaları için belirli dizinler altında saklanmaktadır. $PATH değişkeninde bulunan dizinler sistemin çalıştırılabilir uygulamalarının bulunduğu dizinlerdir. Eğer bu değişken olmasa idi tüm komutları tam adres vererek girmek gerekecekti.

Kullanıcının yaptığı programların kabuk tarafından tanınması için $PATH değişkeninde bulunan dizinlerden birisine taşınması yeterlidir.

Çevre Değişkenlerini Yönetme

unset: Bir değişkeni çevre değişkenlerinden çıkarır.

export: O anki kullanıcı kabuğunun çevre değişkenlerine ekler.

Her bir kullanıcının ev dizini altında bulunan .bashrc gizli dosyası, kullanıcı oturum açtığında bir dizi yapılandırma yapar. Bunlar renklendirme ayarları ya da yukarıda belirttiğimiz değişken tanımlama gibi ayarlar olabilir.

Terminal(Uçbirim) Nedir

Terminal(uçbirim) kullanıcının kabuk ile etkileşim kurmasını sağlayan programdır. Bu uçbirim için ise çeşitli masaüstü ortamlarında bulunan emülatörler bulunmaktadır. Bu terminal emülatörleri ile birlikte son kullanıcı komutları klavye yardımı ile kullanabilmektedir. Terminal emülatörlerine örnek olarak gnome terminal, terminator, guake, yakuake verilebilir.

Komut Nedir

Bir kabuk üzerinde boşluk veya girdi(enter) karakterine kadar olan yazılan kısma komut denmektedir.

GNU/Linux sistemlerde komutlar, aslında sistem içerisinde bulunan, kimi zaman bash kimi zaman python kimi zamansa başka bir dille yazılmış betiklerdir. Komut olarak terminale gönderilen kelimeler çoğu zaman sadece o betikleri uygun parametreler ile tetikleyen minik kod parçaları olmaktadır.

Bu betikler her dağıtımın altlığına göre, dosya sistemine göre değişmektedir. Ancak çoğunda standart bir formata uygun olarak geliştiriciler tarafından ayarlanmaktadır. Örneğin yeni bir komut geliştirdiyseniz ve bunu .deb paketi ile dağıtıyorsanız, komut dosyalarınızı sistemde uygun yerlere koymanız gerekmektedir.

Aşağıdaki site sayesinde komutları öğrenebilirsiniz:

Standart çıktı (standart output), özetle bir kabuk üzerindeki ekranda gördüğünüz çıktı olarak düşünebilirsiniz. Genellikle bir terminal üzerindeki ekran sizin için standart çıktı olarak karşınıza çıkacaktır. Standart çıktı'nın bir alternatifi disk üzerindeki herhangi bir dosyanın içeriği olarak düşünülebilir.

Genel Komut Kullanım Formatı

GNU/Linux sistemlerde tıpkı komutların belli bir dosya yolu olduğu gibi, komut geliştiricileri çoğunlukla komutları aynı formata göre tasarlarlar. Örneğin tüm komutlarda, kısa parametreler tek - ile yazılırken, uzun parametreler -- ile yazılır.

Hemen hemen tüm komutlarda bulunan yardım, yani help parametresini ele alalım.

-h ile parametresi yerine --h denersek,

hata çıktısını alırız. Onun yerine --help denersek,

çıktısını alırız. Aynı şekilde -help için de hata mesajı görmemiz muhtemeldir.

Bunun yanında GNU/Linux komutlarında komut içerisindeki parametreler ve parametrelerin değerleri boşluk ile ayrılır. Yani her boşluktan sonraki kelimeyi komut yeni bir değer olarak algılar. Örneğin, Komut Dokümantasyonu adında bir dizini,

şeklinde oluşturmayı denersek, ayrı ayrı Komut ve Dokümantasyonu adında iki dizin oluşur. Bunun yerine,

şeklinde boşluksuz isim vermemiz gerekmektedir.

Terminal Pratikleri

TAB Kullanımı

Terminalde komut yazarken çoğunlukla kullanılan bazı pratikler bulunmaktadır. Örneğin afyonkarahisarlılaştıramadıklarımızdanmısınız isminde bir dizine erişmek istediğimizi düşünelim. Elimizle teker teker bu dizinin adını yazmak yerine,

şeklinde kelimenin bir kısmını yazıp tab tuşu ile tamamlamak kullanım hızı ve pratikliği arttıracaktır.

Not: Aynı dizinde afyon ile başlayan başka bir dizin varsa ortak olan kısma kadar tab eşitler, sonrası için kullanıcının hangi dizine gidecekse o dizinin bir sonraki harfini yazıp tekrar tab demesi gerekmektedir.

Üst Yön Oku Kullanımı

Terminalde yazılan her komut kaydedilmektedir. Kaydedilen bu komutlara sonradan erişmek veya yazılan tüm komutlara erişmek mümkündür. Eğer bir komut kabuğa yanlış gönderildiyse, üst yön oku ile komut tekrar terminal ekranına getirilip düzenlenebilir.

Bunun yanında şu ana kadar yazdığını komutların listesini de,

komutu ile görüntüleyebilirsiniz.

Komutu Kabuğa Gönderme

Terminalde komut yazdıktan sonra düzenleme yapıldığında, illa satırın en sonuna gidip ENTER demek gerekmez. Yani bir komut satırının ortasındayken de ENTER tuşu ile komut kabuğa gönderilebilir.

Lab

  1. bash ve sh kabuklarının çevre değişkenlerini kıyaslama

    1. Bir uçbirim açın ve mevcut kabuğu ekrana yazdırın

    2. bash kabuğuna geçerek çevre değişkenlerini ekrana yazdırın

    3. sh kabuğuna geçerek çevre değişkenlerini ekrana yazdırın

  2. Python kabuğu üzerinde basit fonksiyon geliştirme

    1. Uçbirim üzerinde python kabuğu açılmalı, python kabuğu üzerinde fibo (fibınacci dizisi için) kütüphanesini içeri aktararak, dizinin ilk 10 sayısını döndüren bir fonksiyon yazın.

  3. Kullanıcı bazlı değil, sistem genelinde kalıcı bir çevre değişkeni tanımlanmak istense, hangi sistem dosyası kullanılabilir.

  4. Kullanıcı ana dizininde bulunan dosyalardan hangisi Bash geçmişini depolamak için kullanılır?

Betik Programlamaya Giriş

Kabuk programlama olarak da bilinen betik programlama, sistem üzerinde sürekli olarak gerçekleştirilecek olan işlemlerin tek bir dosyada toplanarak otomatikleştirilmesini amaçlar.

Örneğin kurulumlar birden fazla adımdan oluşan uzun işlemler olarak bilinir. Eğer bir kurulumu birden fazla kez yapacağımızı biliyorsak ya da böyle bir ihtimal bulunuyorsa, kurulum adımlarını sürekli tekrarlamak yerine tamamını bir kabuk programı haline getirip her seferinde uğraşmak yerine sadece bir dosyayı çalıştırarak gerçekleştirebiliriz.

Bunun dışında, bir veya birden fazla sistem üzerinde her gün, her hafta veya her ay düzenli yapılacak işlemler için, sistemde sürekli olarak seyreden hataların çözümleri için de kabuk programlamadan faydalanılabilir.

Adım 0: Notlar

Bu bölümde bash kabuğu üzerinde programlama adımları anlatılmaktadır. Bu sebeple başlamadan önce bash kabuğuna sahip bir GNU/Linux dağıtımı kullanıldığından emin olunması gerekmektedir.

Adım 1: Betik dosyası oluşturma izinlerini düzenleme

GNU/Linux sistemlerde bir programın çalışabilmesi için her zaman bulunulan kullanıcıya ait çalıştırma yetkisi gerekmektedir. Öncelikle betiğe ait bir dizin oluşturulup ilgili izinler aşağıdaki gibi verilebilir.

Adım 2: Ekrana merhaba dünya yazan betik geliştirme

Betik geliştirmeye ait dizini oluşturup izinlerini verdikten sonra ekrana 'Merhaba Dünya' yazmak için echo komutu betik içerisinde kullanılabilir.

Kodumuzu yazdıktan sonra çalıştıralım.

Adım 3: Basit sistem görevlerini gerçekleştiren betik geliştirme

Betik içerisinde terminal komutlarının sırayla çalıştığını kavradıktan sonra ekrana sistem saatini basıp her çalıştığında /tmp/log altına da kaydeden bir betik yazalım.

Bu betik her çalıştığında ekrana bastığı donanım saatini aynı zamanda /tmp/log adındaki dosyaya kaydetmektedir.

Adım 4: Betik içerisinde değişken tanımlama ve aritmetik işlemlerin yapılması

Betik içerisinde değişken tanımlamak için sembol kullanılmazken, değişken çağırılırken $ sembolü kullanılır. Ayrıca aritmetik işlemleri yapmak için $(( )) yapısının kullanılması gerekmektedir.

Adım 5: Betik içerisinde if yapısının kullanımı

Betik içerisinde if yapısının kullanılması için öncelikle if yapısının karşılaştırma operatörlerinin bilinmesi gerekmektedir.

  • -eq : Birinci değişken ikinciye eşittir.

  • -ge : Birinci değişken ikinciden büyüktür ya da eşittir.

  • -gt : Birinci değişken ikinciden büyüktür.

  • -le : Birinci değişken ikinciden küçüktür ya da eşittir.

  • -lt : Birinci değişken ikinciden küçüktür.

  • Not: Bu operatörler ve daha fazlası man test ile de görüntülenebilir.

Adım 5: Betik içerisinde döngülerin kullanımı

Tıpkı diğer programlama dillerinde de olduğu gibi bash programlamada da for ve while döngüleri kullanılabilir.

Adım 6: Parametre alan betik geliştirme

Yazılan bir betiğe parametre vermek kabuk programlamada sıkça karşılaşılan bir durumdur. Parametreler otomatik olarak verilme sırasına göre 1 2 3... değişkenlerine atanır. Bu değişkenlere proogram içerisinde erişmek için başına $ değişkeni konularak erişilebilir.

kullanici@pc:~$ uname -r
5.11.0-27-generic

kullanici@pc:~$ hostnamectl | grep Kernel
            Kernel: Linux 5.11.0-27-generic

kullanici@pc:~$ cat /proc/version
Linux version 5.11.0-27-generic (buildd@lcy01-amd64-019) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #29~20.04.1-Ubuntu SMP Wed May 11 15:58:17 UTC 2021
kullanici@pc:~$ cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
kullanici@pc:~$ python
Python 2.7.18 (default, Mar  8 2021, 13:02:45) 
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Merhaba")
Merhaba
>>> 
kullanici@pc:~$ printenv
kullanici@pc:~$ echo $HOME
/home/kullanici
kullanici@pc:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
kullanici@pc:~$ name="kullanici"
kullanici@pc:~$ env | grep name
kullanici@pc:~$
kullanici@pc:~$ export name="kullanici"
kullanici@pc:~$ env | grep name
name=kullanici
kullanici@pc:~$ unset name 
kullanici@pc:~$ env | grep name
kullanici@pc:~$
kullanici@pardus:~$ apt -h
apt 1.8.2.2 (amd64)
Usage: apt [options] command

apt is a commandline package manager and provides commands for
searching and managing as well as querying information about packages.
It provides the same functionality as the specialized APT tools,
like apt-get and apt-cache, but enables options more suitable for
interactive use by default.

Most used commands:
  list - list packages based on package names
  search - search in package descriptions
  show - show package details
.
.
.
kullanici@pardus:~$ apt --h
E: Command line option --h is not understood in combination with the other options
kullanici@pardus:~$ apt --help
apt 1.8.2.2 (amd64)
Usage: apt [options] command

apt is a commandline package manager and provides commands for
searching and managing as well as querying information about packages.
It provides the same functionality as the specialized APT tools,
like apt-get and apt-cache, but enables options more suitable for
interactive use by default.

Most used commands:
  list - list packages based on package names
  search - search in package descriptions
  show - show package details
.
.
.
apt -help
E: Command line option 'e' [from -help] is not understood in combination with the other options.
mkdir Komut Dokümantasyonu
mkdir KomutDokümantasyonu
cd afyon[TAB]

|
v

cd afyonkarahisarlılaştıramadıklarımızdanmısınız
history
mkdir betikGelistirme
cd betikGelistirme
touch betik.sh
chmod +x betik.sh
#!/bin/bash

echo "Merhaba Dünya"
./betik.sh
#!/bin/bash

hwclock >> /tmp/log
sudo ./betik.sh
#!/bin/bash

a=3
b=$(( 12 + 5 ))

echo $(( 4 + 4 ))
echo $(( 3 * 4 ))
echo $(( 8 / 2 ))

echo $(( $b - $a ))
./betik.sh
#!/bin/bash

if [ 1 -gt 100 ]
then
        echo "İlk sayı ikinciden büyük."
else
        echo "İlk sayı ikinciden küçük."
fi
./betik.sh
#!/bin/bash

echo "---- For Döngüsü Başlıyor ----"
for (( i=1; i<=3; i++ ))
do
   echo "Bu $i . for dönüşü."
done

echo "---- While Döngüsü Başlıyor ----"
w=1
while [ $w -le 3 ]
do
   echo "Bu $w . while dönüşü."
   w=$(( $w + 1 ))
done
./betik.sh
#!/bin/bash

toplam=$(( $1 + $2 ))
echo "Toplam= $toplam"
./betik.sh 1 2

Süreç ve Servis Yönetimi

Hedefler

  • süreçlerin listelenmesi ve yönetilmesi

Anahtar Kelimeler

  • Süreç, PID, PPID, UID

  • ps, kill, pkill, killall

Süreç Nedir

İşletim sistemi üzerinde ön planda ya da arka planda çalışan program parçalarından her birine process yani süreç denir. Süreçlerin yönetilebilmesi için bazı kavramların bilinmesi gerekmektedir.

  • Her bir sürecin kendisine ait bir süreç kimliği vardır (PID)

  • Her sürecin bir ata süreci vardır (PPID)

  • USER Sürecin sahibi olan kullanıcı.

  • TTY Kullanıcının o an yapmış oldığı kabuğu ifade eder.

  • COMMAND Süreci başlatan komutu ifade eder.

  • TIME Sürecin CPU'da harcadığı süre.

  • START Sürecin başladığı saat

  • STAT Sürecin o anki durumunu ifade eder.

    • -S : Sürecin beklemede olduğunu gösterir.

    • -R : Sürecin o an çalıştığını,CPU'da işlem gördüğünü belirtir.

    • -D : Süreç kesilemez bir şekilde uykuda.

    • -T : Sürecin debugger'da incelendiğini ya da durdurulduğunu gösterir.

    • -Z : Süreç zombi durumunda.

  • CPU kullanımının yüzde kaçının ilgili sürece ait olduğu %CPU sütununda gösterilir.

  • Sürecin belleğin yüzde kaçını kullandığı bilgisi %MEM sütununda gösterilir.

Süreçlerin İzlenmesi

ps

İşletim sistemi üzerinde o an çalışan işlemleri izleyebileceğimiz bir komuttur.

  PID TTY          TIME CMD
  487 pts/0    00:00:00 sudo
  488 pts/0    00:00:00 su
  489 pts/0    00:00:00 bash
 6543 pts/0    00:00:00 ps

Parametreler

En çok kullanılan parametreler aşağıdakilerdir:

-a: Belirli bir terminal kontrölündeki o an çalışan süreçleri listeler -u: Süreç sahiplerini de listeler -x: Bir kabul kontrolünde olmayan süreçleri listeler. (TTY sütununda ? ile ifade edilirler.)

Diğer parametreler:

  • -A : Sistemdeki bütün süreçleri listeler.

  • -r : Sadece çalışmakta olan süreçleri listeler.

  • -f : Süreçler arasındaki parent-child ilişkilerini gösterir.

  • -l : Uzun formatlı bir liste üretir.

  • -w : Bir sürecin komut satırı parametrelerini gösterir.

  • -C : Bir süreç ile birlikte o sürecin alt süreçlerini listeler.

  • T : Komutun girildiği terminalde başlatılan süreçleri listeler.

  • p : PID değeri girilen sürecin bilgilerini gösterir.

ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.9  21964 10076 ?        Ss   12:21   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    12:21   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   12:21   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   12:21   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   12:21   0:00 [kworker/0:0H-kblockd]
root         8  0.0  0.0      0     0 ?        I<   12:21   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    12:21   0:00 [ksoftirqd/0]
root        10  0.0  0.0      0     0 ?        I    12:21   0:04 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    12:21   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    12:21   0:00 [migration/0]
root        14  0.0  0.0      0     0 ?        S    12:21   0:00 [cpuhp/0]
root        15  0.0  0.0      0     0 ?        S    12:21   0:00 [kdevtmpfs]
root        16  0.0  0.0      0     0 ?        I<   12:21   0:00 [netns]
root        17  0.0  0.0      0     0 ?        S    12:21   0:00 [kauditd]
root        18  0.0  0.0      0     0 ?        S    12:21   0:00 [khungtaskd]
root        19  0.0  0.0      0     0 ?        S    12:21   0:00 [oom_reaper]
root        20  0.0  0.0      0     0 ?        I<   12:21   0:00 [writeback]
root        21  0.0  0.0      0     0 ?        S    12:21   0:00 [kcompactd0]
root        22  0.0  0.0      0     0 ?        SN   12:21   0:00 [ksmd]
root        23  0.0  0.0      0     0 ?        SN   12:21   0:00 [khugepaged]
root        24  0.0  0.0      0     0 ?        I<   12:21   0:00 [crypto]
root        25  0.0  0.0      0     0 ?        I<   12:21   0:00 [kintegrityd]

top

Bir önceki ps komutu yalnızca o anki süreçleri listeleyen bir komuttur. Süreçler durumlarını dinamik olarak görüntülenmek isteniyorsa top komutu kullanılır.

top aynı zamanda sistem üzerindeki süreçlerin sayısını ve bu süreçlerin kaçınının çalıştığını, uyuduğunu, durduğunu ya da zombi sürece dönüştüğünü gösterir.

top - 15:33:12 up  4:48,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  66 total,   1 running,  65 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :    987.4 total,    820.8 free,     57.9 used,    108.7 buff/cache
MiB Swap:    975.0 total,    975.0 free,      0.0 used.    802.3 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    1 root      20   0  103664   9916   7916 S   0.0   1.0   0:00.75 systemd
    2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
    3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
    6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
    8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
    9 root      20   0       0      0      0 S   0.0   0.0   0:00.06 ksoftirqd/0
   10 root      20   0       0      0      0 I   0.0   0.0   0:02.04 rcu_sched
   11 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_bh
   12 root      rt   0       0      0      0 S   0.0   0.0   0:00.10 migration/0
   13 root      20   0       0      0      0 I   0.0   0.0   0:07.80 kworker/0:1-events_power_efficient
   14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
   15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs
   16 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
   17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd
   18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 khungtaskd
   19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper
   20 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback
   21 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kcompactd0
   22 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd
   23 root      39  19       0      0      0 S   0.0   0.0   0:00.07 khugepaged
   24 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 crypto

pstree

ps'den farklı olarak pstree, çalışan işlemleri bir ağaç yapısında gösterir. Bu sayede görsellik artar ve bir sürecin ebeveyn süreçlerini bulmak kolaylaşır.

pstree bazı sistemlerde kurulu gelmediğinden ötürü öncelikle sistem üzerine psmisc paketini kurmak gerekmektedir.

apt install psmisc

Paket kurulduktan sonra pstree komutu ile süreç ağacı görüntülenebilir.

liman@limanmys:~$ pstree
systemd─┬─agetty
        ├─cron
        ├─dbus-daemon
        ├─dhclient
        ├─liman_render───4*[{liman_render}]
        ├─liman_system───4*[{liman_system}]
        ├─nginx───nginx
        ├─php
        ├─php-fpm7.3───3*[php-fpm7.3]
        ├─postgres───16*[postgres]
        ├─python3
        ├─redis-server───3*[{redis-server}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─sshd─┬─2*[sshd───sshd───bash───sleep]
        │      ├─sshd───sshd───bash───pstree
        │      └─sshd───sshd───sftp-server
        ├─supervisord───9*[php]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        └─websockify

Süreçlerin Yönetilmesi

Tıpkı diğer işletim sistemlerinde olduğu gibi GNU/Linux sistemler üzerinde de kimi zaman bazı komut ya da programlar çalışmasını tamamlayamamaktadır. Bu da sistemin ya da ilgili komut/programın yanıt vermemesine sebep olmaktadır.

Yanıt vermeyen programlarla baş etmenin bazı zamanlarda tek çözümü programa ait süreç veya süreçlerin durdurulmasıdır.

Bu noktada durdurmak istediğimiz sürecin tekil süreç veya süreç ailesi olmasına göre iki farklı yöntem izleyebiliriz

kill

Sistem üzerinde çalışan herhangi bir sürecin pid numarasını parametre olarak alır ve parametre olarak aldığı bu değerin ait olduğu süreci öldürür.

 kill 10384

Eğer birden fazla process pid'si ile birlikte öldürülmek isteniyorsa -9 parametresi kullanılmalıdır.

kill -9 10385 10386

pkill

Eğer sistem üzerinde öldürülmek istenen süreç, pid'si yerine adı ile öldürülmek isteniyorsa pkill komutu kullanılır.

pkill -9 -u vim

killall

Eğer öldürülmek istenen tekil bir süreç yerine süreç ailesi ise killall komutu kullanılmalıdır.

killall -9 apache

Sistem Kayıtları

GNU/Linux sistemlerde üzerinde, üçüncü parti uygulamalar loglarını farklı dizinlerde tutsalar da hali hazırda sistem üzerinde çalışan programların kayıtları /var/log altındaki çeşitli dosyalarda tutulur. Bu dosyalardan bazı önemli olanları inceleyelim.

/var/log/messages

Genel sistem kayıtlarını tutar. Sistem üzerinde kritik bir durum yaşandığında ilk bakılması gereken kayıt dosyasıdır.

tail -f /var/log/messages

/var/log/auth.log

Adını İngilizce authentication kelimesinden alır. Sistem üzerinde hatalı giriş yapıldığında ya da root kullanıcısına hatalı giriş yapılmaya çalışılırsa olaylar bu dosyaya kayıt edilir.

tail -f /var/log/auth.log

/var/log/dmesg

GNU/Linux sistemlerde, sistem açılışında gerçekleşen olaylar bu dosyaya yazılır. Bunun dışında donanımsal hatalar ya da çekirdekte yaşanan problemler de bu dosyaya kaydedilir.

tail -f /var/log/dmesg

/var/log/cron

Zamanlanmış görevlerin kayıtları bu dosyaya yazılır. Ayrıca zamanlanmış görevleri yöneten cron servisinin kayıtları da bu dosyada tutulur.

tail -f /var/log/cron

Temel Yetki Yönetimi

Yetkiler

Tüm Linux işletim sisteminde, neredeyse hiçbir kısıtlaması olmadan tüm işlemleri gerçekleştirme yetkisine sahip olan root kullanıcısı bulunmaktadır. Bazı dağıtımlarda kurulum sırasında bu kullanıcı için parola oluşturulurken bazı dağıtımlarda oluşturulmaz.

id root

root dışında oluşturulan normal kullanıcıların yalnızca kendi ev dizinlerinde ve /tmp dizininde değişiklik yapma yetkisi bulunmaktadır. Bunun dışındaki sistem dosyalarında işlem yapılmak isteniyorsa yetki yükseltme işlemi gerekmektedir.

sudo

Son kullanıcı sudo komutu ile kendisinden sonra gelen komutların root kullanıcısı tarafından yapılmasını sağlar. Tabiki bu işlem eğer yetkisi varsa yapılır.

sudo <komut>

sudo Grubu

root kullanıcısı dışında sistemde neredeyse hiçbir kısıtlaması olmadan tüm işlemleri gerçekleştirme yetkisine sahip gruba sudo grubu denir. Son kullanıcı bu gruba dahil ise sudo komutu ile yetkili işlemler yapabilir.

groups kullanici
kullanici : kullanici adm cdrom sudo dip plugdev lpadmin lxd sambashare wireshar

sudoers

Peki root kullanıcısının ya da sudo grubunun hangi işlemleri yapabileceğini sistem nasıl anlar. Kullanıcı ve grup yetkileri /etc/sudoers dosyasında tanımlanır.

cat /etc/sudoers

root	ALL=(ALL:ALL) ALL
%sudo	ALL=(ALL:ALL) ALL
  • root ALL=(ALL:ALL) ALL İlk sütun hangi kullanıcı ya da grubu etkileyeceğini ifade eder

  • root ALL=(ALL:ALL) ALL İkinci sutün hangi makine ve terminaller üzerinde uygulanacağını ifade eder.

  • root ALL=(ALL:ALL) ALL Üçüncü sütun, komutların tüm kullanıcılar olarak çalıştırabileceğini gösterir.

  • root ALL=(ALL:ALL) ALL Dördüncü sütun, komutların tüm gruplar olarak çalıştırabileceğini gösterir.

  • root ALL=(ALL:ALL) ALL Son olarak son sütun hangi komutlara yetki verildiğini ifade eder

Dosyaların aynı anda bir kişi tarafından düzenlendiğinden emin olmak için sudoers dosyası visodu komutu ile düzenlenir

visudo

Dozya ve Dizin İzinleri

GNU/Linux sistemler, hızlı ve pratik olmasının yanında güvenlik açısından kale gibi olması sebebi ile de sunucularda sıklıkla kullanılırlar. Bunun sebebi de teker teker her dosyanın ve dizinin sahip olduğu yetki sistemidir.

Her dosya veya dizin 3 ayrı alan için yetkilendirmeye sahip olabilir. Bu yetkilendirmeler,

u: Mevcut kullanıcı (user)
g: Grup (group)
o: Diğerleri (other)
a: Herkes (all)

Aynı zamanda yukarıda belirtilenlerden her biri için ayrı ayrı okuma, yazma ve çalıştırma yetkisi bulunmaktadır.

r: Okuma izni
w: Yazma izni
x: Çalıştırma izni

Bu iki bilgiyi birbiri ile birleştirdiğimizde, sıklıkla ls -la komut çıktısında gördüğümüz her dosyanın başında yer alan izinleri anlamlandırabiliriz.

total 24
drwxr-xr-x 3 server server 4096 Aug 26 15:52 .
drwxr-xr-x 3 root   root   4096 Jun 26 18:39 ..
-rw-r--r-- 1 server server  220 Jun 26 18:39 .bash_logout
-rw-r--r-- 1 server server 3526 Jun 26 18:39 .bashrc
-rw-r--r-- 1 server server  807 Jun 26 18:39 .profile
-rw-r--r-- 1 root   root      0 Aug 26 15:52 testDosya
drwxr-xr-x 2 root   root   4096 Aug 26 15:52 yeniDizin

Sol tarafta yer alan 10 karakterden, ilki dosyanın türünü belirtir. Örneğin,

- : Dosya
d : Dizin
l : Link

anlamına gelmektedir.

Sonraki dokuz hane ise izinleri temsil eder. İlk 3 hane dosya sahibinin izinleri, sonraki 3 hane dosya grubunun izinleri, en son hane ise sistemdeki diğer kullanıcının izinlerini göstermektedir.

chmod ile Yetki Yönetimi

Dosyalar ve dizinlerin okuma yazma, ve çalıştırma için uygun gruplara uygun izinlere ihtiyacı olduğundan bahsettik. Şimdi bu izinlerin nasıl verildiğinden bahsedelim.

Eğer bir betiğe dosya sahibi için çalıştırma yetkisi vermek istiyorsak,

chmod u+x pythonScript.py
chmod +x bashScript.sh

komutlarını kullanabiliriz. Ya da dosyanın herkes için tüm izinlerini silip sadece okuma izni vermek istiyorsak,

chmod a=r /tmp/duyuruDosyasi.txt

komutunu kullanmamız gerekir. Dosyadan yetki silmek için ise,

chmod g-wx /tmp/izinler.txt

komutu kullanılmalıdır.

İkili Dosya İzinleri

Dosya izinleri yukarıdaki gibi kullanıcı, grup ve diğer kullanıcılar için ayrı ayrı verilebilse de bazı durumlarda tercih edilmemektedir. Bunun yerine Eğer bir dosyayı herkes tarafından okunabilir yapmak istiyorsak, Binary Dosya İzinleri diye de bilinen İkili Dosya İzinleri kullanılmaktadır.

Bu sistemde izinler 3erli olarak ayrılır. Ayrılan her bir grup için sağdan sola 2 üzeri 0, 2 üzeri 1 ve 2 üzeri 2 olarak numaralandılır. Eğer izinlerin hepsi açıksa, yani rwx durumunda ise tüm bu rakamlar toplanır ve o gruba 7 değeri atanır. Eğer bu izinlerden biri bile yoksa, onun yerine 0 yazılarak toplanır.

Örneğin izinleri,

rwxr---wx

olan bir dosya için,

rwx r-x -wx
 7   5   3

753 iznine sahip denilebilir. chmod ile binary izinleri de,

chmod 755 /tmp/izinler.txt

şeklinde kullanılabilir.

Açılış Sistemi

BIOS

Bilgisayarın beyni konumundaki bu bölüm donanımın kullanımını sağlayan küçük bir yazılımdır. Bilgisayarı oluşturan parçalarla donanımların kullanımını sağlayan driverler arasında iletişimi sağlar.

Bilgisayarın açılışı sırasında donanım kontrollerini yaparak hayati bir rol oynar.

MBR

Herhangi bir sabit diskin ilk sektörüdür. Disk içerisinde MBR alanı 512 bayt büyüklüğündedir.

Disk içerisindeki bölümlerin konumlarını belirler. İşletim sistemlerinin nereye ve nasıl kurulması gerektiğini belirler. İşletim sistemlerinin bilgisayarda açılabilmesi için önyükleme görevini yerine getirir.

Ayrıca MBR disklerde en fazla 4 birincil bölüm oluşturulabilmektedir. 2T üzerindeki bir diski bölümlendirememektedir. Bunun yerine GPT kullanılır.

Grub

GRUB, önyükleme(boot) sürecinin yüklenmesi ve yönetilmesi için gerekli olan eksiksiz bir programdır. Linux dağıtımlarında kullanılan en yaygın önyükleyicidir.

Önce işletim sisteminin çekirdeğini yükler. Çekirdek ise hemen ardından işletim sisteminin geri kalanını başlatır: kabuk, görüntü yöneticisi, masaüstü ortamı vb.

Kernel

Çekirdek , gerçek dosya sistemi bağlanana kadar İlk RAM Diski (initrd) kullanarak geçici bir kök dosya sistemi kurar. Çekirdek çalışmaya başladığı anda bir PID değeri alır ve bu 1 dir.

ps aux | grep "1"
root           1  0.0  0.0 171428 13564 ?        Ss   May05   13:04 /sbin/init splash

systemd

Eskiden çekirdeğin çalıştırdığı ilk program /sbin/init iken artık yerini systemd'ye bırakmıştır. init yapısında çalışma seviyeleri vardır ve servisler bu çalışma seviyelerine göre açılırlardı. Her bir çalışma seviyesi için, init tarafından başlatılan süreçler /etc/inittab dosyası içinde tanımlıdır.

Runlevel

Target Unit

Açıklama

0

runlevel0.target, poweroff.target

Poweroff target

Linux işletim sistemini çok kullanıcılı modda çalışır. İkinci seviyeden fark olarak NFS desteği bulunmaktadır.

1

runlevel1.target, rescue.target

Rescue yani kurtarma target’ı

Linux işletim sistemi tek kullanıcılı modda çalışır. Bu mod çoğunlukla bakım ve kurtarma için kullanılır. Varsayılan olarak ağ ayarları geçerli değildir.

2

runlevel2.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel 2,runlevel 3 ve 4 aynı)

Linux işletim sistemi çok kullanıcılı modda çalışır fakat NFS sunucuları çalıştırılmaz ve NFS dosya sistemleri bağlanmaz.

3

runlevel3.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel 2,runlevel 3 ve 4 aynı)

Linux işletim sistemini çok kullanıcılı modda çalışır. İkinci seviyeden fark olarak NFS desteği bulunmaktadır.

4

runlevel4.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel 2,runlevel 3 ve 4 aynı)

Hiç bir şey tanımlanmamıştır.

5

runlevel5.target, graphical.target

Grafik ekranın başlatıldığı target

Üçüncü seviyenin yanı sıra, X Window sisteminin çalışmasını sağlar.

6

runlevel6.target, reboot.target

Reboot target

systemd-analyze

Temel Disk Yönetimi

GNU/Linux sistemlerde disk yönetiminde en önemli komutlardan biri fdisk komutudur. fdisk ile temel olarak diskleri listeleyebilme, disk bölümlerini görüntüleyebilme, disk silme vs. gibi işlemleri yapmak mümkündür.

Makinedeki Diskleri Görüntülemek

fdisk komutunun l parametresi ile makinedeki tüm diskler listelenebilir.

zeki@limanmys:~$ sudo fdisk -l
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcee2368e

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 14776319 14774272    7G 83 Linux
/dev/sda2       14778366 16775167  1996802  975M  5 Extended
/dev/sda5       14778368 16775167  1996800  975M 82 Linux swap / Solaris

Belirli Bir Diski Görüntülemek

Listeleme komutundan dönen disklerden herhangi birini görüntülemek için,

zeki@limanmys:~$ sudo fdisk -l /dev/sda1
Disk /dev/sda1: 7 GiB, 7564427264 bytes, 14774272 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

komutu kullanılabilir.

fdisk ile Disk Yönetimi

Değişiklik yapılacak diske karar verdikten sonra, ilgili diski fdisk komutuna parametre olarak vermemiz yeterlidir.

zeki@limanmys:~$ sudo fdisk /dev/sda1
Welcome to fdisk (util-linux 2.33.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
The old ext4 signature will be removed by a write command.
Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xb063fba4.
Command (m for help):

Yukarıdaki uyarıda belirtildiği gibi fdisk ile yapılacak tüm işlemler siz yazma komutunu çalıştırana kadar bellekte tutulmaktadır. Bu sebeple yazma işlemi yapılana kadar olan değişiklikleri geri alınabileceği bilinmeli, yazma işlemini dikkatli bir şekilde yapılması tavsiye edilmektedir.

fdisk İşlemleri

d : Bir disk bölümünü silmek için kullanılır. 
p : Ekrana bölümleme tablosunu yazdırır.
n : Yeni bir bölüm oluşturmak için kullanılır.
w : Yazma komutudur, diskle alakalı tüm işlemler tamamlandıktan sonra kullanılır.

Gparted

Temel Ağ Yönetimi

Temel Ağ Bileşenleri ve IP Komutu

IP Adresi: Ağa bağlanan her bilgisayarın bir IP adresine sahip olması gerekir. DHCP sunucusu ağa bağlanan her bilgisayarın farklı ve özgün bir IP adresine sahip olmasını sağlar. Gateway Adresi: Eğer bilgisayarların bağlı bulunduğu ağın internet bağlantısı var ise ağda bulunup internete bağlanacak olan bilgisayarların bir gateway(geçit) IP adresine sahip olması gerekir. DNS Adresi : Bir ağ için en az bir, tercihen iki adet DNS IP adresinin önceden belirlenmiş olması gerekir. DNS IP adresi , ağdaki bir bilgisayar için name resolving işlemi yapacak olan sunucunun IP adresidir. Netmask Adresi: İki cihaz veya bilgisayarın aynı ağda olup olmadıklarını kullandıkları ağ alt maskeleri belirler. Ağ alt maskesi IP adresinin ilk 24 bitine karşı gelen kısımdır. Ağa bağlı her ethernet kartı için bir ağ alt maskesi bulunmalıdır.

Terminal üzerinde ip bilgilerimizi görmek için aşağıdaki komutu çalıştırırız

kullanici@sunucu$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether e0:d5:5e:80:13:96 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.5.5/24 brd 192.168.5.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::1397:4d7b:45c:6721/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff

Bilgisayardaki ağların gateway adreslerini bulmak için aşağıdaki komut çalıştırılır.

kullanici@sunucu$ ip route
default via 192.168.5.1 dev eno1 proto static metric 100 
169.254.0.0/16 dev eno1 scope link metric 1000 
192.168.5.0/24 dev eno1 proto kernel scope link src 192.168.5.5 metric 100 

DNS Sunucusu

DHCP Sunucusu

Ağ ile İlgili Temel Dosyalar

Network ayarları aşağıdaki dosya ve dizinlerde bulunur.

  • /etc/hosts

  • /etc/resolv.conf

  • /etc/network/interfaces

Ağ Türleri

Bridge (Köprü Bağdaştırıcısı)

NAT

Nat Network

Ağ Üzerinde Bilgi Toplama

ping

Bir adresi kontrol etmek için ping komutu kullanılır.

ping <adres>
ping -c <adres>

telnet

Uzaktaki makineye telnet protokolü ile bağlanmak için telnet komutu kullanılır.

telnet <adres> <port>

traceroute

Bir adrese erişim için kullanılan yol ile ilgili bilgi almak için traceroute komutu kullanılır.

traceroute <adres>

nslookup

Bir alan adına bağlı IP adresini veya bir IP adresine bağlı alan adını araştırır.

nslookup github.com 8.8.8.8

dig

dig github.com

host

host github.com

nmap

Belirli bir ağı keşfetmek için kullanılır.

nmap 192.168.5.5
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-07 16:01 +03
Nmap scan report for sunucu (192.168.5.5)
Host is up (0.0000030s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3389/tcp open  ms-wbt-server
7070/tcp open  realserver

Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds

ss

Mevcut makine üzerindeki soketleri dinlemek için kullanlır. Örneğin TCP bağlantılarını dinlemek için

ss -ant

Temel Güvenlik Duvarı

Kurulum

Uncomplicated Firewall ya da kısaca ufw, adından da anlaşılabileceği üzere karmaşık olmayan bir güvenlik duvarıdır. Her linux dağıtımında önyüklü olarak gelmemektedir. Örneğin Debian tabanlı olan Pardus işletim sisteminde yüklü gelmezken, RedHat tabalı Centos işletim sisteminde kurulu ve açık olarak gelmektedir.

Güvenlik Duvarı Durumu

Servis Durumu

Kurulum tamamlandıktan sonra ufw servisinin çalışıp çalışmadığı kontrol edilir.

Servis çalışmıyor ise aşağıdaki komut ile çalıştırılır.

Makine açıldığında otomatik olarak ufw servisinin aktifleşmesi istenirse aşağıdaki komutla ile enable edilmesi gerekmektedir.

Güvenlik Duvarı Durumu

Ufw servisinin aktif olması ile güvenlik duvarının aktif olması farklı kavramlardır. Güvenlik duvarının açık ya da kapalı olması tanımlanmış kuralların uygulanıp uygulanmadığını ifade eder. Güvenlik duvarının durumuna bakmak için aşağıdaki komut kullanılır.

Güvenlik duvarını açmak için:

Güvenlik duvarını kapatmak için:

Güvenlik Duvarı Kuralları

Kuralları Listeleme

Güvenlik duvarında aktif olan bütün kuralları görmek için aşağıdaki komut kullanılır.

Varsayılan Kural

Güvenlik duvarı aktif hale getirildikten sonra varsayılan kuralları aktif edilir. Bu ayarlar standart kullanıcılar için yeterlidir. Varsayılan ayarlara göre gelen veri akışı reddedilirken, giden veri akışına izin verilir.

Kural Ekleme

Kural eklerken belirtilen allow kendisinden sonra gelen işleme izin verildiğini, deny ise kendisinden sonra gelen işleme izin verilmediği anlamına gelir.

Servis İsimlerine Göre

ufw, yaygın olarak kullanılan uygulamalar için ön tanımlı kural adları içerir. Bu kural adlarını kullanarak ekleme yapabiliriz.

Örneğin, yukarıda varsayılan ayarları kullanarak gelen bütün veri akışını reddettik. Bu işlemi SSH ile bağlandığımız uzak bir sunucuda yaptığımız durumda bağlantıyı kaybederiz. Bu durumun yaşanmaması için SSH bağlantılarına izin veren bir kural eklememiz gerekir.

Port Aralıklarına Göre

Ön tanımlı olmayan kurallar için portları ya da port aralıklarını belirtmemiz gerekir. Belli bir protokol kullanmak istiyorsak aynı şekilde onu da belirtmemiz gerekir.

Yukarıdaki komutlardan ilki 1000 portuna tcp protokolü için izin verir. İkinci komut 1002 ile 1004 arasındaki portlara udp protokolü için izin verir. Üçüncü komut ise 1006 portuna hem tcp hem udp protokolü için izin verir.

IP Adresleri

Belli bir IP adresinden gelen ya da belli bir IP adresine giden veri akışı da izin verilebilir ya da reddedilebilir.

Kural Silmek

Kurallar aşağıdaki gibi silinir.

apt-get install ufw
sudo systemctl status ufw
sudo systemctl start ufw
sudo systemctl enable ufw
ufw status 
ufw enable
ufw disable
ufw status verbose
ufw default deny incoming
ufw default allow outgoing
ufw allow/deny kural_adi
ufw allow ssh
ufw allow 1000/tcp
ufw allow 1002:1004/udp
ufw allow 1006
ufw allow from ip_adresi
ufw delete allow ssh
VirtualBox Giriş Penceresi
VirtualBox Kurulum Penceresi
VirtualBox Kurulum Seçenekleri Penceresi
Ağ Yapılandırması Uyarı Penceresi
Kurulum Öncesi Son Hazırlık Penceresi
VirtualBox Açılış Penceresi
Pardus 19.5 Sunucu İndirme Penceresi
ISO Dosyası Seçimi
VirtualBox Yeni Sunucunun Temel Ayarları
VirtualBox Yeni Sunucunun RAM Miktarı
VirtualBox Varsayılan Ayarlar
VirtualBox Varsayılan Ayarlar
VirtualBox Varsayılan Ayarlar
VirtualBox Sunucu Disk Boyutu
VirtualBox Ağ Ayarları
VirtualBox ISO Dosyasının Sisteme Eklenmesi
VirtualBox ISO Dosyasının Sisteme Eklenmesi
VirtualBox ISO Dosyasının Sisteme Eklenmesi
VirtualBox Ağ ve Disk Ayarlarının Kaydedilmesi
nmtui
hostname
nmtui
Aygıtlar
enp0s3
enp0s8

Yardım ve Bilgi Alma

Hedefler

  • Kabuk üzerinde komutlar ile ilgili yardım alma.

  • Kurulu işletim sistemi hakkında bilgi toplama.

  • Makine üzeerindeki donanımlar hakkında bilgi toplama.

Anahtar Kelimeler

  • help, whatis, apropos

  • uname, lscpu, lshw, lspci, lsscsi, lsusb, df, du, free

Yardım Alma

Kabuk üzerinde iken çoğu zaman kendinizi çok yalnız hissedebilirsiniz. Bunun bir nedeni bir çok komutun hangi parametrelere sahip olduğunu bilmemeniz veya ezberlememenizdir. Her iki durum da gayet anlaşılabilir bir durumdur. Bu nedenle çok kullanılan komutlarda detaylı, üçüncü parti komutlarda ise kısmi yardım metinleri bulunmaktadır. Bu metinlerde komutun neler yaptığı, hangi parametreleri aldığı, parametrelerin hangi değerleri alabildiği gibi içerikler yer almaktadır.

help parametresi

Kabuk üzerinde help parametresi ve help komutu bulunmaktadır. Fakat her zaman aynı çıktıyı vermemektedir. Örneğin ls --help yardım çıktısı verirken help ls yardım çıktısı vermemektedir. Fakat cd --help ile help cd aynı çıktıyı vermektedir. Bu nedenle komut olarak değil de parametre olarak kullanmak daha sağlıklı olabilmektedir.

Bu parametre ile bir komutun ne işe yaradığı, parametrelerini ve parametrelerinin hangi değerleri aldığını görebilmekteyiz. Örnek kullanımı aşağıdaki gibidir.

cat --help

man

man komutu, herhangi bir komutun manuel yani kılavuz sayfasının gösterilmesini sağlar. Bu kılavuz sayfaları /usr/share/man/ klasörü altında bulunmaktadır. İlgili çıktı içerisinde help parametresi ile aldığımız değerler ve biraz daha fazlasına ulaşılabilmekteyiz. En yaygın kullanımı olarak aşağıdaki gibi kullanılabilinir.

man echo

whatis

whatis komutu, sonrasında aldığı komut değerinin kılavuz sayfası olarak hangi kategoride olduğunu ve komutun ne işe yaradığını kısaca açıklamaya yaramaktadır. Örnek kullanımı aşağıdaki gibidir.

whatis ls

apropos

apropos komutu, sonrasında aldığı komutun hangi komutlarda geçtiğini göstermektedir. dolayısıyla bir komutun yakın amaçlı kullanılan komutlarını bulabilmede yardımcı olmaktadır. ayrıca bu komut aslında man -k komut çıktısını vermektedir. Örnek kullanımında çıktı olarak bir çok satır vermektedir.

apropos cd

Bilgi Alma

Bu bölümde temel sistem bilgilerini görüntülemeye yarayan komutlar anlatılacaktır. Bölüm boyunca anlatılacak olan komutların bir çoğu Debian ve RHEL sistemlerde varsayılan olarak bulunmamaktadır. Bu sebeple komut kullanımından önce ilgili sistemin paket yöneticisi ile kurulumun yapılması gerekmektedir.

hostname

Bilgisayarın ağ üzerindeki adını görüntülemektedir

host

Sistem ve çekirdek bilgilerini görüntüleme

Fiziksel makine adı dahil olmak üzere bir çok bilgiyi bir arada elde etmemizi sağlayan uname komutu parametreler ile filtreleme yapmamıza olanak sağlamaktadır. Yalnızca fiziksel makine adı görüntülenmek istenirse,

uname -n

kullanılması gerekirken uname ile elde edilebilecek tüm bilgileri görüntülemek için,

uname -a

kullanılması gerekmektedir.

İşlemci bilgilerini görüntüleme

İşlemci ile alakalı detaylı bilgileri lscpu ile görüntüleriz. Tüm bilgiler görüntülenmek istenirse,

lscpu

şeklinde kullanılır. Eğer özellikle bir bilgi görüntülenmek istenirse grep komutundan yardım alınabilir.

lscpu | grep "Model name"

Donanım bilgilerini görüntüleme

  1. lshw

    lshw sistem üzerinde bulunan farklı türde bir çok donanım için ayrıntılı bilgi verir. Bu sebeple kullanıcılar arasında -short parametresi oldukça yaygınlaşmıştır.

    Not: Yetkili kullanıcı ile çalıştırılmalıdır.

    sudo lshw
    sudo lshw -short
  2. hwinfo

    hwinfo sistem üzerindeki donanımlar ile alakalı lshw'den daha detaylı bilgiler verir. Tıpkı lshw'de olduğu gibi hwinfo için de -short parametresi yaygınlaşmıştır.

    Not: Yetkili kullanıcı ile çalıştırılmalıdır. Her dağıtımda yüklü olarak gelmemektedir.

    sudo hwinfo
    sudo hwinfo --short

Veriyollarını görüntüleme

lspci sistem üzerindeki veriyolları ile alakalı bilgileri ekrana bastırır.

lspci

Sabit ve optik diskleri görüntüleme

Sistem üzerindeki sabit ve optik diskleri görüntülemek için lsscsi komutu kullanılır.

Not: Yetkili kullanıcı ile çalıştırılmalıdır. Her dağıtımda yüklü olarak gelmemektedir.

lsscsi

USB veriyollarını ve cihaz ayrıntılarını listeleme

Sistem üzerindeki usb aygıtlarını listelemek için lsusb komutu kullanılır.

lsusb

Temel disk bilgilerini görüntüleme

Sistem üzerindeki disklerin bağlantı noktalarını, boş kalan alanları görüntülemeye yarar.

df -H

du komutu geçerli dizin ve alt dizinlerinin dsik üzerinde ne kadar yer kapladığını gösteririr

du -h /home/ --max-depth=0

Temel RAM bilgilerini görüntüleme

Boşta kalan veya kullanılan ram miktarını görüntülemek için free komutu kullanılır.

free -h

Zamanlanmış Görevler

Cron

Cron, Linux işletim sistemlerinde komutları belirli aralıklarla otomatik olarak çalıştırmak üzere kullanılan standart bir yardımcı programdır. Her dakika cron servisi o dakika için zamanlanan bir komut olup olmadığını kontrol eder. Komut olması durumunda çalıştırılır. Cron ile sistem genelinde olduğu gibi kullanıcılar da yetkilerinin olması durumunda kendi zamanlanmış görevlerini tanımlayabilirler.

Sistem geneline ait işler /etc/crontab dosyasında tutulur. Bu dosyanın içeriği cat komutu ile görüntülenebilir.

cat /etc/crontab
crontab –l

Dosyanın içeriğinde bir zamanlanmış görevin nasıl yazılması gerektiğini gösteren aşağıdaki satır da yer alır.

# m h dom mon dow user command

Kısaltma

İngilizce

Türkçe

Açıklama

m

Minute

Dakika

0-59 arası bir değer alır.

h

Hour

Saat

0-23 arası bir değer alır.

dom

Day of Month

Ayın Günü

0-31 arası bir değer alır.

mon

Month

Ay

1-12 arası bir değer alır.

dow

Day of Week

Haftanın Günü

0-7 arası bir değer alır. 0 ve 7 pazar günüdür.

user

User

Kullanıcı

command

Command

Komut

Zamanlanmış bir görev yazılırken tarih ile ilgili sutünlara "*" sembolü konularak, zamanlanmış görevin o alandaki her değer için çalıştırması sağlanır. Her bir sutün için "-" sembolü ile aralık, "," sembolü ile birden fazla değer ve "/" sembolü ile o işin periyodik olarak çalışacağı belirtilir.

Örnekler

  1. Her gün saat 12'de çalışacak zamanlanmış görev:

    00 12 * * * kullanıcı_adı komut_veya_betik_yolu
  2. Her gün saat 8'de ve 14'de çalışacak zamanlanmış görev:

    00 8,14 * * * kullanıcı_adı komut_veya_betik_yolu
  3. 10 dakikalık periyotlarla çalışacak zamanlanmış görev:

    */10 * * * * kullanıcı_adı komut_veya_betik_yolu
  4. Hafta içi günler sabah 9 akşam 18 arası her saat çalışacak zamanlanmış görev:

    00 09-18 * * 1-5 kullanıcı_adı komut_veya_betik_yolu

Saatlik yapılan zamanlanmış görevler /etc/cron.hourly dizininde, günlük yapılan zamanlanmış görevler /etc/cron.daily dizininde, haftalık yapılan zamanlanmış görevler /etc/periodic/weekly dizininde, aylık yapılan zamanlanmış görevler /etc/periodic/monthly dizininde tanımlanır.

Crontab

Yukarıdaki örnekler sistem genelinde kullanılan /etc/crontab dosyasında tanımlanarak yapıldı. İstenmesi durumunda her kullanıcı kendi zamanlanmış görevlerini crontab komutu ile yönetebilir.

  1. -l paremetresi ile var olan zamanlanmış görevler listelenir.

    crontab -l
  2. -e paremetresi ile zamanlanmış görevler düzenlenir.

    crontab -e

    crontab komutu ile eklenen zamanlanmış görevler için kullanıcı belirtilmez, zamanlanmış görevi komutu çalıştıran kullanıcı çalıştırır.

  3. -u parametresi ile root kullanıcısı başka kullanıcılar için zamanlanmış görev ekleyebilir.

    crontab -e -u kullanıcı_adı

Crontab'ın Yönetilmesi

  1. /etc/cron.allow dosyası oluşturularak zamanlanmış görev kullanabilecek kullanıcılar belirtilir. Bu dosyada yer almayan kullanıcılar zamanlanmış görev oluşturamaz.

  2. /etc/cron.deny dosyası oluşturularak zamanlanmış görev kullanamayacak kullanıcılar belirtilir. Bu dosyada yer alan kullanıcılar zamanlanmış görev oluşturamaz.

at

at, Linux işletim sistemlerinde komutları belirli bir zamanda otomatik olarak çalıştırmak üzere kullanılan standart bir yardımcı programdır. Cron'un aksine tekrarlı işler için kullanılmaz.

Ağ Dosya Sistemleri

NFS (Network File System) Protokolü

Ağ Dosya Sistemi ya da kısaca NFS, Sun Microsystems tarafından 1984 yılında geliştirilmiştir. Ağ üzerindeki bir kaynağın birden fazla Linux bilgisayar tarafından yerel kaynakmış gibi kullanılmasını sağlar. Kapalı ağlarda kullanılmak için tasarlandığından herhangi bir güvenlik önlemi içermez.

Bu protokol ile paylaşımlara erişmek için aşağıdaki adımlar uygulanır.

  • Mount için dizin oluşturulur.

  • Paylaşım adresi oluşturulan dizine bağlanır.

  • Dizine erişilir.

SMB Protokolü

Ağ üzerindeki bir kaynağın hem Linux hem Windows bilgisayarlar tarafından yerel kaynakmış gibi kullanılmasını sağlar. NFS gibi kapalı ağlarda kullanılmak için tasarlanmıştır. Ancak, eklentiler ile trafik şifrelenebilir. Sambanın artıları aşağıdaki gibidir.

  • Linux ve Windows bilgisayarlar ortak olarak kullanabilir.

  • Bir ya da birden fazla dizin paylaşılabilir.

  • Windows bilgisayarlar yüklü yazıcıları paylaşabilir.

  • Ağı tarama imkanı sağlar.

  • Dosya izinleri için aktif dizin ile birlikte çalışabilir.

Bu protokol ile paylaşımlara erişmek için aşağıdaki adımlar uygulanır.

  • Mount için dizin oluşturulur.

  • Paylaşım adresi oluşturulan dizine bağlanır.

  • Dizine erişilir.

Mount etmeden doğrudan erişmek için smbclient komutu kullanılır.

Temel Paket Yönetimi

GNU/Linux dağıtımları bilindiği üzere kendi aralarında da bir kaç kategoriye ayrılmıştır. Bu kategorilere göre de gerek dosya yolları, gerek paket yöneticileri gerek başka özellikleri farklılık gösterebilmektedir.

Örneğin Debian tabanlı sistemler apt paket yöneticisini kullanırken, RHEL tabanlı sistemler yum paket yöneticisini kullanmaktadır. Bunlar en bilinenler olduğundan örnek olarak verilse de diğer dağıtımlarda da çeşitli paket yöneticileri kullanılmaktadır.

Pardus da Debian tabanlı bir dağıtım olduğundan, bu yazımızda dpkg ve apt paket yöneticilerini inceleyeceğiz.

Debian Paket Yöneticileri

dpkg paket yöneticisi

Debian Package Manager'ın kısaltması olan dpkg, debian tabanlı sistemlerde kullanılan bir paket yöneticisidir.

Kullanıcı dostu bir paket yöneticisi olmadığından yerini daha kullanıcı dostu olan apt'ye bırakmıştır. dpkg'yi apt'den ayıran en önemli özellik bağımlılıklar bu paket yöneticisi ile yüklenmemektedir.

Sistemde kurulu paketler için,

bir kapeti kurmak için

bir paketin sistemde yüklü olup olmadığı

komutları ile kontrol edilebilir.

apt paket yöneticisi

apt paket yöneticisi giriş yazısında da belirtildiği üzere, debian tabanlı sistemlerde paket yükleme, silme, paket ve paket listelerini güncelleme için kullanılmaktadır. apt sistem paketleri üzerinde değişiklik yaptığından ve bu değişiklikler sistem üzerinde hasara yol açabileceğinden çalıştırırken yetkili kullanıcı olarak ya da sudo yetkisi ile çalıştırılmalıdır.

apt update

update, sistem üzerindeki paket listelerini güncellemekte kullanılır. Böylece uzak depo sunucusundaki uygulama listesi, yerel bilgisayar üzerine çekilir. Çoğu zaman sistemin ilk açılışında paket listelerinin güncellenmesi, sunucunun internete çıkabildiğinin testi ya da paket listelerine yeni bir tanesi eklendiğinde kullanılır.

Bunun için /var/lib/apt/lists/ dizini altındaki InRelease dosyaları kontrol edilebilir.

apt search

Eğer bir paketi yüklemek istiyor ve o paketin depolarda olup olmadığını, varsa hangi versiyonunun olduğunu ya da hangi depoda olduğunu öğrenmek için kullanılabilir.

apt install

install, sisteme yeni paket yüklemek için kullanılır. Eğer yüklenecek paket, paket listelerindeki bir depoda bulunuyorsa paket rahatlıkla indirilecektir. Ancak bulunmuyorsa önce paket listelerine bu deponun eklenmesi gerekmektedir.

Aynı zamanda hali hazırda .deb uzantılı bir paketi sisteme yüklemede de kullanılabilir.

apt remove/purge

remove, sistemde yüklü olan bir paketi silmek için kullanılır.

Bu komut paket kaldırılırken bağımlılıkları ve config dosyalarını kaldırmaz. Paketin yapılandırma dosyaları ile birlikte kaldırılması isteniyorsa aşağıdaki komut kullanılır

apt upgrade

upgrade, paket yükseltmelerinde kullanılır. Örneğin sambahvl paketi sistem üzerinde 14.0 versiyonunda iken depolarda 14.5 versiyonu bulunuyorsa upgrade ile paket güncelleştirilebilir.

İstenirse tüm sistemdeki paketler de tek seferde güncellenebilir.

apt autoremove

apt install ile sisteme bir paket kurulduğunda, paketin yanında bağımlılıkları da sisteme yüklenmektedir. Paket kaldırılmak istendiğinde eğer tek başına paket kaldırılırsa yüklenen bağımlılıklar sistemde kalmaya devam edecektir.

autoremove, kaldırılan paketin bağımlılıklarını eğer sistemde başka bir paket kullanmıyorsa paketle beraber kaldırır.

snap paket yöneticisi

Bu paket yöneticisinin en büyük özelliği dağıtım tabanlı olmamasıdır. Bağımlılıkları da içermesinden dolayı rpm tabanlı Centos işletim sisteminde de Debian tabanlı Pardus işletim sisteminde de aynı şekilde kullanılabilir.

Arayüzlü Mağaza Uygulamaları

Pardus Mağaza

Synaptic

Lab

  1. Sistemde artık gerekli olmayan paketler hangi apt komutu ile temizlenir?

mkdir /dizin_adi
mount –t nfs –o username=kullanici_adi sunucu:paylasim_dizinin_adresi  /dizin_adi
cd /dizin_adi
mkdir /dizin_adi
mount –t cifs –o username=kullanici_adi //sunucu/paylasim_dizinin_adresi  /dizin_adi
cd /dizin_adi
smbclient  //sunucu/paylasim_dizinin_adresi –U kullanici_adi
dpkg -l
 sudo dpkg -i /mutlak/yol/paketadı.deb
dpkg -s paketadı
apt update
apt search <paket>
apt install <paket>
apt install ./<paket>.deb
apt remove paket
apt purge paket
apt upgrade <paket>
apt upgrade
apt autoremove <paket>
snap install firefox

Güvenli Uzaktan Erişim

Güvenli Haberleşmenin Gereksinimleri

  • Gizlilik

  • Bilgi Bütünlüğü

  • Kimlik doğrulama

  • Reddedilemezlik

Parola, Şifre, Şifreleme, Hash Kavramları

Düz Metin: Bozulmamış veriye denir. Şifreleme: Var olan bir verinin belirli bir sisteme göre bozulması işlemine şifreleme denmektedir. Şifrelemenin temeli, şifreleme algoritmalarına ve "anahtarlara" dayanır. Bilgiler gönderildiğinde bir algoritma kullanılarak şifrelenir ve yalnızca uygun anahtar kullanılarak şifresi çözülebilir. Anahtar, alıcı sistemde saklanabilir veya şifreli veriyle birlikte iletilebilir. Şifre: Şifrelenerek bozulmuş veriye denir. Genellikle verinin gizlenmesi amacıyla oluşturulmuştur.

Parola: Parola okunduğu zaman anlam ifade eden bir dizidir. İlgili kişilerce oluşturulup kendilerinin bildiği kelimelerdir. İlgili kişilerce oluşturulurlar, genellikle kimlik doğrulamak için kullanılır.

Hash: Tek yönlü bir algoritma yardımıyla şifrelenmiş verilere hash denir.

Simetrik Şifreleme

Açık metin ortak bir anahtar ile şifrelenir. Ve yine aynı anahtar ile deşifre edilerek açık metne çevrilir. Burada önemli olan anahtarın güvenliğidir. Anahtar bir başkasının eline geçerse tüm şifrelenmiş metinler kolaylıkla çözülebilirler.

Asimetrik Şifreleme

Simetrik şifrelemedeki anahtarın güvenli bir şekilde dağıtımının zor olmasından kaynaklı geliştirilmiş bir sistemdir. Anahtar ikilileri ile çalışır.

Her bir kişinin hem açık hem de gizli birer anahtarı bulunur. Açık anahtar internet üzerinde dağıtılarak yalnızca veri şifrelemek için kullanılır. Gizli anahtar ise kullanıcının kendisinde kalır ve şifrelenmiş mesajları deşifre etmek için kullanılır.

SSH (Secure Shell)

Parolalı SSH Bağlantısı

Linux bir işletim sistemine ssh ile uzaktan bağlanabilmek için IP Adresi, o makine üzerinde bir kullanıcı ve onun parolasına ihtiyaç vardır.

ssh kullanici_adi@makine_IP_adresi

Parolasız SSH Bağlantısı

Parolasız ssh bağlantıları sertifika ile yapılmaktadır. Açık ve özel anahtar ikilisi mantığıyla çalışmaktadır. Bunun için ilk olarak kullanıcıya ait bir ssh anahtar ikilisi üretilir.

ssh-keygen

Üretilen anahtar ikilileri varsayılan olarak kullanıcı ev dizinindeki .ssh gizli dizininde, id_rsa (özel anahtar) ve id_rsa.pub (açık anahtar) olarak üretilir.

ssh anahtarlarından açık olan anahtar aşağıdaki şekilde parolasız giriş yapılmak istenen sunucu üzerinde atılır. Tek seferliğe mahsus bağlanılmak istenen makinedeki kullanıcının parolası girilerek karşıdaki sisteme açık anahtar kaydedilir. (Bağlanılmak istenen makinedeki kullanıcının ev dizininde .ssh/authorized_keys dosyasına eklenir)

ssh-copy-id kullanici_adi@makine_IP_adresi

Bu sayede bir tekrar bağlanılmak istendiğinde parola sormadan giriş yapabilir hale gelinir.

RDP

Microsoft tarafından geliştirilmiş olan protokol, ağ üzerindeki grafik arayüzlü bir cihaza uzaktan bağlanarak grafik arabirim (klavye ve mouse) sayesinde yönetmeyi sağlar.

Cihazların aynı ağ üzerinde bulunması gerekmektedir.

RDP, 128-bit şifreleme ve 32-bit renk desteğine sahiptir. Bununla beraber ses, dosya sistemi yazıcı ya da port yönlendirme özellikleri bulunmaktadır.

VNC

Bir ağ sunucusu üzerinde çalışan grafik arabirimli uygulamalara, başka bir ağ üzerindeki bilgisayardan erişerek bu uygulamaların kullanabilmesini ve yönetilebilmesini sağlar.

Platform bağımsız ve açık kaynak kodlu bir uygulamadır.

Haberleşme iki farklı kanaldan gerçekleşir, birisinden görüntü aktarılırken diperinden klavye ve fare işlemleri aktarılır.

RFB, grafik arayüzlerine uzaktan erişimi ile bilginin sunucudan istemciye iletilmesini sağlayan bir haberleşme protokolüdür. RFB protokolü ile klavye ve fare hareketleri ağ üzerinden başka bir bilgisayara gönderilip meydana gelen grafik bilgisi ve cevapları görüntülü olarak geri alınır. RFB protokolü TCP/IP protokolü üzerinden uzaktan erişimi sağlar. RFB protokolü TCP üzerinden yollanacak veriyi parçalara bölünmesini ve alıcı sistem olan VNC sunucusu üzerinde tekrar birleştirilmesini sağlar.

Sezar Şifreleme
Logoexplainshell.com - ls -la

Yerel Dosya Sistemleri

Dosya Sistemi Nedir

Bir dosyanın bir disk üzerinde nasıl saklandığı ve bir bilgisayarın dosyaları yönetebilmek için erişimi nasıl sağladığını kontrol eden sisteme dosya sistemi (file system) denir. Dosya sisteminin sağladıkları aşağıdaki gibidir.

  • Bir dosyanın nasıl adlandırılabileceğini belirtir.

    • Kaç karakter kullanılabilir.

    • Karakterler hangi karakter kümesinden kullanılabilir. (ASCII, UTF-8)

  • Bir dosyanın boyutunun alabileceği maksimum değeri belirtir.

    • FAT32'de bir dosya en fazla 4 GB olabilir.

  • Diske ve dosyaya ait meta verileri tutar.

    • Disk ile ilgili hangi bölümlerin kullanıldığını ve kullanılabilir olduğunu tutar.

    • Dosya ile ilgili boyut, disteki konum, oluşturulma ve değiştirilme tarihlerini tutar.

  • Kullanıcıların dizin ve dosyalara erişimlerini yönetir.

Dosya Sistemi Türleri

İşletim sistemlerinin genel olarak kullandığı dosya sistemleri aşağıdaki gibidir:

  • Linux işletim sistemi Ext2, Ext3 ve Swap,

  • MS-DOS işletim sistemi FAT 16,

  • Windows 95/98 işletim sistemi FAT 32,

  • Windows NT/2000/XP/Vista/7/8/10 işletim sistemleri NTFS,

Linux için her şey birer dosyadır. Bu dosyaları yönetmek için de dosya sistemleri bulunmaktadır. Linux disk yönetimindeki en önemli faktörlerden birisi dosya sistemleridir. Alışagelmiş sistemlerinden ziyade Linux’ta EXT ve BTRFS gibi disk sistemleri bulunmaktadır.

Performans testlerine bakıldığında Linux'un FAT ve NTFS dosya sistemleri üzerinde EXT dosya sistemine oranla yavaş çalıştığı görülür. Ayrıca, Windows, Linux tarafından kullanılan EXT dosya sistemini tanımaz.

Farklı Dosya Sistemlerini Linuxa Bağlama

Linux dağıtımları Windows tarafında kullanılan FAT dosya sistemlerini tanır. Bu dosya sistemi ile biçimlendirilmiş disk bölümlerini Linux'a aşağıdaki adımlar ile bağlayabilirsiniz.

  • Mount için dizin oluşturulur.

mkdir -p /mnt/dizin_adi
  • Disk bölümünü oluşturulan dizine bağlanır.

mount -t vfat /dev/disk_bolumu /mnt/dizin_adi
  • Dizine erişilir.

cd /mnt/dizin_adi

Windows tarafından kullanılan NTFS dosya sistemine erişmek için ekstra paketler yüklemek gerekir. Bu paketler bazı dağıtımlarda ön yüklü olarak gelmektedir. Bu dosya sistemi ile biçimlendirilmiş disk bölümlerini Linux'a aşağıdaki adımlar ile bağlayabilirsiniz.

  • Fuse ve ntfs-3g paketleri yüklenir.

sudo apt install fuse ntfs-3g
  • Mount için dizin oluşturulur.

mkdir -p /mnt/dizin_adi
  • Disk bölümünü oluşturulan dizine bağlanır.

mount -t ntfs-3g /dev/disk_bolumu /mnt/dizin_adi
  • Dizine erişilir.

cd /mnt/dizin_adi