Her dosyanın sistemde kayıtlı kullanıcı olarak tanımlı bir
sahibi ve sistemde tanımlı gruplardan biri olarak bir
grubu vardır. Dosya sahibi çoğunlukla bir dosyayı düzenleyebilen kullanıcı olarak ele alınırsa da asıl amaç erişim denetimidir.
Dosya sahibi ve grubu erişimi saptamakta kullanılır. Bunlar için her dosyada erişim izin bitleri tanımlanmıştır; bir bit kümesi dosyanın sahibinin yetkilerini, ikinci bir bit kümesi dosyaya erişim yetkisi olan gruba tanınan yetkileri, üçüncüsü bir bit kümesi ise diğerlerine tanınan yetkileri belirlemekte kullanılır. Bu veriye dayalı olarak erişime nasıl karar verildiği
Erişim İzinleri bölümünde ayrıntılı olarak açıklanmıştır.
Bir dosya oluşturulurken, sahibi,
sürecin etkin kullanıcı kimliği yapılarak dosya oluşturulur. Dosyanın grup kimliği dosyayı içerecek dosya sistemine bağlı olarak ya sürecin etkin grup kimliği ya da dosyayı içeren dizinin grup kimliği yapılır. Uzak bir dosya sistemine eriştiğinizde uygulanan kurallar sizin dosya sisteminizin değil uzak dosya sisteminin kuralları olacaktır. Bu bakımdan yazılımınız üzerinde çalıştığı sistemin davranış çeşidine bakmaksızın her davranış çeşidine uyum sağlamaya hazır olmalıdır.
Mevcut bir dosyanın sahibini ve/veya grubunu
chown işlevini kullanarak değiştirebilirsiniz. Bu işlev
chown ve
chgrp kabuk komutlarının ilkelidir.
Bu işlevin prototipi
unistd.h başlık dosyasında bildirilmiştir.
int chown | (const char *dosyaismi,
uid_t kullanıcı,
gid_t grup) |
işlev
chown işlevi ismi dosyaismi ile belirtilen dosyanın sahibini kullanıcı ve grubunu grup olarak değiştirir.
Bazı sistemlerde bir dosyanın iyeliğinin değiştirilmesi set-user-ID ve set-group-ID bitlerinin temizlenmesine yol açar (Bu bitlerin dosyanın yeni sahipleri ile ilgisi olmadığından bu böyledir.) Diğerleri ile ilişkili izin bitleri değişmez.
İşlev başarılı olduğunda
0, aksi takdirde
-1 ile döner.
Dosya ismi hatalarına ek olarak aşağıdaki
errno hata durumları bu işlev için tanımlanmıştır:
- EPERM
Bu sürecin yetkileri istenen değişikliği yapmak için yetersiz.
Sadece ayrıcalıklı kullanıcı ve dosyanın sahibi dosyanın grubunu değiştirebilir. Çoğu sistemde dosyanın sahibini sadece ayrıcalıklı kullanıcı değiştirebilirken bazı sistemlerde ise dosya sahibini değiştirmenize o dosyanın sahibi olarak görünüyorsanız izin verilir. Uzak bir dosya sistemine eriştiğinizde uygulanan kurallar sizin dosya sisteminizin değil uzak dosya sisteminin kuralları olacaktır.
- EROFS
Dosya, salt-okunur bağlı bir dosya sisteminde.
int fchown | (int dosyatanıtıcı,
int kullanıcı,
int grup) |
işlev
Bu işlev bir dosya ismi değil dosyatanıtıcı ile belirtilen bir açık dosya tanıtıcı alması dışında chown işlevi gibidir.
İşlev başarılı olduğunda 0, aksi takdirde -1 ile döner. Aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
- EBADF
dosyatanıtıcı argümanı geçerli bir dosya tanıtıcı değil.
- EINVAL
dosyatanıtıcı argümanı normal bir dosyayla değil, bir boru ya da soket ile ilişkili.
- EPERM
Bu sürecin yetkileri istenen değişikliği yapmak için yetersiz. Ayrıntılar için yukarı, chmod işlevine bakınız.
- EROFS
Dosya, salt-okunur bağlı bir dosya sisteminde.