23.03.2010

Ubuntu admin

Linux'ta çok sık kullanılabilecek komutların bir derlemesini yapmak istedim. Buradakilerin hepsini internet üzerinden öğrendim; örneğin cyberciti.biz,ubuntuguide.net, ubuntugeek.com, ubuntuforums.org gibi sitelerden.

Sistem kurulum tarihi
Windows'da systeminfo komutu ile bunu görebiliyordum. Linux'ta eşdeğeri basit bir komut yok. Onun yerine önerilen
/var/log/installer/syslog
dosyasına bakmak. Orada ilk satırdaki tarih ve saat bilgisi aradığımız bildi. Ama o satırda yıl yazmıyor. Onu da bu dosyanın yaratılma tarihinden ediniyoruz. ext2 ve ext3 dosya sistemlerinde dosyanın yaratılma tarihi tutulmuyor. Yeni nesil dosya sistemi ext4 ile bunun mümkün olduğu belirtilmiş. Ama şu anda ext3 kullanıyorken bu bilgiyi nasıl elde edebilirim? Çok güzel bir cevap şuradan gelmiş:
$ sudo tune2fs -l /dev/root | grep created
Filesystem created:       Thu Nov 19 11:35:37 2009
Yani dosya sisteminin yaratılma tarihinden. /var/log/installer/syslog'da ilk satırdaki tarih de Nov 19 09:17:54 idi. Ufak bir zaman sorunumuz var gibi görünse de syslog dosyasındaki zaman UTC, dosya sisteminin yaratılma tarihi bilgisi ise yerel saate göre tutulmuş. Yani bilgisayarımı kurmaya Türkiye saatiyle 11:17'de başlamışım, bir şekilde boot partition'ımı formatlamam 11:35'i bulmuş.

Parola sormayı kaldırmak
Windows Vista'nın UAC (User Account Control) benzeyen şekilde Ubuntu da yapılan bazı işlemlerde kullanıcıdan parola doğrulaması ister. Ne Vista'da ne de Ubuntu'da bu denetlemeyi devre dışı bırakmanın iyi bir fikir olduğunu sanmıyorum. Ama ille yapmak isteyenler için işte çözüm. Komut satırından şu komutu verin
sudo visudo
Açılan editörde sayfanın altlarına doğru inip
%admin ALL=(ALL) ALL
satırını bulup onu şu şekilde değiştirin:
%admin ALL=(ALL) NOPASSWD: ALL
Dosyayı kaydedin ve çıkın. Bundan sonra yapılan ayrıcalık gerektiren işlerde parola sorulmayacak.

Haftanın ilk gününü Pazartesi yapmak
Ubuntu'yu İngilizce olarak kullanmak isteyip de haftanın ilk gününü Pazartesi yapmak istedim. Bunun için şu adımları uyguladım.
Hafta başı Pazar günü

Önce hangi locale'i kullandığınıza bakalım:
$ locale
ANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=  
Görülüyor ki en_US'i kullanıyorum. Bu sebeple /usr/share/i18n/locales/ klasörünün altındaki locale dosyalarından en_US'i açıp düzenlemek gerekecek.
gksu gedit /usr/share/i18n/locales/en_US
Şöyle bir satır olmalı
week    7;19971130;7
first_weekday    1
first_workday    2
Buradaki first_weekday'i 1 yerine 2 yapmak gerekecek. Bundan sonra da şu komutla locale'leri güncellemek gerek
$ sudo locale-gen
Yeni locale'i kullanabilmek için gnome-panel'i tekrar başlatmak gerek. Bilgisayarı kapatıp açmaya alternatif olarak şu da yapılabilir.
$ killall gnome-panel
Bundan sonra saatin üzerine tıklayınca açılacak takvim, haftanın ilk gününü Pazartesi olarak gösterecek.

Hafta başı Pazartesi günü

Panel Tarih Formatını Değiştirmek
Eğer ekranın sağ üst köşesinde tarihin gösterilmesini seçtiyseniz tarih, varsayılan formatta gösterilecektir. Bu formatı değiştirmek istiyorsanız Alt+F2 ile Run Application diyaloğuna
gconf-editor 
yazıp
/apps/panel/applets/clock_screen0/prefs
altında
format=custom
atamasını yaptıktan sonra
custom_format
değerini gerekli şekilde değiştirmek gerekecek. Örneğin tarihi 25.Nov (Thu), 17:46 şeklinde göstermek için buraya yazılacak şey şöyle olacak:
%d.%b (%a), %H:%M
Bunlar hakkında ayrıntılı bilgi için komut satırında
man strftime
yazarak yardım alabilirsiniz.

