Sistem Yönetimi

From OpenBSD Belgeleme Projesi

Contents

Neden root haklarına sahip olmak istediğimde(su -)hata alıyorum

Oluşturulan kullanıcılar güvenlik sebeplerinden dolayı “ wheel ” grubuna elle eklenmelidir. OpenBSD işletim sisteminde “ wheel ” grubunda olan kullanıcılar root haklarına sahip olmak için su komutunu kullanabilirler.” wheel ” grubunda olmayan kullanıcılar su komutunu kullanamazlar. Burada wheel grubuna dahil galkan kullanıcısının /etc/group dosyasında yer alan satırları yer almaktadır.

Yeni bir kullanıcıyı adduser komutuyla ekliyorsanız "Invite user into other groups:" ( kullanıcıyı diğer gruplara davet et ) sorusu ekrana geldiğinde ” wheel “ cevabı ile wheel grubuna ekleyebilirsiniz. Bu şekilde kullanıcı /etc/group dosyasına aşağıdakine benzer bir şekilde eklenir.

wheel:*:0:root,galkan

Eğer kullanıcıları “ wheel “ grubuna dahil etmeden sınırlı root kullanıcı haklarına sahip olması isteniyorsa , sudo kullanılabilir.

Dosya Sisteminin Kopyasını Nasıl Alırım

Dosya sisteminin kopyasını almak için dump ve restore kullanılır.Örneğin /KAYNAK dizini altındaki her şeyi /HEDEF dizinine kopyalamak için ;

# cd /KAYNAK; dump 0f - . | (cd /HEDEF; restore -rf - )

dump bir çok yedekleme yeteneğine sahip bir şekilde tasarlanmıştır ve dosya sisteminin bir parçasını yedeklemek istediğinizde ( yada hepsini )ararlı olabilir. Bu tarz işlemler için tar komutu daha hızlı olabilir. Şu şekilde kullanılabilir;

# cd /KAYNAK; tar cf -  . | (cd /HEDEF; tar xpf - )

Daemonları Nasıl Başlatabilirim?


OpenBSD rc(8) başlangıç stilini kullanır.Bunun için birkaç anahtar dosya kullanır.

  • etc/rc – Ana betik. Eklenme yapmayın!
  • /etc/rc.conf - /etc/rc tarafından kullanılan hangi programların açılışta başlayacağını bildiği konfigürasyon dosyası
  • /etc/rc.conf.local - Configuration file you can use to override settings in /etc/rc.conf so you don't have to touch /etc/rc.conf itself, which is convenient for people who upgrade often.
  • /etc/netstart - Script used to initialize the network. Shouldn't be edited.
  • /etc/rc.local – Yerel yönetim için kullanılan betik. Yeni programların. Yeni programların yada makine bilgilerinin bulunduğu dosya
  • /etc/rc.securelevel – Güvenlik seviyesi değiştirilmeden önce çalıştırılması gereken betik. Daha fazlası için init (8) bakın
  • /etc/rc.shutdown – Sistemin kapatılması sırasında çalışan betik. Sistem kapatılmadan önce yapılması istenenler bu dosyaya yazılabilir. Daha fazlası için rc.shutdown(8) e bakılabilir.


Rc Yapısı nasıl çalışır

Sistem yönetimi için önemli olan dosyalar /etc/rc.conf (veya /etc/rc.conf.local ) /etc/rc.local ve /etc/rc.shutdown olarak gösterilebilir.rc(8) ‘nin çalıştığına bakılacak olursa;

Çekirdek açılışı tamamlandıktan sonra , /etc/rc başlatılır.

  1. Dosya sistemi kontrol edilir.Eğer /etc/fastboot dosyası oluşturulmuşsa eğer dosya sistemi kontrolü yapılmaz
  2. Konfigurasyon değerleri /etc/r.conf dosyasından okunur ve sonra /etc/rc.conf.local dosyasından okunur.
  3. Dosya sistemi bağlanır (iliştirilir.)
  4. /tmp dizini temizlenir
  5. /etc/netstart ile ağ ayarları konfigüre edilir.
  6. Makine adı domain adı vs bilgiler ayarlanır.
  7. Kota vs gibi kontrol edilir.
  8. Yerel programlar /etc/rc.local ile başlatılır.

Openbsd İle Birlikte Gelen Servis Ve Daemonların Çalıştırılması

OpenBSD ile gelen bir çok program ve servisin açılışta aktif hale getirmek için /etc/rc.conf dosyasında gerekli değişikliklerin yapılması yeterli olacaktır./etc/rc.conf dosyasının içeriği aşağıdaki gibi olacaktır

ftpd_flags=NO           # for non-inetd use: ftpd_flags="-D"

Bu satır ile ftpd açılışta aktif hale gelmeyecektir

Yerel programların başlatılması ve konfigürasyonu

Port ağacından yada diğer yollardan kurulan programlar için /etc/rc.local dosyası kullanılmalıdır.Örneğin /usr/local/sbin/daemonx yolunda kurulmuş bir programımız olsun.Ve bu programın açılışta aktif hale gelmesi isteniyor.Bunun için /etc rc.local dosyasına aşağıdaki gibi satırlar eklenmelidir.

if [ -x /usr/local/sbin/daemonx ]; then
             echo -n ' daemonx';       /usr/local/sbin/daemonx
fi

Eğer program açılışta aktif hele gelmesse komutun sonuna & koymayı unutmayın. Bundan sonra program açılışta aktif hale gelecektir. Açılışta bazı hatalar ekrana gelebilir normal bir açılışta ekranda aşağıdaki gibi bir çıktı olacaktır;

Starting local daemons: daemonx.

rc.shutdown: rc.shutdown kapanma sırasında çalıştırılan bir betiktir.Makine kapanmadan önce yapmak istediğiniz bir şeyler varsa bu betiğe ekleyeerk yapabilirsiniz.

Mail Gonderirken “ Relaying Denied ” Hatası Alıyorum

Öncelikle bunu deneyin;

# grep relay-domains /etc/mail/sendmail.cf

Çıktı aşağıdaki gibi olacaktır.

FR-o /etc/mail/relay-domains

Bu dosya yoksa oluşturun. Mail gönderilmesi istenen makineler için aşağıdaki gibi satırların girilmesi gereklidir.

.domain.com    # domain.com içindeki herhangi bir makine için relay izni verilir.
sub.domain.com # sub.domain.com içindeki bütün makineler için relay izni verilir.
10.2           # 10.2.*.* subnetindeki bütün makineler için relay izni verilir

