UNIX Dilinde Konuşma, Bölüm 4: UNIX sahiplik kuralları ve izinleri

0
butch
IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

UNIX Dilinde Konuşma, Bölüm 4: UNIX sahiplik kuralları ve izinleri, gizliliğe ve paylaşıma olanak sağlar

Eşit paylaşım

Düzey: Orta

Martin Streicher (martin.streicher@linux-mag.com), Şef Editör, Linux Magazine

17 Ekim 2006

Dosyalarınızı korumak ya da başkalarıyla paylaşmak için dosya izinlerini nasıl kullanacağınızı öğrenin.

Yaklaşık 50 yıl önceki elektronik çağının başlangıcından, 1977'de Apple bilgisayarın piyasaya çıkışına kadar bilgi işlem donanımının bulunması zor, edinilmesi ve çalıştırılması da aşırı pahalıydı. O günlerin (nispeten) ilkel sistemlerinden elde edilen süreler çok değerliydi ve yalnızca en zorlu sorunları çözmeye ayrılıyordu. Projeler bilgisayar süresi alabilmek için yarışıyordu ve eski bilgi teknolojisi (IT) yöneticileri, sistemleri haftanın yedi günü 24 saat meşgul tutmak için çalışıyorlardı. Ne de olsa, boşa geçirilen bir an bile paranın sokağa atılması demekti.

