Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
İ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.
Öncelikle VirtualBox'ı bu bağlantıyı kullanarak kişisel bilgisayarımızın işletim sistemine uygun şekilde indirelim.
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
Kurulum adımları başarı ile tamamlandıktan sonra aşağıdaki gibi bir açılış ekranı bizi karşılamalıdır.
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.
Pardus : https://www.pardus.org.tr/surumler/
Ubuntu : https://releases.ubuntu.com/20.04/
CentOS : https://www.centos.org/download/
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.
İş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.
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.
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.
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.
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.
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.
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.
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.
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 açıldıktan sonra root kullanıcısına giriş yapılarak aşağıdaki komut ile ağ yöneticisi açılır.
Yukarıdaki her iki aygıt için de aşağıdaki ayarlar kontrol edilmelidir.
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.
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.
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 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.
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.
Kabuk üzerinde komutlar ile ilgili yardım alma.
Kurulu işletim sistemi hakkında bilgi toplama.
Makine üzeerindeki donanımlar hakkında bilgi toplama.
help, whatis, apropos
uname, lscpu, lshw, lspci, lsscsi, lsusb, df, du, free
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.
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.
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.
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.
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.
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.
Bilgisayarın ağ üzerindeki adını görüntülemektedir
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,
kullanılması gerekirken uname ile elde edilebilecek tüm bilgileri görüntülemek için,
kullanılması gerekmektedir.
İşlemci ile alakalı detaylı bilgileri lscpu ile görüntüleriz. Tüm bilgiler görüntülenmek istenirse,
şeklinde kullanılır. Eğer özellikle bir bilgi görüntülenmek istenirse grep komutundan yardım alınabilir.
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.
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.
lspci sistem üzerindeki veriyolları ile alakalı bilgileri ekrana bastırır.
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.
Sistem üzerindeki usb aygıtlarını listelemek için lsusb komutu kullanılır.
Sistem üzerindeki disklerin bağlantı noktalarını, boş kalan alanları görüntülemeye yarar.
du komutu geçerli dizin ve alt dizinlerinin dsik üzerinde ne kadar yer kapladığını gösteririr
Boşta kalan veya kullanılan ram miktarını görüntülemek için free komutu kullanılır.
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.
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.
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.
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.
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.
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.
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.
Tıpkı diğer programlama dillerinde de olduğu gibi bash programlamada da for ve while döngüleri kullanılabilir.
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.
Terminal üzerinde komutları kullanabilmek.
echo, cat, pwd, ls, cd
history, clear
whoami
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 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 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 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 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.
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.
Terminal ekranını temizler.
isim adlı bir değişlene bir isim tanımlanarak bunun ekrana yazdırılması
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ı.
/home/ dizininde iken /etc/systemd/system dizinine tek komut ile gidilmeli.
Komut çalıştırmak
Komutları birbirine bağlamak.
Girdi ve çıktı türlerine hakim olmak
; & && || | < > >>
stdin, stdout, stderror
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.
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.
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.
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.
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.
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.
Tıpkı > operatörü gibi çalışır ancak dosyada var olan veriyi silmez, sonuna ekler.
Komuta girdi olarak verilir.
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.
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.
Switch User'ın kısaltması olan bu komut, root kullanıcısna geçildiğinde sudo ile çalıştırılmalıdır.
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.
adduser paketi sisteme yüklendikten sonra,
ile kullanıcı oluşturulabilir. Kullanıcının gerçekten oluşup oluşmadığını görmek için,
ile passwd dosyası kontrol edilebilir ya da,
ile kullanıcıya geçiş yapılarak görüntülenebilir.
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,
çıktısına bakılarak incelenebilir.
Eğer bir kullanıcının parolası değiştirilmek istenirse, yetkili kullanıcı ile,
komutu kullanılmalıdır.
Sistemde ekli olan bir kullanıcıyı silmek için userdel komutu kullanılır.
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,
parametresi ile kullanılmalıdır.
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
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,
komutu kullanılır.
Bir kullanıcı grubu oluşturmak için,
komutu kullanılır.
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,
Sistemde bir grup artık kullanılmıyorsa,
komutu ile silinebilir.
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.
fdisk komutunun l parametresi ile makinedeki tüm diskler listelenebilir.
Listeleme komutundan dönen disklerden herhangi birini görüntülemek için,
komutu kullanılabilir.
Değişiklik yapılacak diske karar verdikten sonra, ilgili diski fdisk komutuna parametre olarak vermemiz yeterlidir.
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.
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.
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, ö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.
Ç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.
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.
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.
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.
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.
Her gün saat 12'de çalışacak zamanlanmış görev:
Her gün saat 8'de ve 14'de çalışacak zamanlanmış görev:
10 dakikalık periyotlarla çalışacak zamanlanmış görev:
Hafta içi günler sabah 9 akşam 18 arası her saat çalışacak zamanlanmış görev:
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.
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.
-l paremetresi ile var olan zamanlanmış görevler listelenir.
-e paremetresi ile zamanlanmış görevler düzenlenir.
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.
-u parametresi ile root kullanıcısı başka kullanıcılar için zamanlanmış görev ekleyebilir.
/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.
/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, 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.
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
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
Gizlilik
Bilgi Bütünlüğü
Kimlik doğrulama
Reddedilemezlik
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.
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.
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.
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.
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.
Ü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)
Bu sayede bir tekrar bağlanılmak istendiğinde parola sormadan giriş yapabilir hale gelinir.
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.
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.
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 Dennis Ritchie (C programlama dilinin yaratıcısı) ve Ken Thompson 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 Richard Stallman, bir röportajında şu sözleri söyler:
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.
Linux, Linus Torvalds 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.
Ö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.
Ö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.
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.
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.