Sendmail’e ‘ HangUp ’ sinyali göndermeyi unutmayın. (Bu şekilde konfigürasyon dosyasının yeniden okunmasını sağlanır )

Örnek makaleler için;

Pop Erişimlerinde Sorun Yaşıyorum

Pop erişiminde yaşanan problemlerin bir çoğu geçici dosyalar ve kilit dosyalarından meydana gelir. Eğer pop sunucunuzda aşağıdaki gibi bir hata mesajı alıyorsanız

-ERR Couldn't open temporary file, do you own it?

İzinleri buna benzer olarak ayarlayın;

/var dizini için 
drwxrwxr-x   2 bin     mail     512 May 26 20:08 mail
/var/mail dizinindeki dosyalar için
-rw-------   1 username   username        0 May 26 20:08 username

Dikkat edilmesi gereken diğer bir hususta kullanıcının /var/mail dizini altındaki kendi dosyalarının izinlerinin kontrol edilmesidir. /var/mail/joe dizininin sahibi joe kullanıcısı olmalıdır. /var/mail dizininin mail grubu tarafından yazılabilir olması muhtemel bazı problemlere yol açabilir. Port koleksiyonlarindan kurabileceginiz bir çok POP sunucusu mevcuttur. Eger mümkünse, OpenBSD temel kurulumundaki popa3d'yi kullanin. Ya da, pop programi için yanlis bir seçenegi seçtiniz (nokta kilitleme gibi).

Ya da sadece kilitlendigi dizini degistirmeniz gerekiyor (her ne kadar kilitleme POP programi için bir anlam taşisa da)

NOT: OpenBSD ön tanımlı olarak mail grubu yoktur.Eğer ihtiyaç varsa aşağıdaki gibi bir satırın /etc/group dosyasına girilmesi yeterli olacaktır.

mail:*:6:

Sendmail Neden /etc/hosts Dosyasını yok Sayıyor

Sendmail ön tanımlı olarak isim çözünürlüğü için /etc/hosts dosyasını değil DNS sistemini kullanır. /etc/mail/service.switch dosyası değiştirilerek bu davranışı değiştirilebilir.

Eğer isim çözünürlüğü için DNS sisteminden önce hosts dosyası kullanılmak isteniyorsa aşağıdaki içeriğe sahip /etc/mail/service.switch dosyası oluşturulmalıdır.s

hosts       files dns


Eğer sadece hosts dosyası kullanıkmak isteniyorsa dosya içeriği aşağıdaki gibi olmalıdır.

hosts       files

Sendmail yeniden başlatılır:

# kill -HUP `head -1 /var/run/sendmail.pid`

ve değişiklikler aktif hale gelir.

SSL ile Güvenli HTTP sunucu Ayarları

OpenBSD hazır SSL httpd ve RSA kütüphaneleri ile birlikte gelir.httpd(8) kullanmak için sertifika oluşturmanız gerekmektedir. Sertifika /etc/ssl/private dizini altında karşılık gelen anahtar ile /etc/ssl dizini altında saklanır.Buradaki adımlar ssl(8) man sayfalarından alınmıştır.Burada web sunucular için nasıl RSA sertifikası oluşturulacağı gösterilmiştir. Nasıl yapılacağı için ssl (8) man sayfalarına bakabilirsiniz.

Başlamak için sunucu anahtarınızı ve sertifikanızı OpenSSL ile oluşturmalısınız.

# openssl genrsa -out /etc/ssl/private/server.key 1024

Eğer anahtarın şifrelenmiş olarak servisin açılışında sorulması isteniyorsa

# openssl genrsa -des3 -out /etc/ssl/private/server.key 1024


Bir sonraki adım sertifikayı imzalamak için sertifikalandırma yetkisi almak için kullanılan sertifika yetki isteği alınamasıdır. Bunu yapmak için

# openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr

server.csr dosyası sertifika yetkilendirilmesi için kullanılacaktır.

Kendi sertifikanızı kendiniz istiyorsanız

# openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \
-signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt

/etc/ssl/server.crt ve /etc/ssl/private/server.key ile httpd(8) i –DSSL bayraklarıyla başlatabilirsiniz.https 443’ü porttan çalışacaktır.

/etc/passwd'de yapılan Değişikliklerin Aktif Olması

/etc/passwd dosyasında direkt olarak değişiklik yaparsanız, bu değişiklikler kaybolacaktır.OpenBSD pwd mkdb ile dinamik olarak /etc/passwd dosyasını oluşturur.OpenBSD’de ana şifre dosyası /etc/master.passw dır. pwd_mkdb(8) göre ,

DOSYALAR

     /etc/master.passwd  geçerli şifre dosyası
     /etc/passwd         6. sürüm şifre dosyası
     /etc/pwd.db         güvenli olmayan şifre veritabanı dosyası
     /etc/pwd.db.tmp     geçici dosya
     /etc/spwd.db        güvenli veritabanı dosyası
     /etc/spwd.db.tmp    geçici dosya

/etc/passwd gibi geleneksel Unix şifre dosyasında , kullanıcının şifrelenmiş şifresi sistemdeki herhangi bir kullanıcıya açıktır.( Crack programlarının birinici hedefidir). 4.4BSD ile genişletilmiş ve sadece root kullanıcısı tarafından okunabilen master.passwd dosyası kullanıldı.

OpenBSD ile vipw(8) diye çağrılan şifre dosyasını değiştirmek için kullanılan bir araç gelir.Vipw vi kullanır ( yada $EDITOR ile belirtilen editörü ).Değişiklikleri yaptıktan sonra /etc/passwd , /etc/pwd.db ve /etc/spwd.db dosyalarını yaptığınız değişikliklere uygun bir biçimde yeniden oluşturur.Vipw ayrıca bu dosyaları o anda yapılabilecek değişiklikleri engellemek için kilitler

Kullanıcı İşlemleri

OpenBsd, sisteme kolayca kullanıcı eklemek için iki komut sunar:

  • adduser(8)
  • user(8)

vipw(8) kullanarak ellede ekleme yapabilirsiniz, ama bu daha zor bir iştir. En kolay kullanıcı ekleme yolu adduser(8) betiğini kullanmaktır. Adduser(8)’ i /etc/adduser.conf dosyasını düzenleyerek konfigüre edebilirsiniz. Adduser(8) /etc/passwd, /etc/group ve kabuk veri tabanlarında tutarlılık kontrolüne izin verir. Sizin için $HOME klasörünü ve diğer girişleri oluşturur. Kullanıcıya hoş geldiniz mesajı bile gönderebilir. Burada testuser isimli örnek kullanıcı sisteme eklendi. $HOME klasörü /home/testuser olarak verildi, guest grubuna dahil edildi ve /bin/ksh kabuğu verildi.

