Sistem Yönetimi
From OpenBSD Belgeleme Projesi
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.
- Dosya sistemi kontrol edilir.Eğer /etc/fastboot dosyası oluşturulmuşsa eğer dosya sistemi kontrolü yapılmaz
- Konfigurasyon değerleri /etc/r.conf dosyasından okunur ve sonra /etc/rc.conf.local dosyasından okunur.
- Dosya sistemi bağlanır (iliştirilir.)
- /tmp dizini temizlenir
- /etc/netstart ile ağ ayarları konfigüre edilir.
- Makine adı domain adı vs bilgiler ayarlanır.
- Kota vs gibi kontrol edilir.
- 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;
- http://www.sendmail.org/~ca/email/relayingdenied.html
- http://www.sendmail.org/tips/relaying.html
- http://www.sendmail.org/antispam.html
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.
- 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 $ "