Cumartesi, Aralık 21, 2013

inetd ve xinetd

Linux kullanan bilgisayarlar genelde sunucu olarak kullanılırlar, diğer bilgisayarların çoğu da en azından internet bağlantısına sahiptir. Böyle sistemlerde ağ güvenliği çok önemlidir çünkü yanlış yapılandırma sisteminize girişin yolunu açabilir.

Süper Sunucular (Super server): Çoğu ağ sunucusu ağ portlarını açar ve bağlantılar için bu portları dinler. Bazı programlar bu işi yapması için süper sunucuları kullanırlar. Süper sunucu başka programlar için ağ bağlantılarını dinler ve bağlantı sağlandığında kontrolü esas programa verir. Bunu avantajları şu şekildedir:

*Bellekte daha az yer kaplar.
*Güvenlik. Süper sunucuya güvenlik seçenekleri atanabilir.

İki tane önemli süper sunucu vardır: inetd ve xinetd. inetd'nin güvenlik seçenekleri TCPWrappers isimli bir paket yardımı ile yapılırken xinetd'nin güvenlik özellikleri kendi bünyesinde bulunur.

inetd'yi Yapılandırmak
Bilgisayarınızda hangi süper sunucunun çalıştığını öğrenmek için ps aux | grep inetd komutunu kullanabilirsiniz. bu komut inetd ya da xinetd içeren bir satır döndürür ekrana.

 inetd'yi Ayarlamak

inetd aracılığı ile çalışan sunucuları /etc/inetd.conf ya da /etc/inetd.d aracılığı ile kontrol edersiniz. /etc/inetd.conf dosyası satırlardan oluşan bir dosyadır ve her satır bir sunucuya karşılık gelir.

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l

Tek bir /etc/inetd.conf dosyası kullanmak yerine inetd'nin son versiyonları yapılandırma dosyalarını /etc/inetd.d dizinin altında birden fazla dosyada tutmanıza izin verir. Böyle yapmak bir sunucuyu ekleme, değiştirme ya da silme işleminde direkt o dosyayı kullanmanızı sağlayarak kolaylık sağlar.

Her satır bir ya da daha fazla boşluktan oluşan alanlardan oluşur. Bu alanların anlamları aşağıdaki gibidir.

Servis adı İlk alan (örnekteki ftp) /etc/services dosyasında bulunduğu gibi servisin adıdır.

Soket tipi Soket tipi sistemin ne çeşit bağlantı tipi beklediğini gösterir - güvenilir iki yönlü bağlantı (stream), daha az ek yükü olan daha az güvenilir bağlantı (dgram), ağa alt seviye bağlantı (raw) ya da bunu gibi şeyler. Bu tipler arasındaki farklar oldukça teknik olduğu için bunu yazarken dikkat edilecek şey sunucunun belgelendirmesinde yazılan doğru değeri buraya girmektir.

Protokol ​ Bu satır kullanılan TCP/IP protokolünden hangisinin kullandığını belirtir, genelde tcp ya da udp.
 ​
Wait/no wait ​ dgram soket tipleri için bu girdi sunucunun istemciye bağlanıp soketi serbest bırakmasını (nowait) ya da bütün paketleri işleyip sonra serbest bırakmasını (wait) belirler. Diğer soket tiplerini kullanan sunucularda bu alan nowait olarak belirlenmelidir.

Kullanıcı Bu sunucuyu çalıştıracak kullanıcıdır. root ya da nobody kullanıcıları yaygın seçeneklerdir ama diğer seçenlerde kullanılabilir. Genel bir kural olarak uygun olduğu her durumda sunucuları olabilecek en düşük haklara sahip kullanıcı ile çalıştırmanız güvenlik önlemi olarak işe yarar. Bazı sunucular root erişimini talep edebilir, bunun için sunucunun belgelendirmesini kontrol etmeniz gerekir.

Sunucu adı Bu sunucunun dosya adıdır. Bizim örneğimizde bu /usr/sbin/tcpd yani TCP Wrappers programının konumudur. Programları inetd aracılığıyla çalıştırmak güvenlik için önemlidir.

Parametreler Sunucu adından sonra gelen her şey sunucuya gönderilen parametreleri içerir. Eğer TCP Wrappers kullanıyorsanız bu kısımda diğer parametrelerle birlikte gerçek hedef sunucuyu da buraya eklemeniz gerekir. (/usr/sbin/in.ftpd)

# sembolü /etc/inetd.conf için yorum satırını ifade eder. Bu sebeple eğer inetd ile çalışan bir sunucuyu devre dışı bırakmak isterseniz satır başına # eklemeniz gerekmektedir. Eğer bir sunucuyu inetd.conf dosyasına eklemek istiyorsanız bunun için bir girdi oluşturmanız gerekir. Çoğu sunucu belgelendirmesinde örnek bir inetd girdisini bulundurur. inetd ile gelen çoğu dağıtım yaygın sunucuların girdilerini inetd.conf dosyasına koymuştur ama çoğu yorum satırı olarak bulunur, sunucuları başlatmak için # işaretini kaldırıp sunucuyu aktive edebilirsiniz.

inetd.conf dosyasını değiştirdikten sonra inetd süper sunucunu tekrar çalıştırmanız gerekir. Bu süper sunucu normalde standart SysV sunucusu gibi çalışır bu sebeple şöyle bir şey yazarak tekrar başlatabilirsiniz:

# /etc/rc.d/init.d/inetd restart