# adduser
Hiçbir uyarı ve soru  görmek istemiyorsanız ``-silent'' opsiyonunu kullanın.
Reading /etc/shells
Reading /etc/login.conf
Check /etc/master.passwd
Check /etc/group
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username []: testuser
Enter full name []: Test FAQ User
Enter shell csh ksh nologin sh [sh]: ksh
Uid [1002]: Enter
Login group testuser [testuser]: guest
Login group is ``guest''. Invite testuser into other groups: guest no 
[no]: no
Login class auth-defaults auth-ftp-defaults daemon default staff 
[default]: Enter
Enter password []: Type password, then Enter
Enter password again []: Type password, then Enter
Name:        testuser
Password:    ****
Fullname:    Test FAQ User
Uid:         1002
Gid:         31 (guest)
Groups:      guest
Login Class: default
HOME:        /home/testuser
Shell:i      /bin/ksh
OK? (y/n) [y]: y
Added user ``testuser''
Copy files from /etc/skel to /home/testuser
Add another user? (y/n) [y]: n
Goodbye!

Kullanıcı silmek için rmuser(8) aracını kullanmalısınız. Bu kullanıcının varolan her şeyini kaldırır. bütün crontab(1) girdilerini, $HOME klasörünü ve maillerini kaldırır. tabiki /etc/passwd ve /etc/group girdilerini de kaldırır. Aşağıda, yukarıda eklediğimiz kullanıcının kaldırılması örneği görülüyor. Kullanıcının adı ve kullanıcın ev klasörünün silinip silinmemesi konusunda uyarıldığınızı fark etmişsinizdir.

# rmuser
Enter login name for user to remove: testuser
Matching password entry:
testuser:$2a$07$ZWnBOsbqMJ.ducQBfsTKUe3PL97Ve1AHWJ0A4uLamniLNXLeYrEie:1002
:31::0:0:Test FAQ User:/home/testuser:/bin/ksh
Is this the entry you wish to remove? y
Remove user's home directory (/home/testuser)? y
Updating password file, updating databases, done.
Updating group file: done.
Removing user's home directory (/home/testuser): done.

user(8) ile kullanıcı ekleme bu araçlar adduser(8) den daha az interaktifdir. Bu araçların tümü:

  • group(8)
  • groupadd(8)
  • groupdel(8)
  • groupinfo(8)
  • groupmod(8)
  • user(8)
  • useradd(8)
  • userdel(8)
  • userinfo(8)
  • usermod(8)

Kullanıcı ekleme

Kullanıcı eklemenin etkili ve en kolay yolu adduser(8) komutunu kullanmaktır . yaygın olarak kullanılan komutlar /usr/sbin/user dizinindeki komutlardır.

Bu örneğimizde ,aynı kullanıcıyı aynı özellikleriyle beraber yukarda ekledik.Eğer kullanıcıyı eklemeden önce sabit ayaları biliyorsanız useradd(8) komutunun kullanımı daha kolaydır.Bu ayarlar //etc/usermgmt.conf dosyasında bulunur.

$ user add -D
group           users
base_dir        /home
skel_dir        /etc/skel
shell           /bin/csh
inactive        0
expire          Null (unset)
range           1000..60000

yukarıdaki ayarlar kullanıcıyı eklerken ekstra bir komutla özellik eklemediğimiz sürece geçerlidir.Mesela kullanıcıyı user grubuna değilde guest grubuna eklemek isteyebiliriz.Kullanıcı eklerken birde dikkat etmemiz gereken bir ayrıntı var bu da kullanıcının şifresini komut satırında belirtmeliyiz.şifrelemizi şifreli bir şekilde tutmak için encrypt(1) kullanmalıyız. OpenBSD de şifrelemek için genellikle Blowfish algorithm kullanılır.Burdaki örneğimizde useradd komutuyla beraber şifremizi şifreliyoruz.

$ encrypt -p -b 6
Enter string:
$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq

artık şifreli bi şifremiz var ve kullanıcı ekleyebiliriz.

# user add -p '$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq' -u 1002 \
-s /bin/ksh -c "Test FAQ User" -m -g guest testuser

NOT: şifrelemek için kullancağımız sözcük katarını tırnak(‘ ‘ ) içine aldığımızdan emin olmalıyız.Bunlara ek olarak eğer kullanıcının home dizinini oluşturmak istersek ve /etc/skel dosyasındaki bilgileri kulalnıcının home dizinine kopyalamak için komutumuza –m seçeneğini ekleyebiliriz.

Aşağıda doru şekilde oluşturulmuş bir kullanıcı görebilirsiniz.Ayrıca örneğimizde her şeyin doğru bir şekilde oluşturulduğunu basit birkaç komutla görebiliriz.

$ ls -la /home
total 14
drwxr-xr-x   5 root      wheel   512 May 12 14:29 .
drwxr-xr-x  15 root      wheel   512 Apr 25 20:52 ..
drwxr-xr-x  24 ericj     wheel  2560 May 12 13:38 ericj
drwxr-xr-x   2 testuser  guest   512 May 12 14:28 testuser
$ id testuser
uid=1002(testuser) gid=31(guest) groups=31(guest)
$ finger testuser
Login: testuser                         Name: Test FAQ User
Directory: /home/testuser               Shell: /bin/ksh
Last login Sat Apr 22 16:05 (EDT) on ttyC2
No Mail.
No Plan.

Bu komutlara ek olarak user(8) ın desteklediği userinfo(8) da kullanabiliriz.

$ userinfo testuser
login   testuser
passwd  *
uid     1002
groups  guest
change  Wed Dec 31 19:00:00 1969
class
gecos   Test FAQ User
dir     /home/testuser
shell   /bin/ksh
expire  Wed Dec 31 19:00:00 1969

Kullanıcı Silme

kullanıcı sileceğimiz zaman ise userdel(8) kullanabiliriz.son örneğimizide eklediğimiz kullanıcıyı kaldıralım şimdi :

# userdel -r testuser

-r seceneğine dikkat etmeliyiz.Çünki –r seçeneği kullanıldığın kullanıcının home dizini silinir.Fakat –r yerine –p kullanırsak kullanıcıya ait hiçbir bilgi silinmez sadece hesabı kilitlenmiş olur.

