Erişim İzinleri için Kip Bitleri
Önceki Dosya Öznitelikleri Sonraki
Erişim İzinleri için Kip Bitleri
Dosya kipi, dosya özniteliklerinin st_mode alanınada saklanır ve iki çeşit bilgi içerebilir: dosya türü kodu ve erişim izin bitleri. Bu bölümde sadece bir dosyayı kimlerin okuyabileceği veya yazabileceğini denetleyen erişim izni bitleri açıklanacaktır. Dosya türü kodları Erişim İzinleri için Kip Bitleri bölümünde açıklanmıştır.
Bu bölümdeki sembollerin hepsi sys/stat.h başlık dosyasında tanımlanmıştır. Bir dosyanın erişim izinlerini denetleyen dosya kipi bitleri için tanımlanmış sabitler:
S_IRUSR
S_IREAD
Dosyanın sahibi için okuma yetkisi biti. Bir çok sistemde bu bit 0400'dür. S_IREAD sabiti bu sabitin BSD uyumluluğu için sağlanmış artık atıl olmuş bir eşanlamlısıdır.
S_IWUSR
S_IWRITE
Dosyanın sahibi için yazma yetkisi biti. Bir çok sistemde bu bit 0200'dür. S_IWRITE sabiti bu sabitin BSD uyumluluğu için sağlanmış artık atıl olmuş bir eşanlamlısıdır.
S_IXUSR
S_IEXEC
Dosyanın sahibi için normal dosyalarda çalıştırma, dizinlerde arama yetkisi biti. Bir çok sistemde bu bit 0100'dür. S_IEXEC sabiti bu sabitin BSD uyumluluğu için sağlanmış artık atıl olmuş bir eşanlamlısıdır.
S_IRWXU
(S_IRUSR | S_IWUSR | S_IXUSR) ifadesinin eşdeğeridir.
S_IRGRP
Dosyanın grubu için okuma yetkisi biti. Bir çok sistemde bu bit 040'tır.
S_IWGRP
Dosyanın grubu için yazma yetkisi bitleri. Bir çok sistemde bu bit 020'dir.
S_IXGRP
Dosyanın grubu için çalıştırma ve arama yetkisi biti. Bir çok sistemde bu bit 010'dur.
S_IRWXG
(S_IRGRP | S_IWGRP | S_IXGRP) ifadesinin eşdeğeridir.
S_IROTH
Diğer kullanıcılar için okuma yetkisi biti. Bir çok sistemde bu bit 04'tür.
S_IWOTH
Diğer kullanıcılar için yazma yetkisi biti. Bir çok sistemde bu bit 02'dir.
S_IXOTH
Diğer kullanıcılar için çalıştırma ve arama yetkisi biti. Bir çok sistemde bu bit 01'dir.
S_IRWXO
(S_IROTH | S_IWOTH | S_IXOTH) ifadesinin eşdeğeridir.
S_ISUID
Çalıştırma biti üzerinde etkili set-user-ID bitidir. Bir çok sistemde bu bit 04000'dir. Bkz. Bir Sürecin Aidiyeti Nasıl Değiştirilir?.
S_ISGID
Çalıştırma biti üzerinde etkili set-group-ID bitidir. Bir çok sistemde bu bit 02000'dir. Bkz. Bir Sürecin Aidiyeti Nasıl Değiştirilir?.
S_ISVTX
yapışkan bit. Bir çok sistemde bu bit 01000'dir.
Bu bit, bir dizin için bu dizindeki bir dosyayı silme iznini sadece dosyanın sahibine verir. Normalde bir kullanıcı ya bir dizindeki tüm dosyaları silebilir ya da hiçbirini silemez (kullanıcının dizine yazma izni olup olmamasına bağlı olarak). Bu sınırlamalar uygulandığında bir dosyayı silebilmek için hem dosya sizin dosyanız olmalı hem de onun bulunduğu dizine yazma izniniz olmalıdır. Buna bir istisna, dizinin sahibi olmaktır. Dizinin sahibi olan kullanıcı dizin içindeki dosyaların hepsini dosyaların sahiplerinin kim olduğuna bakılmaksızın silme yetkisine sahiptir. Bu bit /tmp dizininde faydalı bir amaç için kullanılır; bu dizinde herkes dosya oluşturabilir ama kimse diğerinin dosyasını silemez.
Evvelce, bir çalıştırılabilir dosyada yapışkan bit etkin olduğunda sistemin takaslama kurallarında bu yazılım için değişiklik yapılırdı. Normalde, bir yazılım sonlandığında onun bellekteki sayfaları serbest bırakılır ve yeniden kullanıma hazır tutulurdu. Eğer çalıştırılabilir dosyanın yapışkan biti etkinse, yazılım sonlandığında bellekteki sayfaları serbest bırakılmaz, yazılım hala çalışıyormuş gibi bellekte tutulurdu. Bu durum aynı yazılım defalarca çalıştırıldığında bu yazılım için bir ayrıcalık oluştururdu. Bu kullanım artık günümüzde atıl olmuştur. Artık, bir yazılım sonlandığında bellekteki sayfaları bir ihtiyaç hasıl olana kadar serbest bırakılmamaktadır. Aynı yazılım tekrar çalıştırıldığında eski sayfaları hala bellekte duruyorsa onlar kullanılabilmekte, bir ihtiyaçtan dolayı kullanılmışsa yazılım tekrar belleğe yüklenmektedir.
Günümüzdeki bazı sistemlerde bir çalıştırılabilir dosya açısından yapışkan bit anlamlı değildir, böyle sistemlerde bu bit dizinler dışında etkinleştirilemez. Eğer bunu denerseniz, chmod işlevi EFTYPE hatasıyla başarısız olur; bkz. Dosya İzinlerinin Atanması.
Bazı sistemler (özellikle SunOS) yapışkan bit kullanımı ile ilgili olarak farklı bir uygulama yapar. Eğer yapışkan bit bir çalıştırılabilir olmayan dosya için etkinleştirilirse, tamamen zıt bir uygulama olarak, o dosyanın sayfaları belleğe alınmaz. Bunun kullanım alanı, bir NFS sunucusu üzerinde, disksiz istemcilerin takas alanı olarak kullanmak üzere ayrılmış dosyalardır. Bu dosyalar istemci makinenin belleğinde sayfalandığından, bunların bir de sunucu makinenin belleğinde sayfalanması anlamsız olacağından bu yönteme başvurulmuştur. Bu kullanımda yapışkan bit ayrıca dosya sisteminin disk üzerinde düzenli olarak dosyanın değişiklik zamanını kaydetmesinin başarısız olmasını sağlar (bir takas dosyasıyla nasılsa kimse ilgilenmez, denerek).
Bu bit sadece BSD sistemlerinde geçerlidir (ve ondan türetilmiş sistemlerde). Bu bakımdan bu biti kullanmak için _BSD_SOURCE özellik seçim makrosunu tanımlı yapmalısınız (bkz. Özellik Sınama Makroları).
Yukarıda listelenen sembollerin bit değerlerini kullanarak yazılımınızda hata ayıklarken dosya kip değerlerini çözümleyebilirsiniz. Bu bit değerleri çoğu sistemde geçerlidir ama hepsinin olacağı garanti değildir.
Uyarı
Dosya izinleri için doğrudan sayıları kullanmak iyi bir uygulama olmaz. Taşınabilir olmayacağından başka, bitlerin anlamlarını hatırlamak için yazılımınızın koduna bakmak gerekir. Temiz bir yazılım sembol isimleri kullanır.
Önceki Üst Ana Başlık Sonraki
Dosya İyeliği Başlangıç Erişim İzinleri
Bir Linux Kitaplığı Sayfası