Tarih ve Zaman için Türkçe Yerelleştirme Kullanmak
Üstte "Haftanın ilk gününü Pazartesi yapmak" başlığında locale komutuyla mevcut yerelleştirme ayarlarını görüntülemiştik. Buradan anlaşılacağı gibi LC_TIME ortam değişkenini değiştirerek tarih ve zaman gösterimi için Türkçe yerelleştirmesini kullanabiliriz. Bunu yapmak için önce localedef ile tr_TR.UTF-8'i derlememiz gerek.
sudo localedef -f UTF-8 -i tr_TR tr_TR.UTF-8
Bu adımdan sonra /etc/environment dosyasını root yetkileriyle açıp içine şu satırı eklemek gerek:
LC_TIME="tr_TR.UTF-8"
Bundan sonra yapılacak şey ise oturumu kapatıp tekrar açmak (killall gnome-panel işe yaramıyor!)



Çalışan Ubuntu 32 bit mi 64 bit mi?
Bunu anlamak için
$ uname -a
komutunu verip çıkışın sonundaki mimari bilgisine bakmak gerek. Örneğin 32 bitlik bir sistemde bu komutun çıktısı şu şekilde olurken
Linux user-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
64 bitlik bir sistemde ise şu şekilde olur
Linux user-desktop 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 17:01:44 UTC 2009 x86_64 GNU/Linux
İşlemcinin 64 bit desteği var mı?
Çalışan linux 32 bitlik. Ama işlemcinizin 64 bit desteği var mı, yok mu bilmek istiyoruz. Bunun için
$ cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc up rep_good pni monitor ssse3 lahf_lm
komutunu verip çıktıyı incelemek gerek. Bu komut işlemcinin özelliklerinden flags bilgisini süzer. Bu bilgilerin içinde işlemcinin desteklediği teknolojiler kısaltılmış olarak belirtilir. 64 bit desteği için lm (long mode) kısaltması aranmalıdır. lm varsa işlemcinin 64 bit desteği de var demektir.

Ekran kartımızın belleğini bulmak
Ekran kartımızın üzerinde ayrılmış bellek var mı, yoksa sistem belleğini mi paylaşıyorlar? Bunu bulmak için öncelikle
$ lspci | grep VGA
ile PCI veriyoluna bağlı cihazlar listesine VGA süzgeci uygulanmalı. Bu komutun çıktısı şuna benzer birşey olur

00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
Bu satırın başındaki 00:02.0 numarasını kopyalayın. Ardından şu komutu vererek ilgili slottaki cihazın ayrıntılarına ulaşın
$ lspci -vs 00:02.0
Bunun çıktısı da şunun gibi birşey olur
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
    Flags: bus master, fast devsel, latency 64
    Memory at e0000000 (32-bit, prefetchable) [size=16M]
Burada da ayrılmış bellek prefetchable kısmında yazandır. Eğer sistem ile ekran kartı arasında paylaşılan bir bellek alanı söz konusuysa bunu da non-prefetchable kısmında yazar. Yukarıdaki örnekte sadece prefetchable olarak (ayrılmış) 16M bir bellek var.

Sabit diskinizin tampon belleğini (buffer) bulmak
Bunu aslında Windows'da görebildiğim bir yer yok. Üçüncü parti yazılımlara başvurmak gerek. Ama linux'ta hdparm aracını kullanarak bulabiliriz. Şu komutu verelim (sda yerine uygun donanım ismini koyun)
$ sudo hdparm -i /dev/sda
Bunun çıktısı şuna benzer birşey olacak
/dev/sda:

 Model=VBOX, FwRev=1.0, SerialNo=VB41cc6c74-508c3c94
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=512, ECCbytes=0
 BuffType=DualPortCache, BuffSize=256kB, MaxMultSect=128, MultSect=128
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=41943040
 IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5 udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-1,2,3,4,5,6

 * signifies the current active mode
Burada kırmızı olarak işaretlenen alan BuffSize ile diskimizin tampon belleğini verir.

Sistemin ne zamandır açık olduğunu bulmak
Bunu yapmanın iki yolu var. Birincisi uptime komutunu kullanmak.
$ uptime
01:23:04 up  1:29,  2 users,  load average: 0.02, 0.06, 0.06
gibi bir çıktı üretir. Burada ilk verilen 01:23.04 sistem saatini, 1:29 ise sistemin 1 saat 29 dakikadır açık olduğunu gösterir. Diğer bir yol ise who komutunu -b anahtarı (en son boot zamanı) ile kullanmaktır.
$ who -b
         system boot  2010-03-23 23:54