Sadece FTP hakkına sahip kullanıcı oluşturma

Bu birkaç yoldan yapılabilir. Fakat en çok kullanılan yöntem “/usr/bin/false” satırının “/etc/shells” dosyasına eklenmesidir. Bundan sonra kullanıcının kabuğu “/usr/bin/false” olarak ayarladığında , kullanıcı sistemem giriş yapamayacak ancak ftp yapabilecekdir. İstenilirse kullanıcının ftp yaptığı ev dizininde sınırlamalar yapılabilir

Kota Ayarları

Kota kullanıcının disk üzerinde kullandığı alanın sınırlandırılması için kullanılır. Kısıtlı kaynaklara sahip olunduğunda kullanılması oldukça kullanışlı olabilir. Kota kullanıcı yada grup bazlı uygulanabilir.

Kota uygulanabilmesi için ilk adım “option QUOTA “ satırının çekirdek konfigurasyon dosyası içerisinde yer almalısıdır.Bu seçenek GENERIC çekirdek konfigurasyonunda yer alır. Daha sonra hangi dosya sistemi için kota uygulamasının uygulanacağı /etc/fstab dosyası içerisinde belirtilmelidir.

Ön tanımlı olarak quota.user ve quota.group dosyası kota bilgilerini tutmak için dosya sisteminin en tepesinde oluşturulurlar.

Hazır olarak oluşturulan bu dosyalar belirttiğimiz dosya ismiylele oluşturulurken /etc/fstab dosyasında bulunan kota seçenekleride göz önünde bulundurulur örnek olarak "userquota=/var/quotas/quota.user". Burdaki örnekte /etc/fstab dosyası userquota nın aktif olduğu bir dosya sistemidir. Ve kota dosyası genel olarak bu adreste bulunur

/dev/wd0a / ffs rw,userquota=/var/quotas/quota.user 1 1

Artık kullanıcı kotalarını ayarlayabiliriz.Bunu yaparkende edquota(8) kullanmamız yararlı olur.Kolayca kullanımı ise "edquota <user>" şeklindedir.edquota(8) ,kotaları düzenlemek için sistemde seçili olan başka bir derleyici olmadıkça vi(1) editorunu kullanır.Örnek olarak kullanımı

# edquota joe

bu komutun cıktısı aşağıdaki gibidir :

joe kullanıcısı için kotalar:
/: blocks in use: 62, limits (soft = 0, hard = 0)
        inodes in use: 25, limits (soft = 0, hard = 0)

Kota ayırmasının 1K'lık bloklardan oluştuğuna dikkat edin. Bu durumda softlimit 1000k'ya ayarlıdır ve hardlimit 1050k'dır. Softlimit, aşıldığı takdirde ve nezaket süreci dahilinde disk kullanımı tanımlı sınırın altına düşünceye kadar kullanıcının uyarıldığı bir sınır değeridir. Nezaket süreçleri edquota(8 )'deki -t seçeneği ile ayarlanabilir. Nezaket süreci sona erdiğinde softlimit işler

Şimdi kotalar hazır,artık kotaları dosya sistemi seçenekleriyle beraber başlatabiliriz. bunun için quotaon kullanacağız.Örnek olarak

# quotaon -a

Artık kotalar aktif hale geldi ve çalışıyor,kotaların kullanımını quota(1) kullanarak görebiliriz."quota <user>" komutu ise kullanıcıların kota bilgilerini verir.eğer hiç bir değer berlirtmeden sadece "quota" kullanırsak bize kota istatistiklerini verir.Örnek olarak :

# quota cihan

çıktısı aşağıdaki gibidir :

Disk quotas for user cihan (uid 1001): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
             /      62    1000    1050              27       0       0        

genel olarak kotalar, sistem başlarken /etc/fstab içinde bulunur.kotaları kapatmak için ise :

# quotaoff -a

KerberosV İstemcileri Ve Sunucuları


OpenBSD, hazır yüklenen bileşen olarak KerberosV u içerir. KerberosV hakkında daha fazla bilgi için OpenBSD sistemimizde kullanacağımız komut:

# info heimdal

Anonim FTP hizmetlerinin ayarlanması

Anonim FTP, dosya transfer protokolü yoluyla kullanıcıların bir bilgisayardaki dosyalara erişimini sağlar. Burada anonim bir sunucu kurulumuna, loglama ve benzerine ilişkin genel bir bakış yer alacaktır.

FTP Hesabı Eklemek

Başlangıç için sisteminizde "ftp" adlı bir hesaba ihtiyacınız var. Bu hesabın kullanılabilir olmayan bir parolası olmalıdır. Burada oturum açma dizinini /home/ftp olarak belirleyeceğiz, ancak siz istediğiniz gibi belirleyebilirsiniz. Anonim ftp kullanırken ftp programı kendisini, ‘ftp’ kullanıcısının ev dizinine chroot yapar. Daha fazla bilgi için ftp(8) ve chroot(2) kılavuzlarını okuyun.


İşte bir ftp kullanıcısı açma örneği. adduser(8) kullanarak bunu yapacağım. Ayrıca /usr/bin/false’u /etc/shells’e eklememiz gerekiyor, bu ftp kullanıcısına vereceğimiz “kabuk” olacaktır. Bu, boş şifre vermiş olsak bile kullanıcıların oturum açmalarına izin vermeyecektir. Bunu yapmak için basitçe echo /usr/bin/false >> /etc/shells yapmamız yeterlidir. Ayrıca bu kabuğun adduser sorularında görünmesini istiyorsanız /etc/adduser.conf dosyasını düzenlemeniz gerekir.

# adduser
Use option ``-silent'' if you don't want to see all warnings and questions.
Reading /etc/shells
Reading /etc/login.conf
Check /etc/master.passwd
Check /etc/group
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username []: ftp
Enter full name []: anonymous ftp
Enter shell csh false ksh nologin sh tcsh zsh [sh]: false
Uid [1002]: Enter
Login group ftp [ftp]: Enter
Login group is ``ftp''. Invite ftp into other groups: guest no 
[no]: no
Login class auth-defaults auth-ftp-defaults daemon default staff 
[default]: Enter
Enter password []: Enter
Set the password so that user cannot logon? (y/n) [n]: y
Name:        ftp
Password:    ****
Fullname:    anonymous ftp
Uid:         1002
Gid:         1002 (ftp)
Groups:      ftp
Login Class: default
HOME:        /home/ftp
Shell:       /usr/bin/false
OK? (y/n) [y]: y
Added user ``ftp''
Copy files from /etc/skel to /home/ftp
Add another user? (y/n) [y]: n
Goodbye!