Buna alternatif olarak sunucuyu yeniden başlatmak yerine inetd'ye yapılandırma dosyasını yeniden okumasını söyleyebilirsiniz. (SysV startup betiği ile) Yeniden başlatma sunucuyu kapatıp tekrar başlatır. Yeniden yüklemede ise sunucu çalışmayı durdurmaz sadece yapılandırma dosyasını tekrar okur ve değişiklikleri uygulamaya koyar. Pratik olarak ikisi birbirine benzer. Yeniden başlatma seçeneği genelde değişiklikleri daha doğru şekilde uygulamaya koyarken aynı zamanda var olan bağlantıların bölünmesine sebep olabilir.
SysV startup betiğini kullanmak yerine kill ya da killall komutlarını SIGHUP sinyaliyle birlikte inetd için kullanabilirsiniz. Bu sinyal inetd'de dahil olmak üzere çoğu sunucuya yapılandırma dosyalarını yeniden okumaları işine yarar.
kill -HUP pid (eğer süreç id'sini biliyorsanız)
killall -HUP inetd

TCP Wrappers Aracılığı ile Erişimi Kontrol Etmek

TCP Wrappers paketi tcpd olarak bilinen bir programı sunar. inetd'nin sunucuyu direkt çağırması yerine inetd tcpd'yi çağırır ve bu da iki şey yapar: İstemcinin sunucuya erişmek için yetkisinin olup olmadığını kontrol eder ve eğer istemcinin yetkisi varsa tcpd sunucu programını çağırır.

TCP Wrappers iki dosya aracılığı ile yapılandırılır: /etc/hosts.allow ve /etc/hosts.deny

Bunların ilki sisteme bir şekilde erişimine izin verilen bilgisayarları belirler, burada listelenmeyen sistemlerin erişiminin yasaklandığı anlamına gelir. Diğer dosya ise sisteme erişimin izin verilmediği bilgisayarları listeler, diğer herkes siteme erişebilir. Eğer bir bilgisayar her iki dosyada listelenmişse hosts.allow önceliklidir.
İki dosyada aynı basit biçimi kullanır. Dosyalar aşağıdaki biçimdeki satırları içerir:

daemon-list : client-list

daemon-list sunucuların bir listesidir, /etc/services dosyasında bulunan sunucu isimlerini kullanır. ALL gibi bazı özel biçimleri de kullanılabilir.
client-list belirli daemonlar için erişimin izin verildiği ya da reddedildiği bilgisayarların listesidir. Bilgisayarları isimlere ya da IP adreslerine göre yazabilirsiniz ve ağları belirtirken . işaretini kullanabilirsiniz. Örneğin;

.luna.edu satırı luna.edu alan adında olan tüm bilgisayarları reddeder.
192.168.7. satırı 192.168.7.0/24 ağındaki tüm bilgisayarları reddeder.

Client-list'te ALL gibi kelimeler kullanılabilir. EXCEPT istisna oluşturmaya yarar. Örneğin;

ALL: .foobar.edu EXCEPT terminalserver.foobar.edu

Satırı terminal.foobar.edu dışındaki tüm .foobar.edu alan adını kabul eder.

Daha fazla bilgi edinmek için hosts.allow ve hosts.deny'ın man sayfalarına bakabilirsiniz. (Bunlar aynı man sayfasıdır.)

xinetd'yi Yapılandırmak

xinetd programı genişletilmiş bir süper sunucudur. inetd'nin fonksiyonelliğini ve buna ek olarak TCP Wrappers'a benzeye güvenlik seçenekleri sunar.
xinetd'yi Ayarlamak

/etc/xinetd.conf dosyası xinetd'yi kontrol eder. xinetd'yi varsayılan olarak kullanan dağıtımlarda bu dosya sadece global varsayılan seçenekleri ve /etc/xinetd.d içine dosyaları eklemek için bir talimat içerir. xinetd aracılığı ile çalışması gereken sunucu kendi yapılandırma seçeneklerini içeren dosyayı /etc/xinetd.d dizinine eklemelidir.
Sunucunun yapılandırma seçenekleri ister /etc/xinetd.conf dosyasında ister /etc/xinetd.d dizini altında olsun, bu seçenekler inetd.conf dosyasında bulunanlara benzer bilgiler içerir. Ama xinetd yapılandırma dosyası bilgileri birden fazla satıra yayar ve daha ayrıntılı şekilde etiketler.
inetd.conf dosyasında bulunan satırın xinetd.conf karşılığı:

service ftp
{
socket_type        = stream
protocol        = tcp
wait            = no
user            = root
server            = /usr/sbin/in.ftpd
server_args        = -l
}

xinetd.conf dosyasında fazladan önemli bir parametre bulunur: disable. Eğer disable=yes satırını eklerseniz xinetd bu girdiyi yoksayar. Bazı sunucular startup dosyalarını /xinetd.d içine yükler ve varsayılan olarak disable=yes seçeneğini atar. Bu sunucuyu çalıştırmak için satırı disable=no olarak değiştirmeniz gerekir. Ayrıca bir dizi sunucuyu aynı anda ana xinetd.conf dosyasının içindeki defaul bölümünün içinde disabled satırına ekleyerek devre dışı bırakabilirsiniz.
inetd'de olduğu gibi xinetd'de de yapılandırmada değişiklik yaptığınızda süper sunucuyu tekrar başlatmanız gerekir.

# /etc/rc.d/init.d/xinetd restart

inetd'de olduğu gibi betik yardımıyla xinetd'nin yapılandırma dosyasını yeniden okumasını sağlayabilir ya da kill ve killall komutlarına SIGHUP sinyalini göndererek aynı işi yaptırabilirsiniz.

xinetd ile Erişimi Kontrol Etmek
Güvenlik /etc/xinetd.conf ya da sunucu-spesifik yapılandırma dosyalarında kullanılan yapılandırma parametreleriyle sunucu-sunucu temeliyle halledilir.

Ağ arayüzü bind seçeneği servis için xinetd'ye sadece bir ağ arayüzünden dinlemesini söyler. Bunu bir sunucuyu sadece loopback arayüzüne bağlayarak, sunucuyu sadece yerel olarak kullanılabili hale getirebilirsiniz.

Kabul edilen IP ya da ağ adresleri only_from seçeneğine IP adreslerini, ağları (192.168.78.0/24 gibi) ya da bilgisayar isimlerini yazarak xinetd'nin sadece bu adreslerden erişimi kabul etmesini sağlayabilirsiniz, TCP Wrappers'ın hosts.allow'da yaptığı gibi.

Kabul edilmeyen IP ya da ağ adresleri no_access seçeneği only_from'un tersidir; kara listeye eklemek istediğiniz bilgisayar ve ağları buraya yazarsınız. TCP Wrappers'ın hosts.deny dosyasına benzerdir.

Erişim zamanları access_times seçeneği hangi kullanıcıların sunucuya erişebileceği zamanı atar. Zaman aralığı şu şekilde belirlenir: saat:dakika-saat:dakika, 24 saatlik saate göre. Bu seçenek sadece hangi sunucunun o zaman aralığında yanıt vereceğini belirler. Eğer xinetd access_time seçeneği 8:00-17:00 olarak atanmışsa 16:59'da sisteme login olan birisi sistemin cevap verme süresinin dolduğu 17:00 saatinden sonra da kullanmaya devam edebilir.

Bu seçenekleri /etc/xinetd.d dizininde bulunan ve korumak istediğiniz sunucuya ait olan dosyaya girmelisiniz. Satırları service{} arasındaki yere yerleştirmelisiniz. Eğer bütün xinetd tarafından kontrol edilen sunucularınızı korumak istiyorsanız bu satırları /etc/xinetd.conf dosyasına yerleştirebilirsiniz.

Yerelleştirme ve Internationalization Yapılandırması

Linux kendi içinde UTC zaman ayarını kullanır ama muhtemelen kendi bilgisayarımızda yerel saati kullanıyor oluruz. Bu ikisi arasında dönüşüm yapılması gerekir. Bu dönüşümü yapabilmek için Linux kullanıcının yerel saatini /etc/localtime (Debian ve türevlerinde düz metin formatında /etc/timezone altında ikincil bir dosya bulunur, bu dosyanın Fedora ve onun gibi dağıtımlardaki adı /etc/sysconfig/clock tur) tutar ve gerektiğinde buraya bakar. localtime dosyası düz metin formatında olmayan az sayıdaki yapılandırma dosyalarından biridir. Bilgisayarınızın kullandığı saat dilimini görmek için date komutunu kullanabilirsiniz.

$ date
Cts Ara 21 18:23:16 EET 2013


EET özel bir üç harfli zaman kodudur ve bulunduğunuz konuma göre değişir.

$ cat /etc/timezone
Europe/Istanbul


Bu dosyada gördüğünüz gibi kullandığım yerel saatin nereye göre olduğu yazıyor. Zaman dilimlerine bakmak için /usr/share/zoneinfo/Ulke/Bolge ya da Sehir şeklinde istediğiniz yeri arayabilirsiniz. Bu dosya hızlıca zaman diliminize bakmanıza izin verir.

Locale'inizi Sorgulamak ve Ayarlamak

Bilgisayarınızı yerelleştirmek için locale nedir ne değildir bilmeniz gerekir. Locale dil, ülke ve bu gibi bilgileri tutar. Bilgisayarınızda bu bilgiyi öğrenmek için locale komutunu kullanmanız yeterlidir. Kullanılabilir bütün locale değişkenlerini öğrenmek için locale -a komutunu kullanırsınız.

Locale değişkenlerinin içinde şu bilgiler bulunur:
[dil[_ülke][.kodlamastandardı][@modifier]]

Bizim ülkemiz için bu örnek olarak tr_TR.UTF-8 şeklindedir.

Kodlama standartları (codeset) ASCII, ISO-8859 ya da UTF-8 olabilir. ASCII az sayıda dili destekler. ISO-8859 ASCII'nin geliştirilmiş halidir ama diller için ayrı alt bölümler sunar. (ISO-8859-1 gibi) Bu sebeple alt bölümler istediğiniz diğer dilleri desteklemeyebilir. UTF-8 geniş bir dil desteği sunar.

Geçiçi olarak locale değişkenlerini değiştirmek için LANG ve LC_ALL çevre değişkenlerini değiştirmeniz yeterlidir. Ama bunları değiştirdiğinizde bu değişiklik sadece o oturum için ve o konsoldan açılan programlar için geçerli olacaktır ve halihazırda açık olan programları etkilemeyecektir. Bunu yapmak için .bashrc ya da /etc/profile dosyasını düzenlemeniz gerekir. X'in yapılandırma dosyası klavyenin InputDevice bölümünde XkbLayout seçeneği ile locale değişkeninizi değiştirebilmeyi sağlar ama orada hepsini küçük harfle girmeniz gerekir. (tr_TR.UTF-8 yerine tr_tr.utf-8 gibi) Bu değişikliğin geçerli olabilmesi için X'i yeniden başlatmanız gerekir.

Bazen bilgisayarınızda sistemin ürettiği bir dosyanın kodlaması dosyayı işleyecek başka bir program tarafından desteklenmeyebilir. (Kullandığınız metin editörü UTF-8 i destekleyip ISO-8859 u desteklemeyebilir.) Bu problemi aşmak için iconv komutu kullanılır.

iconv -f encoding [-t encoding] [inputfile]...

-f ve -t kaynak ve istenilen kodlama standartlarını belirtir. Eğer istenilen kodlama standartını belirtmezseniz iconv yerel ayarlarınızda bulunan seçeneği alır.

iconv -f iso-8859-1 -t UTF-8 dosya_iso.txt > dosya_utf.txt


Cuma, Aralık 20, 2013

Linux Sistem Yönetimi - Kullanıcı ve Gruplar

Sistemi Yönetmek

Linux sistem yönetiminde günlük işler içerisinde kullanıcı ve grupları oluşturmak, silmek, bulundukları ortamları ayarlamak bulunur. Küçük sistemlerde bu işlem çok sık olmasa da büyük sistemlerde sıkça gerçekleşir ve her halükarda bunların bilinmesi önemlidir. Diğer bir günlük iş ise log dosyalarını yönetmek ve incelemektir. Her şeyin olması gerektiği gibi çalıştığını kontrol etmek için log dosyalarını düzenli olarak kontrol etmelisiniz.
Çoğu Linux görevi zamanla ilgilidir. Linux zamanı diğer işletim sistemlerinden farklı kullanır ve ve Linux'un zamanı nasıl kullandığını bilmek önemlidir.

Kullanıcıları ve Grupları Ayarlamak

Linux "hesap" mantığına dayanan çok kullanıcılı bir sistemdir - veri yapıları ve prosedürler sistemde bulunan kullanıcıları belirlemek için kullanılır. Bu hesapları yönetmek çok temel aynı zamanda çok önemli bir iştir.

Linux Kullanıcı Adlarını Anlamak

Linux kullanıcı adları konusunda oldukça esnektir. Büyük/küçük harfler, rakamlar, bazı işaretler ve boşluklar kullanılabilir. Ama boşluk bazen sorun yaratabilir. Ayrıca kullanıcı adları bir harfle başlamak zorundadır.

45u - yanlış
u45 - doğru

Kullanıcı adlarında harflerin büyük ve küçük olmasına duyarlılık vardır. Yani tugce ve Tugce isimli iki ayrı kullanıcı bir sistemde barınabilir.  (Karışıklık yaratabileceği için böyle bir şey yapılmaması daha iyidir)

Kullanıcıları bir araya getirerek Gruplar yardımıyla Verimliliği Sağlamak

Linux grupları kullanıcıları organize etmek için kullanır. Çoğu yönden gruplar kullanıcılara benzer. Benzer yapılandırma dosyaları ile tanımlanırlar, benzer isimler taşırlar ve hesaplar gibi kendilerine ait numaraları olur.

Ama gruplar hesap değildir. Gruplar (genelde güvenlik nedeniyle) hesapların bir araya toplanmasıdır. Örneğin bir gruba bir dosyayla ilgili özel izinler verilebilir, böylece o gruba ait kişiler o dosyaya erişebilirken o gruba ait olmayan kişiler erişemez. Linux çoğu donanıma da dosyalarla eriştiği için aynı işlemi donanıma erişim konusunda da gerçekleştirebilirsiniz.

Her grup sıfır ile bilgisayardaki tüm hesapların sayısı kadar üye barındırabilir. Grup üyeliği /etc/group dosyası aracılığıyla kontrol edilir. Bu dosya grupların bir listesi ile gruplara bağlı olan kullanıcıları içerir.

Her hesabın birincil grubu bulunur. Bu /etc/group yerine /etc/passwd içinde bulunur. Bir hesap oluşturulduğunda bu hesaba birincil grup atanır. Kullanıcı dosya oluşturduğunda ya da programları çalıştırdırdığında bunu bulunduğu birincil grubun haklarıyla yapar. Ayrıca kullanıcı diğer gruplara ait olduğu sürece ve o grupların erişim izni olduğu sürece diğer dosyalara da erişebilir. Kullanıcı bir programı başka bir grubun haklarıyla çalıştırmak isterse bu gruba geçiş yapmalıdır.

$newgrp grup2

Bu komutla grup2 grubuna geçiş yapılabilinir.Buna alternatif olarak kullanıcı dosyaları başka bir grup haklarıyla oluşturmak istiyorsa chgrp ya da chown ile bunu gerçekleştirebilir.

$chgrp grup2 dosyaadi
$chown kullanici2 dosyaadi

UID ve GID'leri Kullanıcılar ve Gruplarla İlişkilendirmek

Linux kullanıcıları ve grupları numaralarla tanımlar, bunlar kullanıcı ID (user ID - UID) ve grup ID (group ID - GID) olarak bilinir. Linux kendi içinde kullanıcı ve grupları isimlerine göre değil numaralarına göre takip eder.

kullanıcı adı:tugce
UID: 512
grup adı: grup1
GID: 503

Biz kullanıcı ve grupları isimleriyle ayrıştırırken Linux /etc/passwd ya da /etc/group tan isimle bağlantılı numarayı alarak bunu kullanır. Bazen Linux'un bu numaraları neye göre verdiğini bilmeniz gerekebilir.
Linux dağıtımları 0-99 arasındaki numaraları sistem kullanımı için olan kullanıcı ve gruplar için ayırırlar. Bunların en önemlisi 0'dır ve root kullanıcısı ve root grubuna karşılık gelir. 0-99 arasındaki tüm numaralar kullanılmaz.
100'den sonraki numaralar sıradan kullanıcı ve grupların kullanımı içindir. Ama çoğu Linux dağıtımı 500 ya da 1000'e kadar numarayı özel amaçlar için ayırabilir. Yeni hesaplar ürettiğinizde sistem sıradaki en yüksek numarayı bu hesaba atar. Eğer dağıtımınız 500'e kadar özel amaçlar için ayırmışsa oluşturacağınız kullanıcının UDI'si 500 olacaktır. Kullanıcı silindiğinde bu hesabın numarası tekrar kullanılabilir ama numaralar otomatik atandığı için arada atlamalar oluşacaktır. Eğer sisteminizde çok fazla kullanıcı yoksa ve UID gerekmiyorsa bu atlamalar sizin için çok önemli olmayacaktır. (2.2.x kernellerinde sınır 65.536, 2.4.x kernelleri ve sonrasında sınır 4.2 milyardan fazladır. Ama bu limit yapılandırma dosyasında kısıtlanabilir.) Eski kullanıcının UID'sini kullanmak eğer o kullanıcıya ait tüm dosyalar silinmediyse bir karışıklığa yol açabilir, yeni kullanıcı eski kullanıcının silinmeyen dosyalarına erişebilir.

*Genel olarak GID 100 bazı dağıtımlarda varsayılan kullanıcılar grubudur.

Aynı UID'ye sahip birden fazla kullanıcı adı oluşturmak ya da aynı GID'ye sahip birden fazla grup adı oluşturmak mümkündür. Bazı açılardan bunlar farklı kullanıcı ve gruplardır ve /etc/passwd ya da /etc/group altında farklı satırlarda yer alırlar böylece kendilerine ait home dizinleri, parolaları olabilir. Ama kullanıcı ve gruplarda aynı ID kullanıldığında dosya izinleri konusunda sistem bunlara aynıymış gibi davranır.

NOT: 0 UID'sine sahip her kullanıcı root ve bir süper kullanıcıdır.

Kullanıcı Hesaplarını Yapılandırmak

Sistemde ne kadar sıklıkla kullanıcı işlemleri yapacağınız bulunduğunuz sisteme göre değişse de bu işlemleri (ekleme, değiştirme, silme ) yapabilmek önemlidir.

Kullanıcı Eklemek

Kullanıcı eklemek useradd komutuyla gerçekleştirilir.

useradd [-c comment] [-d home-dir] [-e expire-date] [-f inactive-days]➦
[-g default-group] [-G group[,...]] [-m [-k skeleton-dir] | -M]➦
[-p password] [-s shell] [-u UID [-o]] [-r] [-n] username

-c Yorum için. Kullanıcının gerçek ismi, email adresi, telefonu vb. gibi bilgiler girilebilir.
-e YYYY-AA-GG şeklinde yazılır.

Kullanıcı Hesaplarını Değiştirmek

Kullanıcı hesapları birçok yönden değiştirilebilir: /etc/passwd gibi kritik dosyaları düzenleyebilir, hesabın home dizininde bulunan kullanıcı-spesifik dosyaları değiştirebilir ya da hesapları oluşturmak için kullanılan sistem araçlarını kullanabilirsiniz. Genelde hesaplar kullanıcının isteğine ya da yeni bir kuralı uygulamak ya da home dizinlerini yeni bir hard diske taşımak gibi sistem değişiklikleri için değiştirilir. Bazen hesaplar oluşturulduktan hemen sonra değiştirilmesi gerekebilir ve bu değişiklikler kullanıcı oluşturmada kullanılan araçlarla kolayca yapılmaz çünkü değişmeye gerek duyulmasının sebebi useradd komutunda kullanmayı unuttuğunuz bir parametre olabilir.

Parola Atamak

useradd parola atamak için -p parametresini sağlasa da bunu kullanıcıyı eklerken direkt kullanmak çok kullanışlı değildir çünkü önceden şifrelenmiş bir parolaya ihtiyaç duyar. Bu sebeple -p kullanmayarak devre dışı bırakılmış bir hesap oluşturup parolayı hesabı oluşturduktan sonra atmak daha kolaydır. Bunu passwd komutu ile gerçekleştirebilirsiniz.

passwd [-k] [-l] [-u [-f]] [-d] [-S] [username] (Detaylı kullanımı için man sayfasını incelemeniz iyi olacaktır.)

Sıradan kullanıcılar passwd komutu ile parolalarını değiştirebilirler ama çoğu passwd parametresi sadece root ken kullanılır. Özellikle -l, -u, -f, -d sıradan kullanıcıların erişemeyeceği parametrelerdir. Ayrıca sadece root passwd kullanırken bir kullanıcı adını kullanabilir. Sıradan kullanıcılar komutu çalıştırırken kullanıcı isimlerini yazmamaları gerekir, passwd komutu çalıştıran kullanıcı adının parolasını değiştirecektir. Güvenlik önlemi olarak sıradan kullanıcılar passwd komutunu çalıştırdığında passwd parolayı değiştirmeden kullanıcının eski parolasını da sorar. Bu önlem root için geçerli değildir böylece root kullanıcının eski parolasını bilmeden kullanıcıların parolasını değiştirebilir. Bu gereklidir çünkü sistem yöneticisi genelde kullanıcının parolasını bilmez. Ayrıca bu sistem yöneticisinin kullanıcı parolasını unutmuş kullanıcılara yardım etmesini sağlar.
Linux parolaları harfleri, rakamları ve noktalama işaretlerini içerebilir. Linux parolalarda küçük/büyük harf ayrımı yapar böylece güvenliği arttırmak için büyük/küçük harfli, rakamlı ve noktalama işaretli parolaları kullanabilirsiniz.

usermod'u Kullanmak

usermod özellikleri ve parametreleri ile useradd'e benzerlik gösterir. Ama bu araç yeni bir hesap oluşturmak yerine varolan hesabı değiştirmek için kullanılır. useradd ile usermod arasındaki büyük farklar şöyledir:

*usermod -d ile kullanıldığında -m parametresinin kullanılmasına da izin verir. -d parametresi dosyaları taşımadan kullanıcının home dizinini değiştirir. Bu parametreye -m eklemek usermod'un kullanıcının dosyalarının da yeni konuma taşınmasını sağlar.
*usermod -l parametresini de destekler, bu parametre kullanıcının login ismini belirtilen değerle değiştirir. Örneğin usermod tugce -l tugcesirin kullanıcının kullanıcı adını tugce'den tugcesirin'e değiştirir.
*-L ve -U seçenekleriyle kullanıcının parolasını kilitleyip açabilirsiniz. Bu seçenekler passwd tarafından sağlanan seçeneklerin aynısıdır. usermod /etc/passwd ya da /etc/shadow un içeriğini değiştirir kullanılan seçeneğe bağlı olarak. -m de kullanılırsa usermod daha önce de belirtildiği gibi kullanıcının dosyalarını taşır.

Eğer hesabın UID'sini değiştirirseniz bu hareket kullanıcının dosyalarındaki UID'leri değiştirmez. Bunun yüzünden kullanıcı bu dosyalara olan erişimini kaybedebilir. Dosyalardaki UID'leri elle güncelleyebilirsiniz chown komutunu kullanarak. Aşağıdaki komut tugce hesabınının UID'sini değiştirdikten sonra tugce kullanıcısının home dizininin sahiplik haklarını düzenler.
# chown -R tugce /home/tugce
Bu komut tugce'nin home dizininde olmayan ama sahipliği tugce'de olan dosyaları etkilemez. Eğer böyle dosyaların olduğunu düşünüyorsanız o dosyaları find komutu ile bulabilirsiniz. Ayrıca bu komut tugce hesabının home dizinindeki tüm dosyaların sahiplik hakkını değiştirir. Normalde bunun olmasında bir sakınca yoktur ama kişinin home dizininde başkasına ait dosyalarda bulunabilir.
Kullanıcıyı yeni gruplara eklerken -G komutu kullanıldığında yazılmayan herhangi bir gruptan kullanıcının çıkarılacağını unutmayın. gpasswd komutu kullanıcıyı bir ya da birden fazla gruba var olan grup üyeliklerini etkilemeden eklemek için bir yol sunar bu yüzden bu amaç için tercih edilmesi daha uygundur. (genelde)

chage'i Kullanmak

chage komutu hesabın geçerlilik süresinin ayarlanması ile ilgili ayarları içerir. Linux hesaplarını birkaç şarta bağlayarak bir geçerlilik süresi koymak mümkündür:
*Parola belirlenen sıklıkta değiştirilmediğinde
*Sistem zamanı önceden belirlenmiş bir tarihi geçtiğinde
Bu ayarlar chage aracı ile kontrol edilir.

chage [-l] [-m mindays] [-M maxdays] [-d lastday]
[-E expiredate] [-W warndays] username
[-I inactivedays]➦

Bilgileri görüntüle: -l parametresi belirtilen kullanıcı hesabının bitiş tarihini ve parolanın ne zamandır kullanıldığını gösterir.

Parola değişikliği arasında geçecek minimum zaman dilimini ayarlamak: -m parametresi parolanın değiştirilebileceği en kısa zaman aralığını belirler. 0 kullanıcının parolayı bir gün içerisinde birden fazla defa değiştirebileceğini, 1 kullanıcının parolasını günde bir değiştirebileceğini söyler. Bu rakam istenilen bir değere atanabilir.

chage -m 7 tugce

Bu komut tugce kullanıcısının parolasını en fazla 7 günde bir defa değiştirebileceğini söyler. Bu komutu kendi hesabınız için kullanmak isteseniz bile root olmanız gerekecektir yoksa chage: Permission denied. hatası ile karşılaşabilirsiniz.

Parola değişikliği arasında geçecek maksimum zamanı ayarlamak: -M parametresi parola değişikliği arasında geçen maksimum değişiklikliği ayarlar. Örneğin 30 atanırsa kullanıcı ayda bir parolasını değiştirmelidir.

Not: Kullanıcı belirlenenden önce parolasını değiştirirse bir sonraki parola değiştirme tarihi o andan itibaren hesaplanır. (Örneğin Ayda 1 değiştirilmesi gerektiğinde 17.günde değiştirilirken o günden itibaren 30 gün içinde parola tekrar değiştirilmelidir.)

Parolanın son değiştirilme tarihini atamak Bu normalde Linux tarafından otomatik olarak halledilen bir iştir ama -d parametresi ile parolanın son değiştirilme tarihini YYYY/MM/GG şeklinde değiştirebilirsiniz.

sudo chage -d 2013/12/29 tugce
chage -l tugce
Last password change                    : Dec 29, 2013


Maksimum aktif olunmayan gün sayısını atamak -I parametresi parolanın geçerliliğini kaybettiği günle hesabın devre dışı bırakılacağı günü atamak için kullanılır. Geçerliliğini kaybetmiş (expired) bir hesap kullanılamayabilir ya da kullanıcı login olarak parola değiştirmeye zorlanabilir. Devre dışı kalmış bir hesap tümüyle devre dışı kalmıştır. (disabled)

Geçerliliğin son tarihini atamak -E parametresi ile bir hesaba kesin bir geçerlilik süresi atayabilirsiniz. -E 2013/12/29 kullanıldığında hesap 29 Aralık 2013'te geçerliliğini kaybeder. -1 değeri hesabın geçerliliğini yitirmeyeceğini belirtir.

Uyarı gün sayısının atanması -W hesabın geçerliliğini kaybedeceği günden belirli bir süre önce kullanıcıyı uyarmak için kullanılır. Bunun metin modunda olan kullanıcılar için geçerli olduğunu ve GUI kullanan kullanıcıların genelde bu uyarıyı görmeyeceğini unutmayın.

chage komutu normalde sadece root tarafından kullanılabilir. Tek bir istisna -l parametresiyle kullanılmış halidir. Bu özellik sıradan kullanıcılara hesaplarının geçerlilik tarihi ile ilgili bilgi verir.

Hesap Yapılandırma Dosyalarını Direkt Değiştirmek

Kullanıcı yapılandırma dosyaları elle değiştirilebilir. /etc/passwd ve /etc/shadow bir hesabın çoğu temel özelliklerini kontrol eder. İki dosya da satır dizilerinden oluşur ve her satır bir hesaba karşılık gelir. Her satır kullanıcı adıyla başlar ve : ile ayrılmış bir dizi alanla devam eder.

tugce:x:1000:1000:Tugce,,,:/home/tugce:/bin/bash

Her alan özel bir anlama sahiptir. /etc/passwd için bu alanların anlamları şu şekildedir:

İlk alan kullanıcı adıdır.
İkinci alan genel olarak parola için ayrılmıştır. Çoğu Linux sistemi gölgelenmiş parolayı /etc/shadow altında tutar. /etc/passwd dosyasında parola x olarak gösterilir. Gölgelenmiş parola kullanmayan sistemlerde şifrelenmiş bir parola bulunur.
Üçüncü alan UID'yi içerir. (1000)
Dördüncü alan birincil grubu gösterir. (1000)
Beşinci alan yorum alanıdır. Bu alan farklı sistemlerde farklı şekillerde gösterilir. Bazı sistemler virgül ile ayırarak ek bilgileri gösterebilir.
Altıncı alan home dizininin konumudur. Son yer alan ise kullanıcının varsayılan kabuğudur. (shell) Genelde /bin/bash, /bin/tcsh ya da diğer yaygın kabuklar bulunabilir. Ama burada alışılmışın dışında da bir şey bulunabilir. Örneğin çoğu sistem bir shutdown hesabına sahiptir ve bu hesabın kabuğu /bin/shutdown dur. Kabuğu /bin/false olan kullanıcı hesapları oluşturabilirsiniz, böylece kullanıcının sıradan bir kullanıcı gibi sisteme login olmasını engelleyip diğer araçları kullanabilmesini sağlarsınız. Örneğin bu tür kullanıcılar POP ya da IMAP gibi mail protokolleri ile mail alabilirler. Bunun bir diğer çeşidi /bin/passwd kabuğudur, böylece kullanıcılar uzaktan parolalarını değiştirebilir ama bir komut kabuğu kullanarak login olamazlar.

Bu alanların hepsini elle değiştirebilirsiniz ama gölgelenmiş parolayı değiştirmemeniz iyi olacaktır; parola ile ilgili değişiklikleri passwd aracına bırakmanız daha iyi olacaktır böylece parola düzgün bir şekilde şifrelenip /etc/shadow altında depolanabilir. usermod ile ilgili değişikliklerde eğer değiştirilecek hesabın kullanıcısı sisteme login olmamışse /etc/passwd yi direkt değiştirmek en iyi seçim olacaktır.

/etc/passwd gibi /etc/shadow da elle değiştirilebilir.

Not: /etc/passwd normal kullanıcılar tarafından okunabilirken /etc/shadow root tarafından okunabilir.

tugce:gölgelenmiş parola:16068:0:99999:7:::

Buradaki satırların çoğu chage aracı ile ilgili alanlardır. Alanların anlamları şu şekildedir:

Her satır kullanıcı adıyla başlar. /etc/shadow da kullanıcının UID si bulunmaz. İkinci alan parolanın gölgelenmiş halidir. * ya da ! parolası olmayan bir hesabı işaret eder, bu hesabın kilitli olduğu ve login kabul etmediği anlamına gelir. Bu sistemin kendi hesapları için yaygındır. Sonraki alan parolanın son değiştirldiği tarihi gösterir. Bu 1 Ocak 1970'ten itibaren parolanın değiştirildiği gün sayısıdır. Sonraki alan parolanın en az kaç günde bir değiştirilebileceğini gösterir. Bizim durumumuzda bu 0 yani bir günde birden fazla defa parola değiştirilebilir. Sonraki alan parola değiştirmenin zorunlu olduğu gün sayısını gösterir.(99999 gün içinde parolamı değiştirmem gerekiyormuş mesela.) Parolanın geçersiz kalacağı günden önce uyarı verileceği gün sayısı sonraki alandadır. Buradaki örnekte görüldüğü gibi parolamın geçersiz olacağı günden 7 gün önce sistem beni uyaracak. Sonraki alanlar sırasıyla geçersiz kalma ile hesabın devre dışı bırakılacağı gün arasındaki gün sayısını, geçersiz kalacağı günü ve özel bir bayrak (flag) içerir.

Bir değerin -1 ya da 99999 olması o özelliğin devre dışı bırakıldığı anlamına gelir. /etc/shadow daki alanların usermod ya da chage ile değiştirlmesi daha uygundur çünkü bu alanları değiştirmek biraz kafa karıştırıcı olabilir. Örneğin 1 Ocak 1970'ten itibaren gün sayısını hesaplarken artık yılları unutmak gibi. Ayrıca şifrelenmiş yapısı yüzünden parola kısmını elle değiştirmek iyi olmayabilir.

Hesapları Silmek

Görünüşte hesapları silmek oldukça kolaydır. userdel komutuyla kullanıcı ile ilgili satırı /etc/passwd ve eğer sistem gölgelenmiş parola kullanıyorsa /etc/shadow un altından silebilirsiniz. userdel komutu sadece 3 parametre alır.

Kullanıcı dosyalarını sil -r ya da --remove sistemin kullanıcının mail spool u ile home dizinini silmesini sağlar.

Zorla silmek -f ya da --force parametresi -r ile birlikte kullanılarak kullanıcı sisteme login olmuş haldeyse bile hesap silinebilir. Ayrıca bu seçenek kullanıcının mail havuzu? (spool) ve home sizini başka kullanıcı tarafından da kullanılıyor olsa bile bunları silmeyi sağlar.

Yardım almak -h ya da --help parametresi userdel için kullanılabilir olan seçenekleri görüntüler.

userdel -h
Usage: userdel [options] LOGIN

Options:
  -f, --force                   force removal of files,
                                even if not owned by user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool


Böylece bir kullanıcıyı silmek userdel -r kullanıcı adı komutu ile oldukça basit bir şekilde yapılabilir. Eğer kullanıcının dosyalarını tutmak istiyorsanız -r parametresini kullanmayabilirsiniz. Kullanıcı silerken olası bir sorun kullanıcının kendi home dizini dışında da dosyaları olmasıdır. Bu özellikle geçici dosyaların durduğu /tmp dizininde görülür. Buradaki dosyalar belli aralıklarla silinse de kullanıcının başka dizinlerde de dosyaları bulunabilir. Bu dosyaları bulmak için find komutunu -uid parametresiyle kullanarak dosyaların konumlarını saptayabilirsiniz. (eğer hesabı henüz silmemişseniz -user parametresi de kullanılabilir.) Örneğin 1000 UIDsine sahip tugce kullanıcısına ait dosyaları bulmak için find / -uid 1000 komutu kullanılır. (/ kök dizinine işaret eder.) Sonra çıkan dosyalara bakarak hangilerini silip hangisini tutacağınıza (sahiplik izinlerini değiştirmek ya da yedeklerini almak gibi) karar verebilirsiniz. Bu dosyalarla bir şeyler yapılması mantıklıdır çünkü silinen kullanının UIDsine sahip bir kullanıcı oluşturulursa yeni kullanıcı bu dosyaların sahiplik hakkını alır, bu yeni kullanıcının dosya kotasının dolmasına ya da erişmemesi gereken dosyalara erişmesine neden olabilir.
Bazı sunucular -en bilineni Samba- kendi kullanıcı listelerini tutarlar. Eğer böyle bir sunucu çalıştırıyorsanız yapılacak en iyi şey kullanıcının ana hesabını silerken aynı zamanda sunucunun kullanıcı listesinden de çıkarmaktır. Samba için bunu yapacaksanız bunu smbpasswd dosyasını elle düzenleyerek (genelde /etc, /etc/samba ya da /etc/samba.d dizinlerinin altında bulunur) ve kullanıcının olduğu satırı silerek yapabilir ya da smbpasswd nin -x parametresini kullanarak smbpasswd -x kullanıcı adı komutuyla bunu gerçekleştirebilirsiniz.

Grupları Yapılandırmak

Linux kullanıcı hesapları için sunduğu araçların benzerlerini gruplar için de sunar. Bununla birlikte gruplar hesaplar gibi değildir bu yüzden araçların çoğu özelliği farklılık gösterir. Grupların yapılandırma dosyalarını da elle düzenleyebilirsiniz, bunlar kullanıcı hesaplarının yapılandırma dosyalarına benzer ama detaylarda değişiklik gösterirler.

Grupları Eklemek

Grup eklemek için groupadd komutu bulunur. Bu araç useradd e benzer ama daha az özelliğe sahiptir.

groupadd {-g GID [-o]] [-r] [-f] grup_adı

-g ile GID'yi belirleyebilirsiniz. -r ile 500'den düşük GID'ye sahip bir grup oluşturabilirsiniz. Bunun sebebi bazı dağıtımlarda (Red Hat gibi) 500 ve üstündeki GID'ler kullanıcıya özel gruplar için ayrılmıştır. Bütün dağıtımlar -r parametresini desteklemez. Normalde varolan bir grup ismiyle bir grup oluşturmaya çalıştığınızda  groupadd bir hata döner. -f parametresi bu hata mesajını bastırır. Bütün groupadd versiyonları bu parametreyi desteklemez.

Çoğu durumda grupları parametre belirtmeden oluşturursunuz. Böylece belirttiğiniz grup adında sistemin uygun bulduğu bir GID'ye sahip (var olan en yüksek GID'den 1 eksik) bir grup oluşturursunuz. Bunu yaptıktan sonra gruba kullanıcıları ekleyebilirsiniz.

