4
Konuya ait anahtar kelimeler: Command Prompt, echo , mkdir , ls , touch Command Prompt : Türkçe anlamı "Komut İstemi". Komutlarınızı yazdığınız zaman Terminal ekranında, sol tarafta isim ve dizin gibi isimlerin olduğu bir blok görürsünüz. Burada dikkat edilmesi gereken noktalardan birisi komut isteminin sonundaki işarettir, bu işaret dolar "$" işareti ise o an aktif olan kullanıcının Root olmadığını eğer "#" kare işareti ise o anki kullanıcın Root olduğunu yani bütün yetkilere sahip olduğunu göstermektedir. Bazen bir dosyayı değiştirmek yada silmek istediğiniz zaman "Permission Denied" gibi erişim engeline takılırsınız, bu gibi durumlar genellikle, yetkinizin olmadığı yada sahibi olmadığınız bir dosya ile işlem yaptığınız anlamına gelmektedir.
  • " $ " işareti : Standart kullanıcı
  • " # " işareti : Root kullanıcısı
Peki Root kullanıcısını nasıl yorumlayabiliriz? Root kullanıcısı; sistem üzerinde en üst düzey yetkiye sahip olan kullanıcıdır. Bundan dolayıdır ki, herhangi bir Linux yada Unix sistemi kurduğunuz zaman bir adet Standart kullanıcı tanımlamanız tavsiye edilir. Böylece oluşabilecek sistem kararlılığını etkileyebilecek olaylara karşı bir önlem alınmış olur. Standart kullanıcıdan Root kullanıcısına geçmeniz için Terminal de " su " komutunu yazdıktan ve ENTER tuşuna bastıktan sonra var ise Root kullanıcı şifresini girmeniz gerekmetedir. Dikkat etmeniz noktalardan birisi şifre yazarken herhangi bir yazım görünmeyecektir, sakın yazmadığınızı düşünmeyin, şifreyi yazınız ve Enter a basınız. Örnek :
[alax@alax ~]$ su Password: [root@alax alax]#
Yukarıda önceki ve sonraki komut istemine dikkatlice bakınız. Root olduktan sonra dolar işareti kare işareti halini aldı. Bu sizlere normal şartlarda Root kullanıcısı olduğunuzu göstermektedir. Birde " sudo " komutu vardır. Bu komut ise o anki kullanıcının yazdığı komutun Root olmadan Root yetkisi ile çalıştırılmasını sağlamaktadır. Bunun için ise kullanıcı adınızın sudo komutunu kullanabilecek olan kullanıcıların olduğu "sudoers" dosyasında adınızın olması gerekmektedir. Bu dosya yukarıda anlattığımız erişim hakları ile korunmaktadır. Eğer normal kullanıcı ile bu dosyaya erişmeye çalışırsanız "Permission Denied" erişim engellendi kısıtlaması ile karşılaşırsınız. Şimdi örnek olması amacıyla bu dosyanın içeriğine önce normal kullanıcı ile daha sonra sudo komutu ile ve daha sonra su komutuyla Root olarak erişmeye çalışalım. Not : nano editöründen çıkmak için " Ctrl + x " tuşlarına basmanız yeterlidir. Klavyede sol kenardaki Control tuşu ve aynı anda X harfi. Evet şimdi üç farklı şekilde dosya içeriğini görüntülemeye çalışalım. Normal kullanıcı ile:
[alax@alax ~]$ nano /etc/sudoers GNU nano 2.4 New Buffer [ Error reading /etc/sudoers: Permission denied ] ^G Get Help^O Write Ou^W Where Is^K Cut Text ^X Exit ^R Read Fil^\ Replace ^U Uncut Tex
Gördüğünüz gibi hiçbirşey görüntüleyemedik en altta [ Error reading /etc/sudoers: Permission denied ] hatası ile karşılaştık, çünkü bizim kullanıcı hesabımız Standart hesap. Erişim yetkimiz yok. "sudo" komutu ile erişmeye çalışalım.
[alax@alax ~]$ sudo nano /etc/sudoers [sudo] password for alax:
Dikkat etmeniz gereken nokta, yukarıda [sudo] password for alax: kısmında kendi kullanıcı şifremizi girmemiz gerekmektedir. Root şifresi değil. Şifremizi giriyoruz erişim engelini geçerek dosya içeriğini aşağıdaki gibi görüntülüyoruz.
GNU nano 2.4.2 File : /etc/sudoers ## sudoers file. ## ## This file MUST be edited with the 'visudo' command as root. ## Failure to use 'visudo' may result in syntax or file permission errors ## that prevent sudo from running. ## ## See the sudoers man page for the details on how to write a sudoers file. ## ## ## Host alias specification ## ## Groups of machines. These may include host names (optionally with wildcards), ## IP addresses, network numbers or netgroups. # Host_Alias WEBSERVERS = www1, www2, www3 ## ## User alias specification ## ## Groups of users. These may consist of user names, uids, Unix groups, ## or netgroups. # User_Alias ADMINS = millert, dowdy, mikef ## ## Cmnd alias specification ## ## Groups of commands. Often used to group related commands together. # Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \ # /usr/bin/pkill, /usr/bin/top # Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff ## ## Defaults specification . . . ...
Dosyaya erişim sağladık ve hiçbir engelle karşılaşmadık. Çünkü nano(Terminal text editör) komutumuz Root yetkisi ile çaşıltırıldı. Evet arkadaşlar şimdi birde "su" komutu ile Root olduktan sonra dosya içeriğini görüntüleyelim.
[alax@alax ~]$ su Password: [root@alax alax]# nano /etc/sudoers
Evet şuanda sudo ile elde ettiğimiz gibi bir çıktı ile dosya içeriğini görüntülüyor olmalısınız. Bu dosyada KESİNLİkLE herhangi bir değişiklik yapmadan "Ctrl X" tuşlarına basarak çıkış yapınız. Eğer sizden bir onay isteyecek olursa "No" yazınız, otomatik olarak çıkış yapmış olacaksınızdır. Not: Root kullanıcı hesabından çıkış yaparak tekrar Standart kullanıcı hesabına dönmek için "exit" yazdıktan sonra Enter a basınız. Komut isteminde son karakterin Dolar ($) işareti olduğunu gördüğünüz ana kadar bu işlemi yapınız. Dolar işaretini gördüğünüz zaman Standart hesap kullancısına geri dönmüşsünüz demektir. echo : Yaz yada yazdırmak anlamına gelmektedir. O an Terminal penceresine, yada bir dosyaya veri yazma işlemini yapmaktadır. Kullanımı çok basittir, Kullanımı : echo yazılacak_kelime dosya_adi şeklinde olmaktadır. Eğer "dosya_adi" kısmında bir dosya adı yazmazsanız Terminal ekranına yazma işlemini yapacaktır. Örnek :
[alax@alax ~]$ echo Merhaba Dünya Merhaba Dünya [alax@alax ~]$
mkdir : Klasör oluştur komutu. Kullanım : mkdir dosya_adı Örnek :
[alax@alax ~]$ mkdir sarı [alax@alax ~]$
Şu anda Terminalin aktif dizini içerisinde bir adet "sarı" adında klasör oluşturdunuz. ls : Listeleme komutu. Bu komut belirtilen dizin içerisindeki dosya/klasörler isimlerini listeleyerek ekrana yazdırır. Örnek :
[alax@alax ~]$ ls Desktop Documents Downloads Music Pictures sarı tmp Videos workalax [alax@alax ~]$
Gördüğünüz gibi,aktif Terminal'imizin çalışma dizini "home" klasörü olduğu için "home" klasörü içerisindeki dosya ve klasörleri listeledi. Aksi belirtilmediği sürce Terminal'i ilk açtığınız zaman kullanıcı ana dizini yani home(Ev dizini) içerisinde Terminal açılmış olur. Az önce oluşturduğumuz sarı adlı klasörümüz de listelendi. "ls" komutu birçok parametre alabilmektedir, dizin içerisindeki dosya/klasör lerin hepsini, gizli dosyalar dahil listelenmesini istiyorsak o zaman "-a" parametresini, dosya/klasör lerin uzun açıklamalı(dosya/klasörün sahibi, oluşturulma tarihi, çalıştır/oku/yaz gibi izinleri vb.. ) bir çok ayrıntılarını da dahil ederek listelenmesini istiyorsak "-l" parametresini kullanabiliriz. Şimdi dosya/klasöri gizli dosyalar dahil listelenmesi komutunu yazalım.
[alax@alax ~]$ ls -a . .. .adobe .bash_history .bash_logout .bash_profile .bashrc .cache calisma .config .conkyrc .designer Desktop Documents Downloads .fbext .fehbg .fluxbox .gstreamer-0.10 .gtkrc-2.0 .icons .lazarus .local .macromedia .mozilla Music Pictures .pki sarı .ssh .thumbnails tmp Videos .viminfo .wicd workalax .Xauthority .xinitrc [alax@alax ~]$
Not :Unix/Linux sistemlerde gizli dosya/klasör isimleri ilk harfi nokta " . " ile başlamaktadır. Mesela sarı klasörü gizli klasör değildir fakat .sarı klasörü gizli bir klasördür. Şimdide dosya/klasörün ayrıntılı bir şekilde sıralanmasını sağlayalım.
[alax@alax ~]$ ls -l drwxr-xr-x 2 alax alax 4096 Oct 13 23:56 Desktop drwxr-xr-x 2 alax alax 4096 Oct 13 17:34 Documents drwx------ 3 alax alax 4096 Oct 19 14:14 Downloads drwxr-xr-x 2 alax alax 4096 Oct 13 17:34 Music drwxr-xr-x 2 alax alax 4096 Oct 13 17:26 Pictures drwxr-xr-x 2 alax alax 4096 Oct 19 22:54 sarı drwxr-xr-x 3 alax alax 4096 Oct 18 00:09 tmp drwxr-xr-x 2 alax alax 4096 Oct 17 12:20 Videos drwxr-xr-x 4 alax alax 4096 Oct 18 00:29 workalax [alax@alax ~]$
Gördüğünüz gibi dosya/klasörlerin çalıştırma/okuma/yazma izinleri(drwxr-xr-x), sahibi(alax), dosya byte blocks değeri(4096), oluşturulma tarihi(Biz sistemimizi ingilizce kullandığımız için Oct olarak görünüyor Oct demek yani Ekim ayı- gün ve saat- Oct 13 23:56), ve en son dosya/klasör adı(Desktop vb..). Şimdi listeleme işlemini bütün dosyalar(gizli dosyalar dahil) ve ayrıntılı olarak göster şeklinde yapalım. Parametrelerin hepsini aynı anda kullanabilirsiniz. Komut aşağıdaki gibi olacaktır.
[alax@alax ~]$ ls -la
Evet şimdi bütün dosyaları ayrıntılı olarak görüntülüyor olmalısınız. Diğer parametleri sonraki derslerimizde gerektiği zaman kullanacağız. touch : Dosya oluşturma komutu. Bu komut klasör oluşturma komutuna benzemektedir, fakat bu komut ile klasör değil de dosya oluşturabilirsiniz. Örnek :
[alax@alax ~]$ touch dosya.txt [alax@alax ~]$
Evet şimdi aktif dizinimizde "dosya.txt" adında bir dosya oluşturmuş olduk. Arkadaşlar "ls" komutunu kullanarak oluşturmuş olduğunuz dosyayı liste penceresinde görüntüleyiniz. Bu bölümde "sarı" adında bir klasör ve "dosya.txt" adında bir adet dosya oluşturduk. Lütfen bu dosya ve klasörü SİLMEYİnİZ.