İdeal olan, bu kayıp anların, gerektiğinde gereken işe ayrılabilmesi ve otomatik olarak bilgi işlem gerektiren hazır görevlere aktarılabilmesiydi. Nitekim, zaman paylaşımının (ilk kez 1957'de Robert Berner tarafından önerilmiştir) arkasındaki düşünce de buydu. Multics, RSTS/E ve daha sonra da UNIX® sistemlerinde ve bu sistemlerin birçok modern biçiminde gerçekleştirilen zaman paylaşımı ya da çoklu görev (multi-tasking), bir bilgisayarın kaynaklarını (CPU, giriş/çıkış ve bellek) bekleyen işlere böler ve her işin, makine kullanımında ayrı bir yerinin olduğu görünümünü oluşturur. Çoklu görev kullanımı olan bir anabilgisayara birkaç terminal bağlarsanız, her bir terminal bir kişisel bilgisayar gibi görünür.

Bugünlerde, büyük olasılıkla kendinize ait bir UNIX bilgisayarınız vardır ve çok daha güçlü, çok işlemcili bir sistemi başkalarıyla paylaşıyorsunuzdur. Her iki durumda da - hem dizüstü bilgisayarınız hem de şirketinizin makine odasındaki UNIX devi için - eşzamanlı erişim esastır. UNIX, bilgileri koruyup paylaşabilmenizi sağlayan güçlü araçlar ve altyapı sunar.

Bu makalede kullanıcı ayrıcalıkları ele alınmakta ve özellikle, dizininizi ve dosyalarınızı diğer kişilerle paylaşırken ya da diğerlerinin erişimini kısıtlarken dosya izinlerini nasıl kullanacağınız incelenmektedir. UNIX dilinde akıcı bir şekilde konuşmak istiyorsanız, izinleri anlamanız büyük önem taşır.

id, ego ve UID

Başlangıç olarak kim olduğunuzu keşfedelim. Bir komut istemine whoami komutunu yazın:

$ whoami
strike

Bilgisayarım strike yanıtını verdi. Bu benim kullanıcı adım (oturum açmak için kullandığım ad). Sizin whoami komutunuz da, sizin oturum açma adınızı vermelidir.

Görünüşe göre, kullanıcı adınız kullanıcı kimliğiniz (UID) için gerçekten de bir takma ad. UID'nizi görmek için id -u yazın:

$ id -u
501

İşte, benim UID bilgim 501.

Genel olarak, kullanıcı adları insanlar tarafından okunabildiği ve hatırlaması kolay olduğundan, mümkün olduğunda UID'lerin yerine kullanıcı adları kullanılır. Örneğin, çalışan işlemlerinizin bir listesini görmek için ps uxf komutunu çalıştırdığınızda, ps komutu işlemlerinizin sahibi olarak kullanıcı adınızı görüntüler.

$ ps uxf
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
strike   32346  0.0  0.1  6496 1832 ?        S    19:39   0:00 sshd: strike@pts/0
strike   32347  0.0  0.1  2592 1476 pts/0    Ss   19:39   0:00  \_ -bash
strike   32358  0.0  0.0  2476  820 pts/0    R+   19:39   0:00      \_ ps uxf

Sonuç, çalışan üç işlem olduğunu gösteriyor: ps komutunun kendisini başlatan bash kabuğunu oluşturan bir ssh oturum açma işlemi. Benzer bir şekilde, dosyalarınızın sahiplerini görüntülemek için ana dizininizde ls -alFG komutunu çalıştırırsanız, UID'niz yerine kullanıcı adınız görüntülenir.

Genel olarak, yalnızca siz görevlerinizi kesintiye uğratabilirsiniz. (Elbette, kök olan üst kullanıcı tüm görevleri denetleyebilir ve kullanabilir.) Örneğin, aynı sistemi paylaşan joe adlı diğer kullanıcı, yukarıdaki listede bulunan çalışan kabuğumu (32347 numaralı işlem) sonlandıramaz:

$ whoami
joe
$ kill -INT 32347
-bash: kill: (32347) - Operation not permitted

Burada, joe kullanıcısının ps auxf komutunu çalıştırarak bulabileceği kabuğumun işlem tanıtıcısı 32347'dir. Ancak, işlemin sahibi ben olduğum için joe, işlemi sonlandıramaz. Buna karşılık olarak, ben kendi görevlerinden herhangi birini Liste 1'de gösterilen şekilde sona erdirebilirim.


Liste 1. Kendi işlemlerinizin sona erdirilmesi
        
$ ps uxf
...
strike   32347  0.0  0.1  2592 1488 pts/0    Ss   19:39   0:00  \_ -bash
strike   32733 39.5  0.0  1480  356 pts/0    R    19:50   0:01      \_ yes
$ kill -INT 32733
$ ps uxf
...
strike   32347  0.0  0.1  2592 1488 pts/0    Ss   19:39   0:00  \_ -bash

kill -INT 32733 komutunu çalıştırdıktan sonra 32733 işlemi (yes komutu) sona erdirildi.

Nispeten basit bit kavram olsa da güçlü sahiplik hakları ve kullanıcı başına yapılandırma, UNIX'i örneğin Microsoft® Windows® işletim sisteminden çok daha güvenli yapan iki özelliktir.


Üyeliğin ayrıcalıkları vardır

Başlattığınız işler gibi yarattığınız dizinlerin ve dosyaların da sahibi olursunuz. Örneğin, ana dizininizde ls -alFG komutunu çalıştırın ve sahip olduklarınızı görmek için Liste 2'de gösterildiği $HOME parametresini kullanın.


Liste 2. Ana dizinde sahip olduklarınızın listelenmesi
        
$ ls -alFG $HOME
...
-rw-------   1 strike     6175 Aug 25 07:03 .bash_history
-rw-------   1 strike      567 Apr 20  2005 .bash_profile
-rw-------   1 strike     1834 Apr 20  2005 .bashrc
drwx------   2 strike     4096 Mar  8 10:54 .ssh/
-rw-------   1 strike     9516 Aug 22 16:42 .viminfo
-rw-r--r--   1 strike  1529617 Jul 19 07:00 Archive.zip
drwxrwx---   3 strike     4096 Aug 24 04:04 IBM/
drwxr-xrwx   3 strike     4096 Jun 14 06:06 backups/
...

UNIX gruplarıyla ilgili sorun

Bir dosyanın grup sahibinin değiştirilmesi, bir grubun tüm üyeleriyle dosya paylaşımının kullanışlı bir yoludur. Örneğin, jane ve joe, bilim UNIX grubunu oluşturuyorsa ve siz, hassas nuclear.csv veri dosyanızı her iki kullanıcıyla da paylaşmak istiyorsanız, tek yapmanız gereken, bu dosyanın grup sahibini bilim olarak değiştirmektir.

Peki, sam ve bertha'nın da bu dosyaya erişmesi gerekiyorsa ve ikisi de bilim grubunda yer almıyorsa ne olacak? İki kullanıcıyı da bilim grubuna ekleyebilirsiniz, ancak bu işlem, bu kullanıcıların bilim grubunun sahibi olduğu tüm dosyalara erişim izni verir.

Ne yazık ki, UNIX grup uygulamasının bu tür bir kısıtlaması vardır: Bir dosyanın yalnızca bir grup sahibi olabilir ve karmaşık paylaşım şemalarının uygulanması genellikle grupların ortadan kalkmasına neden olur. (Yalnızca joe, jane, sam ve bertha için, örneğin gibi, yeni bir grup oluşturabilirsiniz. Ancak, donald'ın da bu dosyaya erişmesi gerektiğinde ne olacak?)

Karmaşık erişim denetimi şemalarınızın olması gerekiyorsa, birçok UNIX uygulamasının sunduğu erişim denetimi listelerini (ACL'ler) kullanmayı düşünün. ACL'ler standart UNIX sahiplik modelini, belirli hakları kullanıcı ya da grup temelinde verecek (ya da engelleyecek) şekilde genişletir. ACL, kapıdaki koruma görevlisi gibidir: Arkadaşlarınızın, belirli ünlülerin ve diğer seçtiğiniz konukların içeri girmelerine izin verebilir, ancak paparazzileri ve istemediğiniz diğer kişileri dışarıda tutabilirsiniz.

Gördüğünüz gibi ana dizinimdeki tüm dizilerin ve dosyaların sahibi benim. Sahip olarak, dosyalarımın ve dizinlerimin herhangi birini silebilir, yeniden adlandırabilir, taşıyabilir ve düzenleyebilirim. Bu haklara siz de kendi dosyalarınız için sahip olursunuz (dosyalar, özel olarak tersi belirtilmedikçe, toplu olarak dosyalar ve dizinler için kullanılmaktadır).

Buna ek olarak, dosyalarınızı başkalarıyla paylaşmayı seçebilirsiniz. Gerçekten de, UNIX'in çok kullanıcılı bir sistem olarak tasarlanmasından dolayı, dosyaların paylaşılması işletim sisteminin temel ilkelerinden biridir.

Belirli bir kullanıcı sahibe ek olarak, her dosyanın ve dizinin bir de grup sahibi vardır. UNIX grubu, basit bir şekilde tanımlarsak, bir kullanıcı topluluğudur ve bir ya da daha çok grubun üyesi olabilirsiniz. Üyeliklerinizi keşfetmek için id parametresini kullanın:

$ id
uid=501(strike) gid=501(strike) groups=501(strike),
  81(appserveradm), 79(appserverusr), 80(admin)

Sistemimde, birincil grubum grup tanıtıcısı (GID) 501 olan ya da adı strike olan grup. Üç gruba daha üyeyim:

  • appserveradm
  • appserveruser
  • admin

Genellikle ve varsayılan değer olarak, yarattığınız bir dosyanın grup sahibi birincil grubunuz olur, ancak daha sonra, grup sahipliğini üyesi olduğunuz diğer gruplarla değiştirebilirsiniz. Dosyalarla ilgili ek bilgi için ana dizininizde ls -laF komutunu çalıştırın. Liste 3'e bakın.


Liste 3. Dosyalarınızla ilgili daha fazla bilgi edinme
 
-rw-------   1 strike strike     6118 Aug 27 21:59 .bash_history
-rw-r--r--   1 strike strike      567 Apr 20  2005 .bash_profile
-rw-r--r--   1 strike strike     1834 Apr 20  2005 .bashrc
drwx------   2 strike strike     4096 Mar  8 10:54 .ssh/
-rw-------   1 strike strike     9516 Aug 22 16:42 .viminfo
-rw-r--r--   1 strike strike  1529617 Jul 19 07:00 Archive.zip
drwxr-xr-x   3 strike strike     4096 Aug 24 04:04 IBM/
drwxrwxr-x   3 strike admin      4096 Jun 14 06:06 backups/

Not: Liste 3'te ls -l komutunun genel çıkışı gösterilmiştir. Önceki anlatımı basitleştirmek için grup sahibi özellikle gizlendiğinden Liste 2 daha farklı görünmektedir. Grup sahibini -G seçeneği ile gizleyebilirsiniz. 

backups adlı dizinin grup sahibi, bu gruptaki tüm üyelere belirli ayrıcalıklar atayabilen admin'dir. Bu arada, dosyalarımın geri kalanının grup sahibi strike'tır. Genellikle, bir kullanıcı, adını verdiği grubun tek üyesidir. Bu, erişimi yalnızca bir kullanıcıyla sınırlandırır.


İnce ayrıntılar

Yukarıda ls komutunun çıkışına bir göz atarsanız, her satırın başındaki 10 karakterlik sırayı fark edebilirsiniz. Her bir karakter, üç seçimden birine ilişkin belirli hakları gösteren bir kapalı/açık ayarı ya da bit'tir: Siz, gruplarınızdan biri ve diğerleri. Şekil 1'de her bir bitin kullanımı gösterilmektedir.


Şekil 1. UNIX dosyasının izin bitleri
UNIX izinleri

Şekil 1 içinde:

  • İlk bit, dosyanın bir dizin olup olmadığını gösterir. (Genellikle ilk bit, bir dosyanın özel olup olmadığını belirtir. Dosya özelse, diğer karakterler arasında ilk karakterde dizin için d ve simgesel bağlantı için l harfi kullanılır.) Bu ayar sabittir.
  • Sonraki üç bit (mavi renkli) sırasıyla sizin dosya üzerindeki okuma, yazma ve yürütme haklarınızı gösterir. Örneğin, dosyanın silinmesini önlemek için yazma bitinizi devre dışı bırakabilirsiniz. (Evet, bir dosyayı silmek için yazma izni gereklidir.)
  • Sonraki üç bit (yeşil renkli) sırasıyla grubun dosya üzerindeki okuma, yazma ve yürütme haklarını gösterir.
  • Son üç bit (turuncu renkli), diğer bütün kullanıcıların (siz ve grubunuzun üyeleri dışındaki tüm kullanıcıların) haklarını gösterir.

Örnek olarak yukarıda bulunan ls -laF çıkışını kullanın:

  • .bash_history, .bash_profile, .bashrc ve .viminfo dosyaları, yalnızca benim tarafımdan okunabilir ve yazılabilir. Bu dosyaları görüntüleyebilir, düzenleyebilir ve silebilirim.
  • .ssh dizinine yalnızca ben erişebilirim. İlk bit, bunun özel bir dosya ve d harfi, bir dizin olduğunu gösterir. Kullanıcı okuma biti ayarlandığından, dizinin içeriğini görüntüleyebilirim. Kullanıcı yazma biti belirlendiği için dizine dosya ekleyebilir ve dizindeki dosyaları kaldırabilirim. Dizinin neden kullanıcı tarafından yürütülebildiğini de merak ediyor olabilirsiniz. Bu bit ayarlanmazsa, bir dizinde geçiş yapılamaz (dizine girilemez ve katalog oluşturulamaz). (Bu arada, bu dizide Bölüm 3 içinde açıkladığım gibi .ssh dizininiz size özel olmalıdır, yoksa genel anahtar erişiminiz çalışmaz.)
  • Archive.zip dosyasını okuyabilir ve bu dosyaya yazabilir ve diğerleri de dosyayı okuyabilir. (Tabii ki strike grubu da dosyayı okuyabilir, ancak bu, yalnızca ben bu grubun üyesi olduğumda geçerlidir, izin biraz tartışmalıdır.)
  • Başka bir dizin olan IBM dizininde katalog oluşturabilir, dosyaları okuyabilir ve dosyalara yazabilirim; diğer kullanıcılar da bu dizinin içeriğinden kataloğ oluşturabilirler.
  • Son olarak, admin grubunun üyeleri ve ben, backups dizinindeki dosyaların kataloğunu oluşturabilir, bu dosyaları okuyabilir ve bu dosyalara yazabiliriz; diğer herkes, dizinin kataloğunu oluşturabilir ve dizindeki dosyaları okuyabilir.
Bir dizin için 'sticky' bitinin ayarlanması

Bir dizinin kalıcı olmasını sağlamak ve yanlışlıkla kaldırılmasını önlemek istiyorsanız, chmod +T seçeneğini kullanarak sticky bitini ayarlayın.

$ ls -lF
drwxrwxrwx    2 strike  strike   68 Aug 28 06:21 dropbox/
drwx------    2 strike  strike   68 Aug 28 06:21 mine/
$ chmod +t dropbox

$ ls -lF
drwxrwxrwt    2 strike  strike   68 Aug 28 06:21 dropbox/
drwx------    2 strike  strike   68 Aug 28 06:21 mine/

'Sticky' biti ayarlandıktan ve izinler herkes okuyabilir, yazabilir ve yürütebilir şeklinde belirlendikten sonra, herkes dosyaları açılan kutuma yerleştirebilir, ancak yalnızca ben dizindeki dosyaları ya da dizinin kendisini kaldırabilirim.

ls -ld /tmp komutu çalıştırırsanız, uygulama çalışma alanı olarak yaygın bir şekilde kullanılan, tüm sistemi kapsayan geçici dizininiz 'sticky' yani kalıcı olabilir.

chmod (modu değiştir) komutuyla izinleri (dizin biti dışında) değiştirebilirsiniz. Bir dosyanın grup atamasını, chgrp (grup değiştir) komutuyla kullanabilirsiniz. (Kök olan üst kullanıcı da chown ya da sahibi değiştir modunu kullanarak dosyanın sahibini değiştirebilir.)

Aşağıda chmod komutunun örnek uygulamalarını görebilirsiniz:

  • chmod u+x script.sh: Bir kabuk komut dosyası yazarsanız ve bunu yürütmek isterseniz, yürütme bitini etkinleştirin. Burada, u+x karakterleri, sahip kullanıcının (u) yürütme bitini (x) etkinleştirmesini (+) belirtir. chmod komutunun genel biçimi, chmod, boş değer (kullanıcıyı belirtir), bir ya da daha çok u, g (grup için) ya da o (diğerleri için), bir + ya da - ve bir ya da daha fazla r, w ve x şeklindedir.
  • chmod go+rx IBM: Bu komut, grup ve diğerleri için okuma ve yürütme ayrıcalıklarını etkinleştirir.
  • chmod a+rx script.sh: u, g ve o parametrelerine ek olarak tümü için a ya da kullanıcı, grup ve diğerlerini kullanabilirsiniz. Böylece, bu komut, üç seçimin üçüne de okuma ve yürütme izni verir.
  • chgrp admin backups: Bu komut, grup sahibi olarak yöneticiyi belirler.

+ seçeneğiyle izin eklerseniz, belirtilen izinler eklenir, ancak diğer izinlere dokunulmaz. Benzer bir şekilde, - (eksi) ile izinleri geri alırsanız, belirli izinler devre dışı bırakılır, ancak tersi durumunda, durum korunur. Tüm izinleri bir defada ayarlamak istiyorsanız, sayısal dosya modlarını kullanın. (chmod = işlecini de kullanabilirsiniz. Ayrıntılı bilgi için man sayfasına bakın.)

Not: Sayısal dosya modu, 0 - 7 arasında sekizli bir sayı ya da üç bitten (okuma, yazma ve yürütme için) oluşan bir sayıdır. Her bir dosya için üç seçim olduğundan, tam olarak belirtilmiş dosya modu üç basamaklıdır. Örneğin, 400, 644 ya da 777 gibi. Aşağıda bu duruma örnekler verilmiştir:

  • Bir dizini özelleştirmek için kendinize ilişkin hakları etkinleştirir, ancak bir grubun ve diğer kişilerin haklarını geri alırsınız:
    $ mkdir example
    $ ls -l
    drwxr-xr-x    2 strike  strike       68 Aug 28 11:27 example
    $ chmod 700 example
    $ ls -l
    drwx------    2 strike  strike       68 Aug 28 11:27 example
    

    700 modu, kullanıcı için okuma, yazma ve yürütme izinlerini etkinleştir (baştaki 7), ancak diğer tüm izinleri devre dışı bırak (sondaki iki sıfır) olarak çevrilebilir.
  • Bilgisayarınızdaki diğer kişilerin dosyalarınızdan birini okumasını istiyorsanız, üç seçimin üçü için de okuma iznini etkinleştirin:
    $ ls -l .aliases
    -rw-------   1 mstreich  mstreich  79 Jul 26 17:08 .aliases
    $ chmod 644 .alias
    $ ls -l
    -rw-r--r--  1 mstreich  mstreich  79 Jul 26 17:08 .aliases
    


    644, benim için okuma ve yazma izinlerini ayarla (6), grup (4) ve diğerleri (4) için okuma iznini etkinleştir komutunun kısaltmasıdır. Tabii ki, .alises dosyası ana dizininizde olsaydı, $HOME izinlerinin katalog oluşturmaya ve okumaya izin vermesi gerekirdi.

Tablo 1 içindeki grafikte, sayısal değerler ve sahip, grup sahibi ve diğerleri için ilişkili sonuç gösterilmektedir. Ayarlanacak uygun değeri bulmak için her bir bölüme değerleri ekleyin.


Tablo 1. Sayısal değerler ve ilişkili sonuçlar
Kim Değer Sonuç
Kullanıcı 0400 Sahibin okumasına izin ver.
0200 Sahibin yazmasına izin ver.
0100 Dosyalar için sahibin yürütmesine izin ver; dizinler için, sahibin dizinde arama yapmasına izin ver.
Grup 0040 Grup üyelerinin okumasına izin ver.
0020 Grup üyelerinin yazmasına izin ver.
0010 Dosyalar için sahibin yürütmesine izin ver; dizinler için, grup üyelerinin dizinde arama yapmasına izin ver.
Diğerleri 0004 Diğer kişilerin okumasına izin ver.
0002 Diğer kişilerin yazmasına izin ver.
0001 Dosyalar için diğer kişilerin dosyayı yürütmesine izin ver; dizinler için, diğer kişilerin dizinde arama yapmasına izin ver.

Örneğin, diğerleri için okuma ve yazma ayrıcalıklarını ayarlamak üzere 00006 değerini elde etmek için 0004 ve 002'yi ekleyin. Kullanıcı ve grup için de benzer bir şey yapın ve üçünün toplamını ekleyerek tam bir sayısal mod oluşturun.


Her şeyin temelinde izinler vardır

UNIX sistemlerinde izinlerin ayarlanması ve yönetilmesi tekrar tekrar karşınıza çıkar. Yardımcı programları çalıştırmak için sık sık belirli dosyalarda ve dizinlerde uygun izinlerinizin olması gerekir; /tmp gibi dizinler, yalnızca doğru izinler ayarlandığında çalışır ve elbette, dosyalarınızı başkalarıyla paylaşmak ya da dosyalarınızı başkalarından korumak için değiştirme ve okuma izinlerini ayarlayabilmeniz gereklidir.

Bu dizinin bir sonraki makalesinde, dosyalarla ilgili bilgiler vermeye devam edeceğiz; birden çok bilgisayarda yüzlerce ya da binlerce dosyayı yönetmeye ilişkin yardımcı programları ve teknikleri keşfedeceğiz.



Kaynaklar

Bilgi Edinme

Ürün ve teknoloji edinme

Tartışma


Yazar hakkında

Martin Streicher, Linux Magazine adlı dergide Şef Editör'dür. Purdue University'den bilgisayar bilimi konusunda master derecesi almış ve 1982 yılından bu yana UNIX benzeri sistemlerde Pascal, C, Perl, Java ve (en son) Ruby programlama dillerinde programlama yapmaktadır. Martin'e martin.streicher@linux-mag.com adresinden erişebilirsiniz.

Görüşler

0
ysa
merhaba döküman için teşekkür ederim, "UNIX gruplarıyla ilgili sorun" kutucuğunun üstüne başka bir yazı gelmiş ff kullanmamdan olabilir belki. merakımdan soruyorum bundan sonra hangi çevirileri yapıcaksınız belirli bir plana göre mi yapıyorsunuz?
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Ajax Konusunda Uzmanlaşma, Bölüm 3

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

developerWorks: Yüksek performanslı Linux kümeleme - 1: Kümelemenin İlkeleri

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Yeni kullanıcılar için UNIX ipuçları Bölüm 3: Süzgeçler ve düzenli ifadeler

tongucyumruk

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

PHP ile 3 Boyutlu Görüntüler Hazırlayın

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Ajax Konusunda Uzmanlaşma, Bölüm 4

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.