Grup Bilgisini Değiştirme



Grup bilgileri kullanıcı bilgileri gibi bazı araçlarla ya da yapılandırma dosyasının (/etc/group) elle düzeltilmesi ile değiştirilebilir. Hesapların değiştirilmesine oranla grupların değiştirilmesinde daha az seçenek bulunur ve araçlar ile yapılandırma dosyaları hesaplara benzer. usermod grupları düzenlemek için kullanılan araçlardan biridir.

groupmod ve usermod'u Kullanmak

groupmod komutu varolan grubun ayarlarının değiştirilmesinde kullanılır.

groupmod [-g GID [-o]] [-n yeni_grup_adı] eski_grup_adı

Grubun ismi değiştirilmek istendiğinde -n parametresi kullanılır. Gruplardaki değişiklikler için yapılacak çoğu iş groupmod ile yapılmaz onun yerine usermod ile yapılır. usermod -G parametresiyle gruba kullanıcı eklenmesini sağlar.

usermod -G grup1,grup2,grup3 tugce

Bu komut tugce kullanıcısını grup1,grup2 ve grup3 gruplarının üyesi yapar. Bu işlemi yaparken kullanıcının önceki gruplarınında bu komutta yer aldığına emin olun. Kullanıcının var olan gruplarını yazmazsanız kullanıcının o grup üyelikleri silinir. Bir kullanıcının hangi gruplara üye olduğunu görmek için groups kullanıcı_adı komutunu kullanabilirsiniz. Kullanıcıyı yanlışlıkla bir gruptan çıkarmamak için sistem yöneticileri genelde bu işlemi /etc/group dosyasını bir metin editöründe düzenleyerek ya da gpasswd kullanarak yapmayı tercih eder. İki seçenekte kullanıcının üye olduğu grupları listelemeden yeni gruplara üye yapmayı sağlar.