Burada sistemin en son açılış zamanı tarih ve saat şeklinde verilmiş.

Sistemin kapatılma olaylarını listelemek
$ last -x | grep shutdown

Sistemin tekrar başlatma olaylarını listelemek
$ last reboot

Sistemin bütün açma, kapama, login vs. olaylarını listelemek
Bu işlerin kaydı /last/log/wtmp dosyasında tutulur. Ama bu dosya binary'dir. Bu veriye erişmek için last komutu geliştirilmiştir. Tüm kayıtları listelemek için şöyle bir komut kullanılabilir:
$ last -Fa
user1   pts/0        Tue Mar 23 23:55:05 2010   still logged in       :0.0
user1   tty7         Tue Mar 23 23:54:44 2010   still logged in       :0.0
reboot  system boot  Tue Mar 23 23:54:34 2010 - Wed Mar 24 01:49:34 2010  (01:55)     2.6.31-20-generic

Burada en alttaki reboot kelimesiyle başlayan satırda verilen ilk tarih bilgisayarın açılış tarih/saati, ikinci tarih ise şu andaki tarih/saattir. Bunun üzerindeki iki satırda ise user1 kullanıcısına ait iki oturum gözüküyor: tty7 ve pts/0. tty7, grafik arayüzü kullanarak açtığımız oturumu gösteriyor. pts/0 ise açtığımız ilk terminal arayüzünü. Eğer birden fazla terminal açılırsa bu pts/1, pts/2 diye gider. Bu iki oturuma ait bir son tarih olmadığına dikkat. Still logged in, yani hala oturumu açık. Benzer bir bilgi w komutu ile de elde edilebilir. Sistemde hangi kullanıcılar var, neleri kullanıyorlar, sistem ne zamandır açık, 1 dk, 5 dk ve 15 dk'lık sistem yükü başlıkta görüntülenir.
$ w
11:35:08 up 29 min,  3 users,  load average: 0.00, 0.01, 0.08
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty7     :0               11:09     ?    17.52s  0.30s gnome-session
user1    pts/0    :0.0             11:09    0.00s  0.28s  0.01s w
user1    pts/1    :0.0             11:12    6:33   0.27s  0.27s bash

Hangi süreç hangi bağlantıyı yapmış
Sysinternals'ın Windows araçları olan Process Explorer, Process Monitor ve TCP View gibi araçların Linux eşdeğerlerinin olmasını isterdim. Herhalde Mark Russinovich gibi bir uzmana sahip olmak her işletim sisteminin sahip olacağı bir şans değil. Neyse, Process Explorer'ın eşdeğeri sayılabilecek (onun grafik işlevselliği değil ama ona yakın bir işlevsellik) top ve htop var. Process Monitor'un benzerini bulamadım. Ama en son TCP View'un işlevselliğini ss (socket statistics)'de buldum.
$ ss -pr
State  Recv-Q Send-Q      Local Address:Port           Peer Address:Port   
ESTAB  0      0      my-desktop.local:45910       dns.bosb.org.tr:www   users:(("firefox",1806,46))
ESTAB  0      0      my-desktop.local:45398  ey-in-f102.1e100.net:www   users:(("firefox",1806,61))
ESTAB  0      0      my-desktop.local:45909       dns.bosb.org.tr:www   users:(("firefox",1806,28))
ESTAB  0      0      my-desktop.local:45914       dns.bosb.org.tr:www   users:(("firefox",1806,63))
ESTAB  0      0      my-desktop.local:45911       dns.bosb.org.tr:www   users:(("firefox",1806,47))
ESTAB  0      0      my-desktop.local:39247 www.meteoroloji.gov.tr:www  users:(("firefox",1806,68))
ESTAB  0      0      my-desktop.local:45915       dns.bosb.org.tr:www   users:(("firefox",1806,64))
ESTAB  0      0      my-desktop.local:45912       dns.bosb.org.tr:www   users:(("firefox",1806,54))
ESTAB  0      0      my-desktop.local:39246 www.meteoroloji.gov.tr:www  users:(("firefox",1806,65))
Eğer ters isim çözümlemesi istenmiyorsa -r anahtarı kullanılmayabilir. -p anahtarı süreç bazında ağ hareketlerini izlemek için kullanılıyor. Ama onun yerine dinlemedeki portları listelemek için ise -l anahtarı kullanılabilir. Linux dünyasının grafik arayüz deneyiminden uzak komut satırına takılması garip. top/htop ve ss... Process Explorer'ın grafik arayüz olmadan ne kadar kullanışsız olacağını düşünün...