Dizin Ayarlama

Buraya kadar yapılanlarla kullanıcının yanında /home/ftp dizini de oluşturuldu. Bu tam istediğimiz şey, ancak anonim ftp’nin hazır olması için yapmamız gereken bazı değişiklikler vardır. Yine bu değişiklikler ftp(8) kılavuz sayfasında açıklanmıştır.

/home/ftp/usr veya /home/ftp/bin dizini oluşturmanıza gerek yoktur.

  • /home/ftp – Bu ana dizindir. root tarafından 555 ile sahiplenilmelidir.
  • /home/ftp/etc – Bu tamamen isteğe bağlıdır ve yalnızca sunucumuzda hangi kullanıcıların yer aldığına dair bilgi verme işini gördüğünden tavsiye edilmez. Eğer anonim ftp dizininin dosyalara iliştirilmiş gerçek kullanıcılara sahip gibi olmasını istiyorsanız, /etc/pwd.db ve /etc/group’u bu dizine kopyalamalısınız. Bu dizin 511 ve bu iki dosya da 444 kipinde olmalıdır. Bunlar rakamların aksine sahip isimlerinin verilmesinde kullanılırlar. pwd.db içerisinde saklanmış herhangi bir parola yoktur, tamamı spwd.db içinde bulunmaktadır, o nedenle bu dosyayı üzerine kopyalamayın.
  • /home/ftp/pub – Bu paylaşacağınız dosyaları konumlandıracağınız standart dizindir. Bu dizin de 555 kipinde olmalıdır.

Tüm bu dizinlerin “root” tarafından sahiplenilmesine dikkat edin. Aşağıda, dizin oluşturma işlemi sonrası dizin yapısının neye benzeyeceğini görebilirsiniz.

# pwd
/home
# ls -laR ftp
total 5
dr-xr-xr-x  5 root  ftp    512 Jul  6 11:33 .
drwxr-xr-x  7 root  wheel  512 Jul  6 10:58 ..
dr-x--x--x  2 root  ftp    512 Jul  6 11:34 etc
dr-xr-xr-x  2 root  ftp    512 Jul  6 11:33 pub
ftp/etc:
total 43
dr-x--x--x  2 root  ftp    512 Jul  6 11:34 .
dr-xr-xr-x  5 root  ftp    512 Jul  6 11:33 ..
-r--r--r--  1 root  ftp    316 Jul  6 11:34 group
-r--r--r--  1 root  ftp  40960 Jul  6 11:34 pwd.db 
ftp/pub:
total 2
dr-xr-xr-x  2 root  ftp  512 Jul  6 11:33 .
dr-xr-xr-x  5 root  ftp  512 Jul  6 11:33 ..

Sunucunun ve loglamanın başlatılması

ftpd ile başlatma işi için inetd’yi veya rc scriptlerini seçebilirsiniz. Buradaki örnekler inetd.conf ile başlatmaya yöneliktir. Öncelikle ftpd seçenekleri ile daha fazla aşina olmamız gerekiyor. /etc/inetd.conf dosyasındaki varsayılan satır aşağıdaki gibidir:

ftp             stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -US

Burada ftpd –US ile çağrılmıştır. Bu anonim bağlantıları /var/log/ftpd’ye ve eş zamanlı oturumları /var/run/utmp’ye loglayacaktır. Bu, bu oturumların who(1) yoluyla gözlemlenebilmesine olanak sağlayacaktır. Bazen kullanıcılara izin vermeyerek sadece anonim olarak sunucunuzu çalıştırmak isteyebilirsiniz. Böyle yapmak için ftpd’yi -A seçeneğiyle çağırın. Aşağıda ftpd’yi yalnızca anonim bağlantılar için başlatan bir satır yer alıyor. Bu ayrıca -ll seçeneğinin kullanımıyla get, retrieve gibi ftp komutlarının syslog’a kaydedilmesini sağlar.

ftp             stream  tcp     nowait  root    /usr/libexec/tcpd       ftpd -llUSA

Not – YÜKSEK trafikli ftp sunucusu kullananlar için ftpd’nin inetd.conf’dan çağrılmamasını isteyebilirsiniz. Bu durumda en iyi seçenek inetd.conf’daki ftpd satırının iptal edilmesi ve ftpd’nin rc.conf’dan -D seçeneğiyle çağrılmasıdır.

Bu, ftpd’nin inetd ile tepeden inme başlatılması yerine program olarak başlatılmasını sağlar. Aşağıda rc.conf’dan başlatma için gerekli satır yer alıyor.

ftpd_flags="-DllUSA"           # for non-inetd use: ftpd_flags="-D"

Bu elbette ftpd’nin /etc/inetd.conf dosyasında çıkarılması ve inetd’nin, kendi yapılandırma dosyasını yeniden okumasıyla mümkündür.

İlgili diğer dosyalar

  • /etc/ftpwelcome – ftp sunucunuza bağlanan kullanıcılara yönelik “hoş geldin” mesajını içerir.
  • /etc/motd – ftp sunucunuza başarıyla bağlanan kullanıcıların alacağı “günün mesajı” iletisini içerir.
  • .message – Herhangi bir dizine konabilir. Kullanıcı bu dosyanın olduğu dizine girdiğinde görüntülenir.

ftpd(8) içerisinde diğer ev dizinlerine kullanıcıları sınırlamak


Varsayımla ftp tarafından loglandığında kullanıcılar kabul edilen dosya sistemi üzerinde hiçbir dizini değiştiremezler. Bu bazı nedenlerde arzu edilmeyebilir. Bu kullanıcıların kendi ev dizinlerinde ftp oturumlarını görebilmelerini kısıtlamak mümkündür.

Eğer sadece ftp loginlerine chroot etmeye izin verirseniz, ftpd’yi –A seçeneğiyle kullanın. Daha iyi seyler uygulamak istiyorsaniz. OpenBSD’nin "login capability infrastructure" ve ftpd(8) yi birlikte kullanmaı deneyebilirsiniz.

Kullanıcılar login sınıfında ftp-chroot değişken ayarıyla otomatik chroot edilirler.Ek olarak /etc/ftpchroot dosyasına kullanıcı adı ekleyebilirsiniz. Bir kullanıcının sadece bu yerlerden birinde listelenmeye ihtiyacı olacaktır.

OpenBSD’de yamaları uygulamak

OpenBSD’yle, buglar meydana gelir.Bazı buglar güvenilirlik sorunlarına yol açabilir.(Bazı seyler sistemi durdurmaya neden olabilir.) Diğer buglar güvenlik açıklarına yol açabilir.Kritik bir bug bulunduğunda , -current kaynak ağacına işleyecek ve yamalar OpenBSD’nin supported releases için serbest bırakilacaktır..Bu yamalar errata web page de bulunmaktadır.

Not: Yamalar OpenBSD’ye yeni ekler için yapılmamakla birlikte, etkili sistemler üzerinde doğru adreslemenin gerektirdiği güvenlik ve güvenilirlik problemleri için yapılmıştır.

Yamalı kodlarla sistemimizi update etmenin 3 yolu vardır.


  • Sisteminizi –current a upgrade edin: -current kod tabanında tüm düzeltmeler uygulandığı gibi son fotografları sisteminize update edebilecek en iyi yoldur.Bunun yanısıra –current ı çaliştirmak herkes için değildir.
  • Sisteminizi -stable a update edin: -stable kısmı alınarak kullanılan kaynak ağacını update etmek ve kullanılan dosyalarla kerneli derlemek için yapıldı.Bunların üzerinde eğer limitli bir bantgenişliğiniz varsa kaynak tamamlamak uzun zaman alsada mümkün olan en iyi yoldur.
  • Yama derlemek ve sıkıştırılmış dosyaları indirmek Bu, aşağıdaki örneğimiz için kullanacağımız durumdur.Bu tüm kaynak kod derleyicisi ve cvs güncellemesinden tipik olarak daha az zaman ve daha az bant genişliği gerektirirken bazen de daha zor bir seçenek olabilir.Bazen yama yapmanız, tekrar derlemeniz ve bir uygulama indirmeniz gerekebilir.Bazen de eğer bir kütüphane dosyasında bir problem varsa ağacın tüm kısımlarını recompile(tekrar derleme) yapmanız gerekebilir.

Sıkıştırılmış dosyaları yamamak her zaman kolay değildir.Bu yüzden OpenBSD’nin –stable kısmını izlemek ciddi düşünceler verebilir.Kaynaştırmak ve bunları birbirleriyle uyumlaştırmak yamalama çözümü olarak düşünülebilir tabi eğer herşeyin nasıl çalıştığını anlıyorsanız. Fakat yeni kullanıcılar bir metod saptamalı ve bu metodla takılmalıdırlar.

How are "errata" patches different from what is in the CVS tree?

Kurtarma kaynak ağacına karşı direk olarak tüm yamalar errata web page de ilan edilmiştir.En son CVS ağacına karşı yamalar bir kurtarma sistemi üzerinde istenmeyen diğer değişiklikleri de kapsar.Bu önemlidir. Bir fotoğraf indirirseniz aynı zamanda kaynak ağaçları doğru olup olmadığını öğrenmeye çalişacaktır.Ve ilan edilen bir yamayı kullanarak yamamayı deneyecektir.Kod değişebileceği gibi iyi bir yamayı da bulamayabilirsiniz.

Yamaları Uygulamak

OpenBSD işletim sistemi için yamalar orjinal kaynak koduna farklılıklar devam ettirerek text dosyaları olan “Unified diffs” gibi yayılır. Ikili(binary) formda dağıtılmazlar.Bunun anlamı OpenBSD’nin RELEASE(kurtarma) versiyonundan kolaylıkla elde edilebilir kaynak kodlara sahip olarak sisteminizi yamamaktır.Genel olarak geçerli olan tüm kaynak ağacına sahip olmalısınız.Eğer resmi bir CDROM ‘dan kurtarmayı çalıştırıyorsanız kaynak ağaçlar 3 disk üzerinde geçerlidir.Bir de ftp serverlardaki dosyalar kadar geçerlidirler.Biz tüm bu ağaç uygunluğuna sahip olduğunuzu farzedeceğiz.

Buradaki örneğimizde bant sürücülerinde kullanılan st(4) driveri ile ilişkili OpenBDS 3.6 için 001 yamasına bakacağız.Bu yama olmadan yedeklerden veri kurtarmak oldukça zordur.Bir bant sürücü kullanırken bu yamaya ihtiyacımız vardır.Yamamıza bakalım.

# more 001_st.patch
Apply by doing:
        cd /usr/src
        patch -p0 < 001_st.patch

Kerneliniz tekrar yapılandırılıyor.

Index: sys/scsi/st.c
===================================================================
RCS file: /cvs/src/sys/scsi/st.c,v
retrieving revision 1.41
retrieving revision 1.41.2.1
diff -u -p -r1.41 -r1.41.2.1
--- sys/scsi/st.c       1 Aug 2004 23:01:06 -0000       1.41
+++ sys/scsi/st.c       2 Nov 2004 01:05:50 -0000       1.41.2.1
@@ -1815,7 +1815,7 @@ st_interpret_sense(xs)
        u_int8_t skey = sense->flags & SSD_KEY;
        int32_t info;