gpasswd'yi Kullanmak

gpasswd komutu passwd'nin gruplar için olan halidir. Ayrıca gpasswd komutu diğer komut seçeneklerini ayarlamanızı sağlar, gruba yönetici atamak gibi.

Kullanılma şekli: gpasswd seçenekler grup_adı

 -a, --add user
           Belirtilen gruba kullanıcı ekler

       -d, --delete user
           Belirtilen gruptan kullanıcı siler

       -r, --remove-password
           Belirtilen grubun parolasını siler.

       -R, --restrict
           Bu komut belirtilen gruba newgrp komutuyla üyelerin katılmasını engeller.

       -A, --administrators user,...
           Root kullanıcısı bu parametreyle grup yöneticilerini atayabilir. Grup yöneticileri gruba yeni kullanıcılar ekleyip var olan kullanıcıları çıkarabilir ve grup parolasını değiştirebilir. Bu parametreyi kullanmak önceki yöneticilerin listesini siler bu sebeple eğer yöneticileri olan bir gruba yeni bir yönetici daha eklemek istiyorsanız yönetici olmasını istediğiniz bütün kullanıcıların isimlerini yazmanız gerekir.

       -M, --members user,...
           -A gibi çalışır ama yöneticiler yerine belirtilen kullanıcıları gruba ekler.