IPv6'i devre dışı bırakmak
Kısaca /etc/modprobe.d/blacklist dosyasını açarak içine blacklist ipv6 ekleyin. Kaydettikten sonra sistemi tekrar başlatın.

Beep'i kapatmak
Eğer sistemin bip sesi canınızı sıkıyorsa kapatmak için /etc/sysctl.conf dosyasının içine hw.syscons.bell=0  ekleyin.

Bir sonraki açılışta dosya sistemi denetlemesi yaptırmak
Boot partition belli aralıklarla tutarlılık denetlemesinden geçse de istediğiniz zaman bunu yaptırmak için şu komutu kullanabilirsiniz (ubuntuforums):
sudo touch /forcefsck
ya da şu adreste anlatıldığı gibi
shutdown -rF now
da olur.

Configuration Editor ile Gedit'in kullandığı kodlamayı değiştirmek
Ubuntu'yu (ve diğer işletim sistemlerimi) İngilizce kullandığımdan, genelde Türkçe karakter seti (ISO-8859-9) ile kodlanmış metin dosyalarını -gedit ile- açtığımda Türkçe karakterlerin bozulduğunu görüyorum. Bunu düzeltmek için Configuration Editor ile gedit'in kullandığı karakter setine ek yapmak gerek. Önce Configuration Editor'u açmak için Ubuntu'nun sol üst köşesindeki logusuna sağ tıklayıp "Edit Menus" komutunu verdim. Açılan Main Menu diyaloğunda ise sol taraftaki System Tools'u seçtikten sonra sağ taraftaki Configuration Editor'un checkbox'ını işaretledim. Close ile diyaloğu kapattıktan sonra Applications>System Tools altında Configuration Editor çıktı. Bunu çalıştırıp -Windows'daki regedit'e benzer bir bakıma- /apps/gedit-2/preferences/encodings altındaki auto_detected ve shown_in_menu kısımlarına ISO-8859-9'u ekledim. auto_detected kısmına yapılan ek, açılan dosyanın kodlamasının listedeki sıraya göre otomatik olarak algılanmasını sağlıyor. Bu sebeple eklediğimiz ISO-8859-9'un UTF-8'in altında olması uygun olacaktır (Current'ın üstünde). shown_in_menu ise Open/Save diyaloglarında açılan/kaydedilen dosyanın kodlamasını elle değiştirmek istersek Türkçe'nin de listelenmesi için.

Normal kullanıcıların Truecrypt'i kullanma yetkisi
Varsayılan kurulumlarda kullanıcıların Truecrypt disklerini mount etmesi için root yetkileri gerekir. Eğer sıradan bir kullanıcının root yetkileri olmadan bunu yapmasını istiyorsak önce bir grup yaratıp o gruba gerekli yetkileri verip, ardından istediğimiz kullanıcıyı bu grubun üyesi yapacağız. truecrypt adında bir grup yaratalım.

$ sudo groupadd truecrypt
Şimdi de /etc/sudoers dosyasını visudo kullanarak düzenleyeceğiz.
$ sudo visudo
Dosyanın sonuna şu satırları ekleyelim
# truecrypt group access truecrypt as root
%truecrypt ALL=(root) NOPASSWD:/usr/bin/truecrypt
Şimdi de istediğimiz kullanıcıyı bu grubun üyesi yapalım.
$ sudo gpasswd -a <username> truecrypt
Bitti.

Ekleme [02.09.2016]: Bir süredir ilk seferde mount etmede sorun yaşıyordum. Truecrypt 2 dakika kadar donduktan sonra "Failed to set up a loop device" hatası veriyordu. ArchLinux gibisi var mı! Yardımı onların wikisinde buldum. Sorun loop modülünün yeni linux kernel'lerinde varsayılan olarak yüklenmemesinden kaynaklanıyor(muş). Kalıcı çözüm:

# tee /etc/modules-load.d/truecrypt.conf <<< "loop"
ile loop'u başlangıçta yüklenmsini sağlamak ve örneğin 8 adet loop device'ı yaratmak:

# echo "options loop max_loop=8" > /etc/modprobe.d/eightloop.conf
Bundan sonra da bi reboot etmek.

Ubuntu Lucid'deki Evolution Mail simgesinden kurtulmak
Ubuntu 10.04'te sağ üst köşede bir mektup simgesi geldi. Evolution mail'deki hesaplarınıza yeni mesajın geldiğini bildiren bir simge. Kullanmadığım için kaldırmak istedim. Adımları şu siteden aldım. Evolution Mail simgsi ile birlikte Network Manager ve Volume Control simgelerinin de içinde bulunduğu nesnenin adı Indicator Applet. Evolution Mail simgesine sağ tıklayıp Remove From Panel diyerek sadece Evolution simgesinden değil, tüm Indicator Applet'ten kurtuluyoruz. Bu istediğimiz birşey değil. Bunun yerine önce
$ sudo apt-get remove evolution-indicator
ile Evolution'ı Indicator Applet'ten kaldırıyoruz. Tüm mesaj bildirimlerinden kurtulmak için
$ sudo apt-get remove indicator-messages
kullanılabilir. MeMenu'den de kurtulmak için
$ sudo apt-get remove indicator-me
kullanılabilir. Bunlardan sonra hiçbir şey değişmemiş gibi gelebilir. Panel'i tekrar başlatmamız gerek. Bunun için de
$ killall gnome-panel
komutunu kullanmalıyız.

Pencere düğmelerini eski yerine taşımak
Yeni sürümde pencereyi kapatmak, simge durumuna küçültmek ve tam ekran yapmak için kullanılan düğmeler pencerenin sol üst köşesine taşındı. İlle de eski yeri olsun diyenler için Alt+F2 ile çalıştır açılaran gconf-editor yazılıp enter'a basılır. /apps/metacity/general/ yolundan button_layout'a gidilerek değeri menu:minimize,maximize,close şeklinde değiştirilir. Burada
menu: Pencerenin sistem menüsünün sırasını
minimize: Pencereyi simge durumuna küçülten düğmenin sırasını
maximize: Pencereyi tam ekran yapan düğmenin sırasını
close: Pencereyi kapatan düğmenin sırasını
İki nokta üst üste (:) ise düğmelerin sağ veya solda olma durumunu belirler.
İki nokta üst üste (:) bir nevi pencerenin başlık çubuğunu simgeler. Eğer önce minimize, maximize ve close'u yazdıktan sonra iki nokta üst üsteyi en sona eklerseniz bu, düğmeler solda olsun, sonra pencerenin başlık çubuğu olsun anlamına gelir. Ya da kapat düğmesini diğer düğmelerden ayırarak sistem menüsü kullanmadan diğer düğmeleri sağa taşımak için close:minimize,maximize yapmak yeterli olur.

TCP/IP yapılandırması
eth0 üzerindeki mevcut IP yapılandırmasını görmek için
ifconfig eth0
eth0'ya statik bir IP adresi vermek için
sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
eth0'ya ikinci bir statik IP adresi vermek için
sudo ifconfig eth0:1 192.168.2.2 netmask 255.255.255.0
Varsayılan ağ geçidi belirlemek için
sudo route add default gw 192.168.1.1
Yeni bir route eklemek için (172.16.0.0/16 ağına geçiş için 192.168.3.1 geçidini kullan)
sudo route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.3.1
Kalıcı ayarların saklandığı dosya
/etc/network/interfaces
Bu dosyanın eth0 üzerindeki iki statik IP adresi için muhtemel içeriği
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 192.168.1.2
  netmask 255.255.255.0
  gateway 192.168.1.1

auto eth0:0
iface eth0:0 inet static
  address 192.168.2.2
  netmask 255.255.255.0
Bu dosyada bir değişiklik yapıldıktan sonra servisleri tekrar başlatmak için
sudo /etc/init.d/networking restart
DNS sunucuların yazıldığı dosya
/etc/resolv.conf
eth1'i DHCP'den IP almaya ayarlamak için
ifconfig eth1 dynamic
En son DHCP kiralaması ile ilgili bilgilerin saklandığı dosya
/var/lib/dhcp3/dhclient.leases
Kablosuz arayüzler hakkında bilgi almak için
iwconfig
Etraftaki kablosuz ağları aramak için
iwlist wlan0 scan
Ubuntu CD'sinin sürümünü bulmak
Kurulu bir Ubuntu sistemin sürümünü bulmak için
cat /etc/lsb-release
olduğunu biliyordum. Ama üzerinde hiçbir şey yazmayan bir Ubuntu CD'sinin sürümünü nasıl bulacağımı yeni öğrendim. Bunun için CD'nin içindeki dists klasörünün altında sürüm kod adına ait (örneğin lucid) bir klasör bulunur. Bu klasörün içinde de Release dosyasında ayrıntılı bilgiler vardır.

Hiç yorum yok: