19 Ocak 2007

dosya izinlerindeki s biti

Bazı dosyalarda çalıştırılabilir biti (x) yerine s görebilirsiniz. Bu demek oluyor ki program çalıştırıldığında, çalıştıran değil de dosyanın sahibi effective user olsun. Ama hala real user programı çalıştırandır. Bunu da setuid ailesi fonksiyonlarla değiştirebiliriz.

Neyse bunların nerede lazım olduğuna bakacak olursak, her yerde lazımlar :) Mesela passwd komutuyla şifremizi değiştiriyoruz. Nasıl oluyor da bizim çalıştırdığımız bir program /etc/shadow dosyasını değiştiriyor yetkimiz olmadan. Çünkü bu uygulamalar s biti kullanılan setuid uygulamalarıdır.

alp@AR-deb:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 28480 2006-12-07 18:28 /usr/bin/passwd

Gördüğünüz gibi dosyanın sahibi root ve s biti ayarlanmış. Yani çalışınca effective user root olacak.

18 Ocak 2007

grub freebsd

Grub ı hepimiz biliriz mükemmel bir boot loader dır kendisi. Herşeyi açar, tanıdığı sistemleri kendi açar, tanımadıklarını chainloader yöntemi ile açılacak sistemin boot loader ını açar. Ayrıca grub menüden istediğimiz OS u seçerken e tuşuna basıp o satırları düzenleyip, b tuşuna basarak düzenlediğimiz özellikler ile boot ettirme yetisine de sahiptir. Ya da c ye basıp tamamen komut yazıp en son boot komutu verip açmamıza da izin verir.

Ancak garip bi durum var ki (hata mıdır bilmiyorum) FreeBSD yi boot edecek iken c ye basıp gerekli şeyleri yazıp boot ettiğimizde acpi.ko yükleniyor derken kilitlenip kalıyor. Ama bunun yerine zaten ayarlanmış ise(menu.lst den) menüden seçerek boot ettiğimizde sağlam açılıyor. Ya da e ye basıp bi kaç satır düzenleyip b ile boot edersek yine açılıyor. İlginç bi durum.

Not: Bunu denediğimde grub 0.97 (en güncel) kullanıyordum.

08 Ocak 2007

Rights

Bu bir php web uygulaması. Geçtiğimiz yaz blog, wiki, sözlük karışımı ve dosya sistemi özellikleri gösteren bir web uygulaması yapmayı denemenin ilginç olacağını düşünerek yapmıştım.

Version: 1.2

Özellikler:
  • Site yöneticileri, yeni üye almayı kısıtlayabiliyor ve her hakka sahip.
  • Dosya upload etme(hakkınız varsa).
  • Gruplar.
  • Yazdığınız yazı için belirli kullanıcılara veya gruplara göre istediğiniz hakları verebilirsiniz.
  • Haklar: okuma, değiştirme, silme, arama.
  • Üye olmayanlar da ayrı bir kullanıcı olarak geçtiği için onlara da bu hakları verebilirsiniz.
Açık kaynak kodlu bu uygulamayı buradan indirebilirsiniz.

07 Ocak 2007

rlimit ve sigxcpu

ulimit yapar gibi processin resource larını kısıtlayabilirsiniz. Bunun için getrlimit, setrlimit fonksiyonları ve rlimit structure ı vardır:
struct rlimit {
rlim_t rlim_cur; /* Soft limit */
rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */
};
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);

Görüldüğü gibi, structure iki tane değer içeriyor. Bunlardan current limit olan, soft limit olarak da adlandırılır, diğeri maximum limit ise hard limit olarak adlandırılır. Current limitimizi, maximum limiti geçmeyecek şekilde ayarlarız.

Örnek olarak RLIMIT_CPU resource unu limitleyip etkisini görelim:

#include <sys/resource.h>
#include <sys/time.h>

int main ()
{
struct rlimit rl;
getrlimit(RLIMIT_CPU, &rl);
rl.rlim_cur = 1;
setrlimit(RLIMIT_CPU, &rl);

while (1);

return 0;
}

Şimdi derleyip çalıştıralım:
$ gcc limit-cpu.c -o limit-cpu
$ ./limit-cpu
CPU time limit exceeded
1 saniye olarak ayarladığımız cpu-time ı aşan process imiz SIGXCPU sinyali aldı ve öldürüldü.
Bu sinyal handle edilebiliyor. Handle edip process imizi devam ettirirsek her saniyede bir bu sinyal alınmaya devam edilir ve hard limite ulaşıldığında SIGKILL sinyali alınır. Ama bu durum değişen bir davranıştır linux un kendi farklı çekirdek versiyonlarında bile. Uygulamamızın portable olması için SIGXCPU aldığımızda process ölmeli.

03 Ocak 2007

FreeBSD ve gnome 2.16.2


FreeBSD sistemimde dunden beri gnome derleniyor :) Neyse ki bitti ve buradan yaziyorum bu yaziyi.