Eğer grup adı dışında hiç parametre verilmeden kullanılırsa gpasswd grubun parolasını değiştirir. Grup parolaları bir gruptaki newgrp tarafından oluşturulabilinen geçici üyeliklerin kontrol edilmesini sağlar. Grubun üyesi olmayanlar eğer grubun bir parolası varsa newgrp komutu ile geçici üye olabilirler, newgrp bir parola sorar ve doğru girildiğinde kullanıcıya geçici üyelik sağlar.
Ne yazık ki burada bahsedilen bazı özellikler bazı dağıtımlar düzgünce uygulanmamaktadır. Özellikle grup üyesi olmayanlar doğru parolayı girseler bile sistem erişim engellendi hata mesajı verir. Ayrıca -R seçeneği bazen doğru çalışmaz, birincil grupları başka bir grup olan grup üyeleri newgrp ile birincil gruplarını değiştirebilir.

Grup Yapılandırma Dosyalarını Elle Değiştirmek

Grup bilgileri birincil olarak /etc/group un altında tutulur. Hesap yapılandırma dosyaları gibi /etc/group da belirli alanlara ayrılmış satır dizilerinden oluşur, her satır bir grubu işaret eder.

sambashare:x:124:tugce

Her alan : ile ayrılmıştır. İlk alan grup adıdır. İkinci alanda grup parolası bulunur. 3. alan grup ID'si son alanda gruba ait olan kullanıcıların isimleridir. Birden fazla kullanıcı varsa bunlar virgül ile ayrılırlar.