-       if (((sense->flags & SDEV_OPEN) == 0) ||
+       if (((sc_link->flags & SDEV_OPEN) == 0) ||
            (serr != 0x70 && serr != 0x71))
                return (EJUSTRETURN); /* let the generic code handle it */

Yamanın en üstünde uygulaması hakkında kısa br bilgi içeriyor.Bir sonraki adımda izlenmek üzere bu yamayı /usr/src dizini içerisine koyduğunuzu farz ediyoruz.

# cd /usr/src
# patch -p0 < 001_st.patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Apply by doing:
|        cd /usr/src
|        patch -p0 < 001_st.patch
|
|Rebuild your kernel.
|
|Index: sys/scsi/st.c
|===================================================================
|RCS file: /cvs/src/sys/scsi/st.c,v
|retrieving revision 1.41
|retrieving revision 1.41.2.1
|diff -u -p -r1.41 -r1.41.2.1
|--- sys/scsi/st.c      1 Aug 2004 23:01:06 -0000       1.41
|+++ sys/scsi/st.c      2 Nov 2004 01:05:50 -0000       1.41.2.1
--------------------------
Patching file sys/scsi/st.c using Plan A...
Hunk #1 succeeded at 1815.              <-- Look for this message!
done


Yukaridaki ‘Hunk #1 succeeded’ mesajı yamanın başariyla uygulandığını işaret etmektedir.Birçok yamalar bundan daha karışıktır ve birçok iri parçalar ve dosyalar gerektirecektir.Bu durumda tüm parçalar tüm dosyalar üzerinde başarılı olduğunun doğrulanması gerekir.Aksi takdirde bilgileri dikkatle izlemezsiniz ya da yamanız bozulurdu.Yamalar “white space” e çok duyarlıdır.Browserinizdan kopyalamak ve yapıştırmak aralıklar içinde tab karakterlerini sıksık değiştirecektir ya da uygulamasız yapmak dosyanın “white spaceini(beyaz alan)” değiştirecektir.

Bu noktada normal olarak kerneli inşa edebilirsiniz.İndirin ve sistemi reboot edin.

Bütün yamalar kernel içn değildir.Bazı durumlarda bireysel işe yarar olanları tekrar yapılandırmak zorunda kalırsınız.Bazı zamanlarda ise bir yama kütüphanesine static olarak tüm işe yararları birleştirerek tekrar derlersiniz.Yama başlığında yol gösterimi izleyerek eger süpheliyse tüm sistemi tekrar yapılandırırsınız.

Yamalar genellikle uygulama ihtiyacı olmayan özel sisteminize konu dışıdır.Örneğin sisteminizde bant sürücüsü yoksa yamayla bir yarar sağlayamayacaksınız.Bununla birlikte yamaları “düzen içinde” uygulamayı varsayarız.Yani bir sıra ile.Bir yamanın bir önceki yamayla da ilişkili olacağı mümkündür.Bunun farkında olarak uygulayacağınız yamalari seçerek bir sıra ile onları uygulamalısınız.

Apache Chroot() Hakkında bilgilendirme

OpenBSD’de Apache sunucusu default, chroot olarak gelir.Bu güvenliği muazzam derecede artırırken bazı sorunlar da yaratabilir.Tabi eğer hazırlanmamışsanız.

Chroot nedir?

Chroot uygulaması belli bir dizin içindeki kilitlenmedir ve dizin ağacının dayanaklarından ayrılamaz ve “/” root dizini gibi gözükür. Httpd(8) durumunda program başlar, log dosyalarını açar, TCP portlarını bağlar ve konfigurasyonu okur.Bunun anlamı tüm dosyalar /var/www dizini içerisinde olması gerekir ve Apache tarafından kullanılır.Bu güvenliğe çok yardım eder.Apacheyle birlikte güvenlik sorunu olması halinde sadece okuma izniyle ve zarara neden olan kaynak tek bir dizine hapsedilecektir.

What does this mean to the user?

Sözümüzü sakınmadan koyalım,chroot etmek Apache için yeni birşeydir ve diğer işletim sistemlerin çoğunda default olarak bulunmaz.Birçok uygulamalar ve system konfigurasyonları kişiselleştirmeden bir chroot da çalişmaz.

  • Tarihsel Dosya Sistemi Tasarlamak: OpenBSD’nin eski versiyonlarından upgrade edilen sunucular kullanıcı dizinlerinde web dosyaların yeri saptanılır. Httpd’nin /home dizinine erişemeyeceği gibi bir chroot’da da açıkca çalişamazlar.Bir de system yöneticileri girilen /var/www kısmının tüm web dosyalarını tutmak için çok kücük olduğunu keşfedebilirler.Seçenekleriniz tekrar yapılandırmak ya da chroot(2)’u kullanmamak olabilir.Elbette /var/www içerisinde alt dizinleri göstererek kullanıcıların ev dizinlerinde sembolik linkler kullanabilirsiniz.Ama dosya sistemlerin diğer kısımlarına /var/www içindeki linkleri göstererek kullanamazsınız.Bu chroot çaliştırıcısı tarafından engellenir.Kullanıcılarınızın FTP erişim chrootuna sahip olmasını istiyorsanız bu çalişmayacaktır.Tıpkı, FTP chroot sembolik linklerin amaçlarına erişimden sizi engellemesi gibi.Bunun bir çözümü /var/www/home ‘a benzer şeyler kullanmaktansa bu kullanıcılar için home dizinleriniz gibi /home kullanmayın.
  • Log Rotasyonu:Normal olarak loglar eski dosyalara isim yenilemeyle çevrilirler.Daha sonar httpd’ye eski log dosyalarının kapanması ve yenilerinin açılması için bir SIGUSR1 sinyali gönderirler.Httpd(8) eski dosyaları açma yeteneğine sahip olmadığı için bu uzun bir mümkünlük değildir. Httpd durdurulmalı ve tekrar baslatılmalıdır.


# apachectl stop && apachectl start
  • Birde diğer gecerli stratejiler vardır.Bir pipe(2) loglamayı içermek ve pipe(2) nin sonunda döndüren yüzeysel bir log kullanmak.
  • Apache Modüllerine Mevcut olmak:Neredeyse yüklenen herşey ya da bazıları tam olarak chroot(2) da çalişmayabilir ve birçoğu “apachect1 restart ” üzerinde sorunlara sahiptir.
  • CGI’lara Mevcut olmak: Birçoğu çalışmayacaktır./var/www dışında kütüphanlere ya da programlara ihityaç duyabilirler.Bazısı derleyici tarafından sorun teskil edebilir.Bu yüzden diğer dizinler içindeki kütüphanelere ihtiyaç duymadan statik olarak bağlanmalılar. Birçoğu , uygulama tarafından istenen dosyalarla /var/www dizininden dolayı problem oluşturabilirler.Birçok kullanıcı kolayını bulacaktır.Sadece onları update edene kadar chroot özelliği disable etmek olabilir.

Bazı durumlarda uygulama ya da konfigurasyon chroot içinde çalışması değiştirilebilir.


Example of chroot(2)ing an app: wwwcount

Bir süreç örneği gibi bir uygulamada chroot özelliği kullanılabilir.Portların içinde geçerli olan kolay bir web sayfası sayacı wwwcount’a bakacağız.Çok etkili bir programken,Apache chroot ‘u hakkında hiçbirşey bilmez ve varsayılan konfigurasyonda chroot özelliği çalişmayacaktır.

Önce wwwcount için bir paket indireceğiz.Ayarlayıp test edeceğiz ve çalişmamadığı bulacağız. Apache mesajının söylediğini alalım.”Internal Server Error”. İlk adım durdurmak ve tekrar başlatmak olmalıdır. Apache –u ile chroot problemini değiştirir ve bu system ayarı değildir.

# apachectl stop
   /usr/sbin/apachectl stop: httpd stopped
# httpd -u

Bunun yaptıktan sonra sayacın düzgün çaliştiğini görürüz.Hiç olmazsa bir dizin üzerindeki sahipliği değiştirebiliriz.Bu yüzden Apache tutulan dosyalara yazamaz.Böylece kesinlikle bir chroot probleme sahip olacağız. Varsayılan chroot’u kullanabilmek için tekrar Apache’yi durdurup yeniden başlatmalıyız.

# apachectl stop
/usr/sbin/apachectl stop: httpd stopped
# httpd

İyi bir başlangıç noktası olacağı varsayılarak wwwcount chroot içindekileri alamayan diğer dosyaları ve bazı kütüphaneleri kullanır. Biz ldd komutunu CGI’ın ihtiyacı olan dinamik nesne bağlılıklarını ögrenmek için kullanabiliriz.

 # cd /var/www/cgi-bin/
 # ldd Count.cgi
 Count.cgi:
        Start    End      Type Ref Name
        00000000 00000000 exe   1  Count.cgi
        03791000 237ca000 rlib  1  /usr/lib/libc.so.30.3
        03db4000 03db4000 rtld  1  /usr/libexec/ld.so

Evet, burada bir problem var.iki dosya chroot içinde mevcut değil.Bu yüzden oraya biz kopyalayacağız.

   # mkdir -p /var/www/usr/lib /var/www/usr/libexec
   # cp /usr/lib/libc.so.30.3 /var/www/usr/lib
   # cp /usr/libexec/ld.so /var/www/usr/libexec
Ve sayacı tekrar deneyelim.

Güzel , sonunda program çalışıyor ve direk olarak bize hata mesajlarını veriyor.”Unable to open config file for reading” görüldügü gibi ayar dosyası okunmak için açılamıyor.Gelişme henuz yapılmadı.Konfigurasyon dosyası normal olarak /var/www/wwwcount/conf içerisindedir. Ama chroot içinde /wwwcount/conf olarak görünecektir. Seçeneğiniz dosyaların bulunduğu yerde çalışmak ya da veri dosyalarını taşıyarak programı tekrar derlemek. Paketten indirdiğimiz gibi sadece veri dosyasını taşıyacağız.Bir sıra içinde aynı ayarı kullanarak chroot etmek ya da etmemek. Sembolik linkleri kullanacağız.


   # mkdir -p /var/www/var/www
   # cd /var/www/var/www
   # ln -s ../../wwwcount wwwcount

Tekrar test edelim ve diğer sorunları bulalım.Şimdi wwwcount görüntüleme mesajları için kullanılan “strip image” dosyasını bulamamaktan şikayet ediyor.Küçük bir araştırmadan sonra /usr/local/lib/wwwcount içinde tutulan bu dosyayı buluyoruz ve bunları chroot içerisine kopyalıyoruz.

  1. tar cf - /usr/local/lib/wwwcount | (cd /var/www; tar xpf - )
Tekrar test edelim… İşte çalışıyor..!

Bu örnekte, program oldukça kolaydı ve henüz problemlerin birkaç farklı türünü gördük.Bazı uygulamaların anlaşılması güzeldir ve chroot etme bir fikir verir.Diğerleri karışıktır.Bazı zamanlarda sistemin chroot içerisine yeteri kadar kopyalarsınız ve chroot’ un yararını kaybedersiniz. Bunun kadar kolay bir uygulamayla diske yazılarak chroot’un bazı yararları kaybolur.Genel olarak chroot içerisine uygulamanın çalişması için minimum dosyaların kopyalanması yeterli olacaktır.


Varsayılan Root kabuğunu değiştirmek

Bazen birilerinin root kabukta hiçbirşey değiştirilemez dediğini görüyoruz.OpenBSD içinde değiştirilememesi için bir neden yoktur. OpenBSD’ de varsayılan kabuk root için ksh’ dir Geleneksel bir Unix ana hatlarinda, sadece root için kabuklar statik olarak derlenerek kullanılır.Çünkü sisteminize tek kullanıcı modunda girdiğinizde root olmayan kısımlar bağlanamayacak ve /usr kısmında yerleştirilen kütüphaneye erişim sağlanamayacaktır.Bu OpenBSD için kayda değer bir sorun değildir.Tek kullanıcı modunda girdiğinizde kabuk için sistem sizi yönlendirecektir ve varsayılan sh dır.OpenBSD’de 3 standart kabuk vardır. Csh,sh ve ksh. Hepsi statik olarak bağlıdır ve bu şekilde tek kullanıcı modunda kullanılabilir.

ksh ile Başka Ne Yapabilirim?

OpenBSD’de ksh pdksh’tır. Public Domain Korn Shell. Ve sh gibi aynı ikilidir. Kullanıcılar Linux sistemler üzerinde bash kabuğunu rahatça kullanırlar .Ksh !ı mutlaka tenıdık bulacaklardır.Ksh ,tab sonlandırmalarını kapsamak,komut satırı eklemek,ok anahtarları üzerinde tarih ve komut satırının başından sonuna atlamak için CTRL-A\CTRL-E’i kullanmak gibi ortak özelliklerin çoğunu bash içinde de kullanılmasını sağlar.Eğer bash da bulunan diğer paketler de istenirse, bash heriki paketi ya da portu kendisi yükleyebilir. Ksh’in komut yönlendiricisi PS1 değişkeninin ayarladığı “$” varsayımından daha cok bilgi sağlayacak şeylere kolayca değiştirilebilir. export PS1='$PWD $ ' in your /etc/profile produces the following command prompt: /home/nick $ User’s.profile inizde başvurabileceğiniz birçok özellik ve örnek içeren /etc/ksh.kshrc dosyasına bakın. OpenBSD 3.7 ile başlamak ,PS1 için özel karakterlerin bir numarasıyla artırıldı.Bash’da da kullanılan benzerdir.Örnegin: \e – ASCII karakter gir. \h - hostname, domain name yok \H - Tam hostname, domain name de içerir. \n – Yeni bir satır karakteri gir. \t – Zaman akışı, 24-saat HH:MM:SS formatı. \u – Kullanıcıların isim akışları \w – Çalişma dizini akısı. $HOME `~' gibi kısaltılmışı. \W – Çalişma dizininin temel adı.. (ksh(1) için detayları görmek için man sayfalarına bakın.!) Bu komut da kullanılabilirdi.: export PS1="\n\u@\H\n\w $ "