Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Guido Socher

Yazar Hakk�nda: Linux'u seviyor ��nk� Linux �zg�r bir sistem ayr�ca b�t�n d�nyadaki Linux kullan�c�lar�yla �al��mak �ok e�lenceli. Bo� zamanlar�n� k�z arkada��yla ge�iriyor, BBC radyosunu dinliyor, k�rlarda bisiklet s�r�yor ve L�nux'la oynamaktan ho�lan�yor.

Yazara Yaz�n

��erik:
Temel Dosya Giri� �zinleri
T-bits, SUID ve SGID

Dosya Eri�im �zinleri

�eviri: Azime �zt�rk

[chmod 600]

�zet: Bu makale iki bol�me ayr�lm��t�r:

  • �lk B�l�m (Temel Dosyaya Giri� �zinleri ) Unix alt�ndaki temel dosya izin kavramlar�na �ok k�sa bir giri�tir.
  • �kinci b�l�m (T-bit, SUID ve SGID) temel sembollerin "read-write-execute" �tesinde Linux'un �ok ileri �zelliklerini i�erir.


  • Temel dosya giri� izinleri

    Linuz kullan�c�lar�n kendi dosyalar�na farkl� giri� izinleri verebilcekleri cok kullan�c�l� bir sistem. Her kullan�c� kendisini tan�mlayan tek bir kullan�c�-Id numaras�na sahiptir. Ayn� zamanda kullan�c�lar bir yada daha fazla gruba dahildir. Gruplar �ok say�da insana giri�i s�n�rlamak i�in de kullan�labilir. �ok say�da insanla daha kolay tak�m �al��mas� yapmak i�in iyi bir �zellik. Kullan�c� -Id'nizi kontrol etmek ve dahil oldu�unuz grup veya gruplar� g�rmek i�in sadece id komutunu yaz�n:

    >id
    uid=550(alice)  gid=100(kullan�c�lar)  gruplar=100(kullan�c�lar),6(disk)

    Giri� izinleri her bir dosyaya dosya sahibi , grup vedi�erleri i�in okuma (r), yazma(w) ve �al��t�rma(x)izinleri ilkesiyle konulabilir. Bu izinleri g�rmek i�in ls -l komutunu kullanabilirsiniz.

    >ls -l   /usr/bin/id
    -rwxr-xr-x    1 root   root    8632 May 9 1998 /usr/bin/id

    /usr/bin/id dosyas� sadece root kullan�c�s� taraf�ndan kullan�l�r ve root grubuna aittir.

     -rwxr-xr-x 

    ifadesi dosya giri� izinlerini g�sterir.Bu dosya sahibi taraf�ndan okunabilir (r),yaz�labilir(w) ve �al��t�r�labilir(x), grup ve di�erleri taraf�ndan okunabilir(r)ve �al��t�r�labilir(x).

    �zinleri, her bir biti dosya sahibi, grup ve d�gerleri i�in tahsis edilmi� 3 bitlik bit vekt�r gibi d���nebilirsiniz. ��yle ki r-x bit olarak 101 'e ondal�k olarak 4+1=5'e kar��l�k gelir. r-bit ondal�k 4'e, w-bit ondal�k 2'ye ve an x-bit de ondal�k 1'e kar��l�k gelir.

    sst
    421
    (discussed
    later)
    rwx
    421
    user
    (owner)
    rwx
    421
    group
     
    rwx
    421
    others
     

    chmod komutu bu izinleri de�i�tirmek i�in kullan�labilir. G�venlik i�in yaln�zca root yada dosya sahibi izinleri de�i�tirebilir. Chmod ile izinlerin ondal�k veya sembolik ifadelerin her ikisi de kullan�l�r. Sembolik ifade [ugoa][+-][rwx]. ��yle ki u (kullan�c�=dosya sahibi), g (grup), o(di�erleri), a(herkes=u, g ve o) harflerini izinleri eklemek veya kald�rmak amac�yla + veya - daha sonra da izinlerin sembolik ifadeleri r(read) w(write) x(execute) takip eder. "file.txt" dosyas�n� herkes i�in all yaz�labilir writable yapmak amac�yla �unu yaz�n:

    >chmod a+w   file.txt
    or
    >chmod 666   file.txt
    >ls -l   file.txt
    -rw-rw-rw-   1 alice   users   79 Jan 1 16:14 file.txt

    chmod 644 file.txt izinleri "normal"hale yani dosya sahibi i�in okunabilir+yaz�labilir ve di�erleri i�in sadece okunabilir �ekline koyar.

    bir dizindeki de�i�iklik (cd komutuyla)dizini y�r�rl��e koymakla denktir. "Normal"Buna g�re bir dizin i�in "Normal" izinler644 de�il 755 dir:

    >chmod 755   mydir
    >ls -ld   mydir
    drwxr-xr-x    2 alice    kullan�c�lar    1024 Ar 31 22:32 mydir

    umask ihmal edilen izinlerinizi tan�mlar. Bu izinler yeni dosyalar (ve dizinler, vs...) yarat�ld���nda uygulan�r. Kan�t olarak senin koymak istemedi�in ondal�k ifade �eklindeki bitleri al�r.

    umask 022 iyi bir e.g a se�imidir. 022 ile dosyalar�n� ve "cd" dizinlerinin i�ini herkes okuyabilir ancak yaln�zca sen de�i�iklik yapabilirsin. Ge�erli umask oturumlar�n� yazd�rmak i�in sadece umask yaz�n.

    Burada umask ve chmod'un nas�l kullan�ld���n� g�steren bir �rnek var:

    umask iyi bir standart de�ere yerle�tirilir
    >umask
    22

    Edit�r�n�z� se�in ve myscript dosyas�n� yarat�n:
    >nedit   myscript   (or vi myscript ...)
    Doyan�n i�ine a�a��daki kodu koyun:

    #!/bin/sh
    #myscript
    echo -n "hello "
    whoami
    echo "Bu dosya ( $0 ) a�a��daki izinlere sahip:"
    ls -l $0 | cut -f1 -d" "

    Yaz�y� kaydet.
    �imdi dosya 644 izinlerine sahip:
    >ls -l  myscript
    -rw-r--r--   1 alice  users  108 Jan 1 myscript

    Dosyay� �al��t�rmak i�in �al���r hale getirmelisin:
    >chmod 755 myscript
    or
    >chmod a+x myscript

    �imdi �al��t�r�n:
    >./myscript

    �al��t�r�labilir olmas�na ihtiya� duyan normal derli binary'de �al��t�rmak i�in dosyan�n okunabilir ve �al��t�r�labilir olmas�na dikkat edin. ��nk� dosya �evirmen(kabuk) taraf�ndan okunmal�. Dosyay� �al��t�rmak �unu �retir:

     
    merhaba alice
    Bu dosya ( ./myscript )a�a��daki izinlere sahip:
    -rwxr-xr-x
    

    T-bit, SUID and SGID

    Linux'la bir dosya i�in �al��t�ktan sonra b�y�k olas�l�kla burada dosya izinleri i�in "rwx" bitlerinden �ok daha fazlas�n�n oldu�unu ke�federsiniz.Dosya sisteminizin i�ini ara�t�rd���n�zda "s" ve"t" yi g�r�rs�n�z:

    >ls -ld /usr/bin/crontab  /usr/bin/passwd  /usr/sbin/sendmail  /tmp

    drwxrwxrwt   5 root   root   1024 Jan 1 17:21 /tmp
    -rwsr-xr-x   1 root   root   0328 May 6 1998 /usr/bin/crontab
    -r-sr-xr-x   1 root   bin     5613 Apr 27 1998 /usr/bin/passwd
    -rwsr-sr-x   1 root   mail   89524 Dec 3 22:18 /usr/sbin/sendmail

    Nedir bu "s" ve "t" biti? �zin bitlerinin vekt�r� ger�ekte 4 * 3 bit uzunlu�undad�r. chmod 755, chmod 0755 nin bir k�saltmas�d�r.

    t biti

    t biti (bazen "sticky bit"e kar��l�k gelir)sadece dizin kombinasyonlar�nda kullan�labilir. Yukarda g�rd���n�z gibi/tmp diziniyle kullan�l�r.

    Normalde (t-biti dizinlere yerle�tirilmeden )dosyalar�n silinebilmesi i�in dizinin tuttu�u dosyalar silen ki�i taraf�ndan okunabilir olmal� .B�ylece herkesin dosya koyabilece�i bir dizininiz varsa burada herkes herkesin dosyas�n� silebilir .

    t-biti bu kural� de�i�tirir. t-bitini koymakla yaln�zca dosya sahibi yada dizin sahibi dosyalar� silebilir. t-bit chmod a+tw veya chmod 1777 ile konabilir .Bir �rnek:

    Alice t-bitini koyarak bir dosya yarat�r:
    >mkdir mytmp
    chmod 1777 mytmp


    �imdi Bob onun i�ine bir dosya koyar:
    >ls -al
    drwxrwxrwt   3 alice    users  1024 Jan  1 20:30 ./
    -rw-r--r--  1 bob   users     0 Jan  1 20:31 f.txt

    Bu dosya art�k Alice (dizin sahibi) ve Bob (dosya sahibi) taraf�ndan silinebilir ancak Tux taraf�ndan silinemez:

    >whoami
    tux
    rm -f f.txt
    rm: f.txt: Operation not permitted

    S-bit set on the user

    Linux i�lemleriyle bir kullan�c�-Idsi alt�nda �al���n. Bu kullan�c�ya girebilece�i t�m kaynaklara(dosyalar vs...) giri� verir. Burada 2 tane kullan�c� Idsi mevcut. Ger�ek kullan�c�-IDsi ve y�r�rl�kteki kullan�c�-IDsi. Y�r�rl�kteki kullan�c�-IDsi dosyaya giri�i belirleyendir. A�a��daki program� idinfo ad� alt�nda kaydedin ve �al���r hale getirin(chmod 755 idinfo).


    #!/bin/sh
    #idinfo: Kullan�c� bilgisini g�ster
    echo " y�r�rl�kteki kullan�c�-IDsi:"
    id -un
    echo " ger�ek kullan�c�-IDsi:"
    id -unr
    echo " grop IDsi:"
    id -gn

    Notlar� y�r�rl��e koyunca y�r�yen i�lemin ald��� kullan�c�-ID'nizi ve group-ID'nizi g�receksiniz:

     y�r�rl�kteki kullan�c�-IDsi:
    alice
    ger�ek kullan�c�-IDsi:
    alice
     grup IDsi:
    kullan�c�lar
    

    Tux sizin idinfo program�n�z� y�r�t�nce tux'un ID'sinde o anda y�r�t�len i�lemleri g�steren benzer ��kt�lar al�r.Program�n ��kt�s� sadece o program� y�neten kullan�c�ya ba�l�d�r dosya sahibine de�il.

    G�venlik nedenleri i�in s-biti sadece binarilerde (derlenmi� kod) �al���r programlarda(perl programlar� istisnad�r) �al��maz. Bu y�zden idinfo program�m�z� �a��racak bir C-program� yarat�r�z:

    /*suidtest.c*/
    #include <stdio.h>
    #include <unistd.h>
    int main(){
    /*G�venli secure SUID programlar� MUST
    *hi�bir kullan�c� girdilerine ve �evre de�i�kenlerine g�venmemeli !! */

    char *env[]={"PATH=/bin:/usr/bin",NULL};
    char prog[]="/home/alice/idinfo";
    if (access(prog,X_OK)){
        fprintf(stderr,"ERROR: %s not executable\n",prog);
        exit(1);
    }
    printf("running now %s ...\n",prog);
    execle(prog,(const char*)NULL,env);
    perror("suidtest");

    return(1);
    }

    Program� "gcc -o suidtest -Wall suidtest.c"ile derle ve s-bitini program sahibi �zerine yerle�tir:

    >chmod 4755   suidtest
    or
    >chmod u+s   suidtest

    Program� y�r�t!Ne olu�tu? Hi�bir �ey mi ?Farkl� bir kullan�c� �zerinden y�r�t!

    suidtest dosyalar� alice'e aittir ve normalde dosya sahibi i�in x'in yerle�tirildi�i yerde s-bitine sahiptir. Bu,dosyan�n �al��t�ran kullan�c�n�nkinden ziyade dosya sahibi olan kullan�c�n�n y�r�rl�kteki kullan�c�-Idsi alt�nda �al��t�r�lmas�na sebep olur. Tux program� y�r�tt���nde a�a��daki gibi g�rn�r:

    >ls -l suidtest
    -rwsr-xr-x   1 alice   users   4741 Jan 1 21:53 suidtest
    >whoami
    tux

    running now /home/alice/idinfo ...
    y�r�rl�kteki kullan�c�-IDsi:
    alice
    ger�ek kullan�c�-IDsi:
    tux
    grup IDsi:
    kullan�c�lar

    Bu, �zellikle s-biti yerle�tirilmi� dosyaya root sahipse �ok g��l� bir �zelliktir.O zaman hi�bir kullan�c� normalde sadece rootun yapabilece�i �eyleri yapamaz.G�venlik �zerine birka� kelime. Bir SUID program� yazd�ktan sonra bu program�n sadece senin planlad���n ama� i�in kullan�labilece�inden emin ol. Her zaman zor �ifrelenen hard-coded de�ere bir yol yerle�tir. Asla kullan�c� girdisine (ayar dosyalar�, st�r komut tart��malar� , vs...) g�venme.Kullan�c� girdisini bit bit kontrol et ve onlar� g�z �n�ne ald���n ge�erli de�erlerle kar��la�t�r.

    Bir SUID program� root taraf�ndn �zelle�tirildikten sonra y�r�rl�kteki kullan�c� ve ger�ek kullan�c�-ID'leri (setreuid()i�lemiyle) yerle�tirilebilir.

    Set-UID programlar� genelde "root" taraf�ndan s�radan kullan�c�lara normalde sadece "root" yapabilece�i �eylere eri�imi vermek i�in kullanilir. Root gibi siz de di�er bir kullan�c�n�n makinenizde ppp-on/ppp-off programlar�n� �al��t�rmas� i�in suidtest.c 'de e.g de�i�iklik yapabilirsiniz.

    S-bit'in grupta kullan�m�

    S-bitine sahip �al��t�r�labilir programlar dosya sahibinin group-ID  si alt�nda �al���r. Bu alt paragraftaki kullan�c� s-biti ile �ok benzerdir.

    S-bit gruba bir dizin i�in konduktan sonra grup da bu dizinde yarat�lan her dosya i�in konur. Alice 2 gruba aittir:

    >id
    uid=550(alice)  gid=100(users)  groups=100(users),6(disk)

    Normalde alice i�in yarat�lan dosyalar grupla kullan�c�lara ayarlan�r. Fakat grupla bir dizin yarat�lm��sa diske yerle�tirilir ve s-biti gruba yerle�tirilir sonra alice'in yaratt��� t�m dosyalar grup ID disk:

    ine sahip olur.

    >chmod 2775 .
    >ls -ld .
    drwxrwsr-x  3 tux   disk     1024 Jan 1 23:02 .

    �imdi alice bu dizinde yeni bir dosya yarat�rsa dosyan�n grubu diske yerle�tirilir.

    >touch newfile
    >ls -l newfile
    -rw-r--r--   1 alice    disk      0 Jan 1 23:02 newfile

    �ok say�da insanla tak�m i�inde �al��mak istiyorsan�z bu iyi bir �zelliktir. Bu �zellik dosyalar�n grup ID'lerinin do�ru gruba yaz�lmas�n� sa�lar. Bu da tak�m�n dizinleriyle �zellikle kullan�c�lar�n normalde 027 umask'a sahip olduklar� bir �evrede �al��mak i�indir ki 027 umask, dosyalar� grup d���ndaki insanlara girilmez k�lar.

    Bu sanaly�renin bak�m� Miguel Angel Sepulveda taraf�ndan yap�lmaktad�r.
    © Guido Socher 1999
    LinuxFocus 1999