Grupları Silmek

Gruplar groupdel komutu ile silinir, bu komut tek bir parametre alır: grup adı. Ayrıca /etc/group dosyasını değiştirerek bir grubu silebilirsiniz. (eğer varsa /etc/gshadow dan da silmelisiniz) Genelde groupdel'i kullanmak daha iyidir çünkü groupdel silinen grubun herhangi bir kullanıcının birincil grubu olup olmadığını kontrol eder. Eğer grup bir kullanıcının birincil grubuysa groupdel bu grubu silmeyi reddeder, bu durumda bahsi geçen kullanıcının birincil grubunu değiştirmeli ya da kullanıcının hesabının silmeniz gerekir.
Kullanıcılar silindiğinde olduğu gibi grupların silinmesi de bazı dosyaları geride bırakır. Bunları find komutu ile bulabilirsiniz. find / -gid 1000 gibi. Bu dosyaları bulduğunuzda bunlarla ne yapacağınıza karar vermeniz gerekir. Bazı durumlarda bu dosyaları bırakmak ani sorunlara yol açmaz ama GID tekrar kullanılırsa karışıklığa ve güvenlik açıklarına neden olabilir. Bu yüzden bu dosyaları silmek ya da sahipliğini chown ya da chgrp komutuyla değiştirmek gerekir.

Perşembe, Aralık 19, 2013

X Pencere Sistemini Yapılandırmak

X Pencere Sistemini Yapılandırmak

Çoğu modern işletim sistemi grafik arayüzü sunar, bu arayüz pencereleri, menüleri, diyalog kutularını, ayarlanabilen yazı tiplerini ve bunun gibi şeyleri içerir. Linux'taki ana grafik arayüz X Pencere Sistemidir ve kısaca X denir. X yapılandırması duruma göre çok kolay ve çok zor olabilir. Çoğu Linux dağıtımı yükleme sırasında otomatik tanıma ve kolay yapılandırma seçenekleri sunar ama eğer kullandığınız dağıtımda böyle bir özellik yoksa ya da istediğiniz gibi değilse X yapılandırma dosyasında değişiklik yapmanız ya da bir arayüz yapılandırma aracı kullanmanız gerekebilir. Bunu yapmak için X'in video donanımlarına ve diğer şeylere nasıl davrandığını (bunları nasıl kullandığını ) bilmeniz gerekir.

Temel X yapılandırması dışında birkaç şeyden daha bahsedeceğiz. Bu yazı tiplerini, GUI login araçlarını, kullanıcı masaüstü ortamlarını, X'i uzaktan erişim için kullanmayı ve yerelleştirmeyi içerecek. Bu konuların hepsi X'in temel yapılandırma konularıyla yakından ilişkilidir.

X ekranı bir çeşit çıktı olarak düşünülebilir. (output) Bir diğer çıktı çeşidi yazdırmadır. (printing) Bu yazıda ondan da bahsedeceğiz. Düzgün şekilde yapılandırılmış bir yazıcıyla X ya da metin tabanlı arayüzlü uygulamalar yardımıyla oluşturup düzenlediğiniz belgelerin çıktısını alabilirsiniz.

Temel X Özelliklerini Yapılandırma

Temel X yapılandırmasıyla kullanılan fareyi, klavye düzenini, ekran çözünürlüğünü, video yenileme hızını (refresh rate), renk derinliğini görüntülemeyi ve kullanılan video kartını ayarlayabiliriz. Bu seçeneklerin bazıları X'e kullandığınız donanımı söylemenizi gerektirir, diğer seçeneklerse bu donanımların sunduğu özellikleri ayarlamanızı sağlar. Bunların hepsini yapmadan önce gerçek yapılandırmayı ayarlamadan önce Linux için bulunan X sunucularılarıyla ilgili bazı bilgiler edinmeniz gerekir, çünkü seçiminiz hangi araçları kullanabileceğinizi ve hangi dosyaları elle değiştirmeniz gerektiğini belirleyecektir. GUI ve metin-modlu yapılandırma araçları X'i yapılandırmanızı sağlayabilir ama bazen yapılandırma dosyalarını kullanmanız gerekecektir bu yüzden bu dosyaların biçimini bilmeniz önemlidir.

Linux için X Sunucu Seçenekleri

X Linux için en çok kullanılan GUI olsa da X'in birden fazla çeşidi bulunmaktadır.

XFree86: 2004'e kadar en çok kullanılan X sunucusu. Bu açık kaynak sunucu geniş yelpazede video kartlarını ve giriş aygıtlarını destekler ve çoğu Linux yazılımı XFree86 göze alınarak hazırlanmıştır. Şu an 4.x serisindedir ve 3.3.6 serisi ve onun öncesindekilerle 4.x serisi arasında bazı önemli farklılıklar bulunur. Bazı sürücülerden dolayı çok az sistemin XFree86 3.3.6 ve öncesini kullanması gerekebilir ama günümüzdeki çoğu sistem XFree63 4.x ya da X.org-X11 kullanmaktadır.

x.org-X11: 2004'den sonra çoğu Linux sistemi XFree86'den X.org-X11'e geçtiler. (XFree86'daki bazı lisans değişikliklerinden dolayı.) X.org-X11 6.7.0 XFree86'yı temel alıyordu ama günümüzdeki versiyonuna kadar bağımsız olarak geliştirilmiştir. X.org-X11 XFree86'yı temel alarak geliştirildiği için iki sistemde en önemli konularda birbirlerinin aynısıdır. Önemli bir farklılık yapılandırma dosyalarındaki isim farklılığıdır, diğeri de yazı tiplerinin bulunduğu varsayılan konumdur. Diğer değişikliklerden yazının devamında bahsedilecektir.

Accelerated-X: Xi-Graphics tarafından diğer açık kaynak sistemlere  alternatif olarak geliştirildi. Normalde bu sistemi kullanmak çok gerekli değildir ama video kartınızla ilgili sorununuz varsa Accelerated-X'i denemek isteyebilirsiniz.

X Yapılandırma Yöntemleri

X'i yapılandırmak zor bir süreçtir çünkü X yapılandırma dosyası bazı ilginç seçenekler içerir. Eğer bir yapılandırma aracı kullanırsanız bu iş kolaylaşır ve çoğu Linux dağıtımı yükleme aşamasında böyle bir araç çalıştırır. Eğer bu araç işinizi görmüyorsa (ya da yapmak istediklerinizin hepsini yapmıyorsa) X yapılandırma dosyasını elle değiştirmeniz gerekir.

X Yapılandırma Araçları

Bu araçlar kullanılan X versiyonuna göre çeşitlilik gösterir. XFree66'nın 3.3.6 versiyonu ve öncesindekiler ile sonraki versiyonları ve X.org-X11 için olan araçlar büyük farklılıklar gösterir.

XFree86 4.x ve X.org-X11 için Yapılandırma Araçları
Bunlar için birden fazla yapılandırma aracı bulunur:
X Sunucusunun kendisi
X sunucusunun kendisi donanımı sorgulama ve buna göre bir yapılandırma dosyası oluşturma yeteneğine sahiptir. Bunu yapmak için X sunucusu çalışmıyorken konsolda XFree86 -configure (XFree86 için) ya da Xorg -configure yazın.  Sonuç /root/XF86config.new ya da /root/xorg.config.new olmalıdır. Bu dosya  en uygun sonuçları üretmeyebilir ama en azından manuel değiştirmeler için bir başlangıç noktası sunar.
Dağıtım-tabanlı araçlar
Çoğu modern dağıtımlar kendi özel X yapılandırma araçlarını sunarlar. Red Hat (ve Fedora'da) Ekran Özellikleri aracı (Display Settings - varsayılan olarak masaüstündeki menüdedir ya da xterm'de system-config-display yazarak ulaşılabilir) ve SuSE için YaST ve YaST2 bulunur.
x86cfg ya da xorgcfg araçlar sadece XFree86 4.x ya da Xorg-X11 için çalışır. Bu araçlar önerilmiyor çünkü artık geliştirmeleri devam etmiyor ama eğer sisteminizde bu araçlar varsa X'i yapılandırmak için kullanılabilirler.
Bütün bu araçlar X'i elle değiştirmek için gerek bilgiyi sağlarlar.

XFree86 3.3.6 ve Öncesi için Yapılandırma Araçları
xf86config, Xconfigurator ve XF86Setup en yaygın olanlarıdır. Genel bir kural olarak Xconfigurator yeni bir sistemin ilk yapılandırması için iyi bir araçtır ve XF86Setup ise yapılandırma dosyasına dokunmadan varolan bir sistemin yapılandırmasını ayarlamak için iyidir. Ama XFree86 3.3.6 ve öncesini kullanmak zorunda olanlar için bu araçları bulmak zordur o yüzden x86config'i kullanmak ya da yapılandırma dosyasını elle değiştirmek zorunda kalabilirler.

X Yapılandırma Dosyasının Biçimi

Çalışan X sunucusna göre dosyanın adı ve konumu değişiklik gösterebilir.

X.org-X11 Bu sunucunun yapılandırma dosyası xorg.conf olarak adlandırılır ve genel olarak /etc/X11 ya da /etc nin altında bulunur.
XFree86 4.x Yapılandırma dosyasının adı XF86Config-4 ve konumu genelde /etc/X11'dir. Eğer bu dosya bulunmazsa XFree86 4.x /etc/X11 ya da /etc nin altında XF86Config isimli dosyayı arar. Bu dosyanın biçimi tamamen X.org-X11'in yapılandırma dosyasıyla aynıdır.
XFree 3.3.6 ve öncesi X yapılandırma dosyasının adı XF86Config'dir ve dosya genelde /etc/X11 ya da /etc dizininin altında bulunur.

Bütün bu üç yapılandırma dosyaları birçok satırdan oluşan bölümlerden oluşur, bu bölümler büyük bir özelliği içerir. Bölümler Section adı verilen ve tırnak içine alınan bir anahtar kelimeyle başlar ve EndSection anahtar kelimesiyle biter.

Section “InputDevice”
    Identifier “Keyboard0”
    Driver “kbd”
    Option “XkbModel” “pc105”
    Option “XkbLayout” “us”
    Option “AutoRepeat” “500 200”
EndSection

Bu Section X'e klavye ile ilgili özellikleri söyler; modeli, düzeni ve bunun gibi şeyleri. Çoğu zaman farklı X sunucuları aynı bölümleri ve özellik isimlerini destekler. Bunun birkaç istisnası bulunur.

1-Option anahtar-kelimesi XFree86 3.3.6 ve öncesinde kullanılmaz. Bunun yerine seçenek ismi (Xkblayout ya da AutoRepeat gibi) satır başında tırnak içinde olmadan yazılır.
2-XFree86 3.3.6 ve öncesi ServerLayout bölümünü kullanmaz.
3-XFree86 3.3.6 ve öncesinde Identifier ve Driver satırlarını içermez, bu satırlar XFree86 4.x ve X.org-X11'de yaygın olarak kullanılır.
4-Bazı bölüm-spesifik özellikler versiyonlar arası değişiklik gösterir.

X Yapılandır-Ve-Test-Et Döngüsü

Eğer X yapılandırmanız doğru çalışmıyorsa değiştirip bunu test etmeniz gerekir. Çoğu Linux dağıtımı açılışta X sunucunu çalıştırır ama X'i otomatik başlatmak yapılandırmayı test etmeyi zorlaştırabilir. Yeni Linux yöneticisi için değişiklikleri test etmenin tek yolu bilgisayarı yeniden başlatmak olacaktır.
Daha iyi bir yöntem sistemi X'in otomatik olarak başlamadığı bir moda almaktır. Red Hat, Fedora ve buna benzer dağıtımlarda kolayca telinit 3 komutuyla istenilen moda geçilebilir. Bu sistemi runlevel 3 şeklinde çalıştırması konusunda ayarlar, bu modda X sunucusu çalışmaz.

Debian, Ubuntu ve Gentoo runlevellleri X'i başlatıp başlatmama konusunda kullanmaz. Bu dağıtımlarda /etc/init.d/xdm stop komutuyla GUI login sunucusunu kapatmanız gerekir. (Yapılandırmanıza göre xdm'yi kdm ya da gdm ile değiştirmeniz gerekebilir.)

X oturumu kapandıktan sonra text-mode login ekranından X yapılandırmanızı elle düzenleyebilir ya da metin-tabanlı X yapılandırma programlarını kullanabilirsiniz. Sonrasında startx komutuyla X sunucusunu tekrar çalıştırabilirsiniz. Eğer istediğiniz sonucu aldıysanız X'i kapatıp telinit 5 ya da /etc/init.d/xdm start komutlarını kullanarak sistemi normal X login ekranına getirebilirsiniz. Eğer startx komutundan sonra istediğiniz sonucu almadıysanız X oturumunuzu kapatıp sistemi değiştirmeye devam edebilirsiniz.
X'i yeniden başlatmanın başka bir yolu da sistemi X'in çalışır olduğu runlevelde bırakıp sonra X sunucusunun sürecini öldürmektir. Ctrl+Alt+Backspace genelde iş görür ama bu işe yaramazsa ps aux | grep X komutuyla süreç pid'sini alarak kill pid komutuyla X'i konsoldan kapatabilirsiniz. Bu yöntem X'i runlevelden bağımsız çalıştıran dağıtımlar için daha iyidir.

X Yapılandırma Seçenekleri

X yapılandırma dosyasını değiştirirken en iyi yöntem çalışmayan özelliği belirlemek ve bu özelliği kontrol eden bölümü sıfırlamaktır. Sonra bu bölümü düzenleyip, değişiklikleri kaydedip, yeni yapılandırmanızı test edebilirsiniz. XFree86 4.x ve X.org-X11'de bulunan temel bölümlerden bahsedeceklerimiz Module, InputDevice, Monitor, Device, Screen ve ServerLayout'tur. Muhtemelen yapılandırmanızda iki tane InputDevice bulunacaktır, bunlardan birisi Keyboard (klavye) diğeri Mouse (Fare) dur. (XFree86 3.3.6 ve öncesinde fare Pointer adı verilen başka bir bölümde yapılandırılır.) Bölümlerin sıralaması önemli değildir.

Modülleri Yüklemek

Module bölümü X sunucu modüllerinin yüklenmesi işlemini kontrol eder -spesifik özellikler için sürücüler ya da donanım. 

Section  "Module"
    Load  "dbe"
    Load "extmod"
EndSection

Modül isimlerinin kontrol ettikleri özelliklere bakılarak bunların ne oldukları anlaşılabilir. Eğer X yapılandırması çalışıyorsa Module bölümünü düzenlememeniz gerekir, X yapılandırmasını değiştirecek olsanız bile. Bazen bazı satırları eklemeniz ya da çıkarmanız gerekebilir. (örneğin  3D yi aktive etmek için)

Klavyeyi Ayarlamak

Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
Option “XkbModel” “pc105”
   Option “XkbLayout” “us”
   Option “AutoRepeat” “500 200”
EndSection

Identifier, ServerLayout için kullanılan bir etikettir. (XFree86 3.3.6 ve öncesinde bunlar yoktur) Driver satırı X'e klavye için hangi sürücüyü kullanacağını söyler. Klavyeniz çalıştığı sürece bu satırı değiştirmeyin.
Option satırları bazı seçenekleri ayarlamak için kullanılır; model, klavye düzeni, tekrarlama hızı gibi. Çoğu zaman varsayılan özellikler yeterlidir ama bazen AutoRepeat satırını düzenlemeniz ya da yoksa eklemeniz gerekir. Bu satır 2 tane sayı alır ve ikisi de milisaniye cinsindendir. İlk sayı (500) kadar sistem ilk tekrar için bekler ondan sonra her 200 milisaniyede tekrarlar. (Saniyede 5 defa)
Not: Çoğu masaüstü ortamı ve diğer kullanıcı-seviyesinde araçlar klavye tekrar hızını ayarlamak için işlevsellik sunarlar. X yapılandırma dosyasındaki değerler varsayılan değerlerdir ve kullanıcı ayarları tarafından değiştirilebilirler.

Fareyi Ayarlamak

İkinci bir InputDevice bölümü X'in fareye nasıl davrandığını belirler.

Section “InputDevice”
   Identifier “Mouse0”
   Driver “mouse”
   Option “Protocol” “IMPS/2”
   Option “Device” “/dev/input/mice”
   Option “Emulate3Buttons” “no”
   Option “ZAxisMapping” “4 5”
EndSection

Klavyede olduğu gibi Identifier satırı X'in ServerLayout'ta belirlenen hangi girdi cihazını kullanmasını söylemesi için bulunur. Option satırları fare kontrol seçeneklerini belirler. Bunlardan en önemlileri Device ve Protocol satırlarıdır. Device  X'e hangi Linux aygıt dosyasının fareye ulaşmak için okunması gerektiğini söyler. Bu örnekte /dev/input/mice dosyasıdır ama /dev/mouse (gerçek fare dosyasına işaret eden dosya), /dev/psaux (PS/2 fare portu için), /dev/usb/usbmouse (USB fareler için önceden kullanılan işaretçi), /dev/ttys0 (ikinci RS-232 seri port faresi) gibi seçeneklerde kullanılabilir. Eğer fareniz çalışıyorsa bu satırı değiştirmeyin.
Protocol seçeneği X'e farenin çeşitli hareketlerinden ve butonlara basıldığı zaman hangi sinyalleri alması gerektiğini söyler. Yeni tür fareler için bu IMPS/2 ve ExplorerPS/2'dir ve bunlar pratikte birbirine çok benzerdir. (PS/2 hem donanım arayüzü hem de yazılım protokolüdür. PS/2 fare protokolünü kullanan çoğu USB farenin PS/2 fare portunu kullanmadığını unutmayın.) Eğer farenizde kaydırma tekeri varsa bu protokollerden birini kullanmanız gerekir. Eğer fareniz eskiyse PS/2, Microsoft ya da Logitech gibi daha eski protokolleri denemeniz gerekebilir. Auto protokolü X'in hangi protokolü kullanacağını kendisinin tahmin etmesi şeklinde çalışır ve genelde doğru çalışan bir seçenektir.

Monitörü Ayarlamak

X yapılandırmasında en çok yanlış yapılacak şeylerden birisi monitör ayarlarıdır. Bunlar Monitor bölümünde ayarlanır ve özellikle XFree86 3.3.6 ve önceki sürümlerde çok büyük bir bölüm oluşabilir. Kısaltılmış bir Monitor bölümü şöyle görünür:

Section “Monitor”
    Identifier “Monitor0”
    ModelName “VisionMaster Pro 450”
    HorizSync 27.0-115.0
    VertRefresh 50.0-160.0
    # My custom 1360x1024 mode
    Modeline “1360x1024” 197.8 \
            1360 1370 1480 1752 \
            1024 1031 1046 1072 -HSync -VSync
EndSection

Identifier ve ModelName özellikle yapılandırma dosyasını kontrol ederken size yardımcı olması için konulur bu yüzden neredeyse istediğiniz herhangi bir ismi verebilirsiniz. Bölümde aşağılara baktığınızda HorizSync ve VertRefresh satırlarını göreceksiniz, bunlar çok kritiktir ve monitörün yatay ve dikey doğrultuda kabul edebileceği video yenileme hızını kHz ve Hz cinslerinden tanımlar. Bunlar birlikte monitörün maksimum çözünürlüğünü ve yenileme hızını belirler.

Uyarı: Özellikle eski monitörlerde bu değerler rasgele bir şekilde atanmamalıdır. Monitörün desteklediğinden yüksek değerler yazılırsa bu monitöre zarar verebilir. Modern monitörler çok yüksek yenileme hızı sinyallerini göz ardı edebilirler.

Çözünürlüğü ayarlamak için X mode satırlarına bakar, bunlar Modeline seçeneği aracılığı ile belirtilirler.
XFree86 4.x ve X.org-X11 Data Display Channel (DDC) olarak bilinen bir özelliği destekler. Bu protokol monitörlerin kendi maksimum horizontal ve vertical yenileme hızlarını ve uygun mode satırlarını bilgisayara iletmesini sağlar. XFree86 -configure ya da Xorg -configure komutları bu bilgiyi  mode satırlarını oluşturmak için kullanırlar böylece her sistem başlangıcında sistem yatay ve dikey yenileme hızlarını alabilir. Bu sebeple Xfree86 4.x ve X.org-X11 sistemlerindeki Monitor bölümleri XFree86 3.3.x'dekinden daha kısadır.

Video Kartını Ayarlamak

Herhangi bir çözünürlükte maksimum yenileme hızını ayarlamanız için genelde en önemli faktör monitörünüzdür ama X veri monitöre direkt olarak değil video kartı aracılığı ile gönderir. Bu sebeple bu parçayı doğru yapılandırmanız önemlidir. Yanlış yapılandırılmış video kartı X'in başlamamasına sebep olabilir.

Sunucu ya da Sürücüyü Seçmek

XFree86 4.x ve X.org-X11 sürücü modüllerini ana X sunucusunun çalıştırılabilir dosyasından ayrı dosyalarda depolar. Sunucu hangi modülün gerekli olduğuna otomatik olarak karar veremez. Bunun yerine XF86Config ya da xorg.conf dosyası içinde bu bilgiyi vermeniz gerekir. Tam olarak bu Device bölümünde belirlenen bir sürücü modülüne karşılık gelir.

Driver "nv"

Bu satır sürücünün adını belirler. Sürücüler /usr/X11R6/lib/modules/drivers dizininde bulunur. Çoğu sürücünün dosya adı _drv.o ile biter ve eğer bu kısmı çıkarırsanız sürücü ismini elde edebilirsiniz. Örneğin nv_drv.o nv sürücüsüne karşılık gelir.

Kart Spesifik Seçenekleri Atamak

xorg.conf dosyasındaki Device bölümü spesifik X sunucuları ile ilgili çeşitli seçenekleri ayarlar.

Section “Device”
    Identifier “Videocard0”
    Driver  “nv”
    VendorName “nVidia”
    BoardName  “GeForce 6100”
    VideoRam  131072
EndSection

VideoRAM satırı çoğu kartlar için gereksizdir çünkü sürücü kartın içinde yüklü olan RAM miktarını tespit edebilir. Ama bazen kartın içindeki RAM miktarını belirtmeniz gerekebilir (kilobyte cinsinde). Örnekteki kart 128MB RAM yüklüdür.

Çözünürlüğü ve Renk Derinliğini Ayarlamak

Screen bölümü X'e kullanılan monitörler ve video kartları hakkında bilgi verir. XFree86 4.x ve X.org-X11 çoklu video kartı ve monitörü bir sistemde destekleyebilir hatta XFree86 3.3.6 ve öncesinde de birden fazla monitör ve video kartı tanımlayabilip yapılandırma dosyasındaki Screen bölümünü değiştirerek bunlar arasında geçiş yapabilirsiniz. Bu eğer yeni bir monitör ya da video kartı deniyorsanız kullanışlı olabilir. Screen bölümü şu şekilde görünür:

Section “Screen”
    Identifier “Screen0”
    Device  “Videocard0”
    Monitor  “Monitor0”
    DefaultDepth 24
    SubSection “Display”
        Depth  24
        Modes  “1024x768” “1024x600” “800x600” “640x480”
    EndSubSection
    SubSection “Display”
        Depth  8
        Modes  “1024x768” “800x600” “640x480”
    EndSubSection
EndSection

Device ve Monitor satırları, Device ve Monitor bölümlerinde bulunan Identifier'lara karşılık gelir. Screen bölümü bir ya da birden fazla Display alt bölümünü içerir, burada X'in kullanabileceği video kartları tanımlanır. Bu örnekte iki tane ekran oluşturulur. İlk olanı 24 bit renk derinliği ve 1024x768,
1024x600, 800x600 ve 640x480 video mod ayarlarından birisini kullanabiliyor. (Bu video mod seçenekleri Monitor bölümündeki mode satırlarına ya da standart mod satırlarına karşılık gelir.) İkinci kullanılabilir ekran 8 bit renk derinliğini kullanır ve sadece 1024x768, 800x600, 640x480 video modlarını destekler.
Display de alt bölümler arasında seçim yapmak için bir tane DefaultDepth satırı eklenir. (Bu satır XFree86 3.3.6 ve öncesinde DefaultColorDepth olarak adlandırılır.) Bu örnekte X başlatılırken diğer seçenekler tarafından değiştirilmemişse 24 bit görünümü kullanır.

Son olarak

XFree86 4.x ve X.org-X11, Xfree86 3.3.6 yapılandırma dosyasında olmayan bir bölüme ihtiyaç duyarlar: ServerLayout. Bu bölüm X yapılandırmasındaki diğer tüm bileşenleri birbirine bağlar.

Section “ServerLayout”
    Identifier      “single head configuration”
    Screen          “Screen0” 0 0
    InputDevice  “Mouse0” “CorePointer”
    InputDevice  “Keyboard0” “CoreKeyboard”
EndSection
Normalde bu bölüm bir Screen bölümü ve iki InputDevice bölümlerini tanımlar. Başka yapılandırmalarında olması mümkündür. Örneğin; XFree86 ve X.org-X11 birden fazla monitörün oluşturduğu çok başlı ekranları destekler. Bu yapılandırmalarda ServerLayout bölümü birden fazla Screen bölümü içerir.

X Ekran Bilgisini Görüntülemek

Bazen ekranınızın yapabileceklerini bilmek yardımcı olabilir çünkü ekranınız X tarafından yönetilir. Bu iş için olan araç xdpyinfo dur. xdpyinfo yazdığınızda konsolda, sonuç olarak kullanılan ekranla ilgili, X versiyon numarası, var olan bütün ekranların çözünürlük ve renk derinliği ve bunun gibi çeşitli bilgiler ekrana gelir. Buradaki çoğu bilgi oldukça tekniktir bu yüzden hepsini anlamayabilirsiniz. Komutu çalıştırıp sonucunu inceleyip neleri anladığınızı görmek yardımcı olabilir. Bu bilgiye ulaşmanız gerektiğinde nasıl ulaşacağınızı öğrenmiş olacaksınız. Daha teknik ayrıntı için -ext parametresini xdpyinfo ile kullanabilirsiniz. (Temel xdpyinfo -ext komutu yapılabilecek genişletmeleri gösterecektir.)
Belirli bir pencere ile ilgili detaylı teknik bilgiyi xwininfo komutu ile öğrenebilirsiniz. Temel kullanımda xwininfo yazdığınızda fare işaretçisini istediğiniz pencereye getirip tıklamanız yeterlidir. Sonuç tıkladığınız pencereyle ilgili veriler, boyutu, konumu, ID numarası gibi şeyler olacaktır. Ayrıca -id ya da -name seçenekleriyle hangi bilgiyi öğrenmek istediğinizi belirleyebilirsiniz ya da -root ile bütün ekranı kapsayabilirsiniz.