Sinopsis (Synopsis)
chmod [-fhv] [-R [-H | -L | -P]] mod dosya ...
chmod [-fhv] [-R [-H | -L | -P]] [-a | +a | =a] ACE dosya ...
chmod [-fhv] [-R [-H | -L | -P]] [-E] dosya ...
chmod [-fhv] [-R [-H | -L | -P]] [-C] dosya ...
chmod [-fhv] [-R [-H | -L | -P]] [-N] dosya ...
Açıklama (Description)
chmod yardımcı programı, listelenen dosyaların dosya modu bitlerini mod işleneniyle (operand) belirtilen şekilde değiştirir. Listelenen dosyalarla ilişkili Erişim Kontrol Listelerini (ACL) değiştirmek için de kullanılabilir.
Genel seçenekler aşağıdaki gididir:
-f: chmod dosya için modu değiştiremediğinde bir teşhis mesajı görüntülemez ve çıkış durumunu bu tür başarısızlıkları yansıtacak şekilde değiştirmez.-H: -R seçeneği belirtilirse, komut satırındaki sembolik bağlantılar (symbolic links) takip edilir ve dolayısıyla komuttan etkilenmez. (Ağaç geçişi sırasında karşılaşılan sembolik bağlantılar takip edilmez.)-h: Dosya sembolik bir bağlantı ise, bağlantının gösterdiği dosya yerine bağlantının kendisinin modunu değiştirir.-L: -R seçeneği belirtilirse tüm sembolik bağlantılar takip edilir.-P: -R seçeneği belirtilirse hiçbir sembolik bağlantı takip edilmez. Varsayılan değer budur.-R: Yalnızca dosyaların kendileri yerine, kökleri bu dosyalarda olan dosya hiyerarşilerinin modlarını değiştirir. “.*” gibi joker karakterler kullanırken, ebeveyn dizine giden “..” sert bağlantısıyla (hard link) istenmeden eşleşmekten kaçının.-v: Mod değiştirildikçe dosya adlarını göstererek chmod'un ayrıntılı (verbose) modda çalışmasını sağlar. -v bayrağı birden fazla kez belirtilirse, dosyanın eski ve yeni modları hem sekizlik (octal) hem de sembolik gösterimde yazdırılacaktır.
-H, -L ve -P seçenekleri, -R seçeneği belirtilmedikçe yoksayılır. Ek olarak, bu seçenekler birbirini geçersiz kılar ve komutun eylemleri belirtilen son seçeneğe göre belirlenir.
Eğer chmod bir SIGINFO sinyali alırsa (stty(1) için status argümanına bakın), o zaman mevcut dosya adının yanı sıra eski ve yeni modlar görüntülenir.
Yalnızca dosyanın sahibinin veya süper kullanıcının (super-user) bir dosyanın modunu değiştirmesine izin verilir.
Çıkış Durumu (Exit Status)
chmod yardımcı programı başarı durumunda 0, bir hata oluşursa >0 ile çıkar.
Modlar (Modes)
Modlar mutlak (absolute) veya sembolik olabilir. Mutlak mod, aşağıdaki değerlerden birinin veya daha fazlasının toplamından oluşturulan sekizlik (octal) bir sayıdır:
4000 (setuid biti). Bu bitin ayarlandığı yürütülebilir dosyalar, etkin kullanıcı kimliği (effective uid) dosya sahibinin uid'sine ayarlanmış olarak çalışacaktır. Bu bitin ayarlandığı dizinler, temel dosya sistemi bu özelliği destekliyorsa, içlerinde oluşturulan tüm dosyaların ve alt dizinlerin süreci oluşturanın uid'sine değil, dizin sahibine ait olmasını zorunlu kılar: bkz. chmod(2) ve mount(8) için suiddir seçeneği. 2000 (setgid biti). Bu bitin ayarlandığı yürütülebilir dosyalar, etkin grup kimliği (effective gid) dosya sahibinin gid'sine ayarlanmış olarak çalışacaktır. 1000 (sticky biti). Bkz. chmod(2) ve sticky(7). 0400 Sahibinin okumasına izin verir. 0200 Sahibinin yazmasına izin verir. 0100 Dosyalar için, sahibinin yürütmesine izin verir. Dizinler için, sahibinin dizinde arama yapmasına izin verir. 0040 Grup üyelerinin okumasına izin verir. 0020 Grup üyelerinin yazmasına izin verir. 0010 Dosyalar için, grup üyelerinin yürütmesine izin verir. Dizinler için, grup üyelerinin dizinde arama yapmasına izin verir. 0004 Diğerlerinin okumasına izin verir. 0002 Diğerlerinin yazmasına izin verir. 0001 Dosyalar için, diğerlerinin yürütmesine izin verir. Dizinler için, diğerlerinin dizinde arama yapmasına izin verir.
Örneğin, sahibinin okumasına, yazmasına ve yürütmesine, grup üyelerinin okumasına ve yürütmesine, diğerlerinin okumasına ve yürütmesine izin veren ve hiçbir set-uid veya set-gid davranışı içermeyen mutlak mod 755'tir (400+200+100+040+010+004+001).
Sembolik mod aşağıdaki dilbilgisi ile tanımlanır:
mode ::= clause [, clause ...] clause ::= [who ...] [action ...] action action ::= op [perm ...] who ::= a | u | g | o op ::= + | - | = perm ::= r | s | t | w | x | X | u | g | o
who sembolleri u'', g'' ve o'', sırasıyla dosya modu bitlerinin kullanıcı (user), grup (group) ve diğer (other) kısımlarını belirtir. who sembolü a'', ``ugo'' ifadesine eşdeğerdir.
perm sembolleri mod bitlerinin kısımlarını aşağıdaki gibi temsil eder:
r Okuma bitleri.
s Yürütmede set-user-ID ve yürütmede set-group-ID bitleri.
t Sticky biti.
w Yazma bitleri.
x Yürütme/arama bitleri.
X Dosya bir dizin ise veya orijinal (değiştirilmemiş) modda yürütme/arama bitlerinden herhangi biri ayarlanmışsa yürütme/arama bitleri. X'' perm sembolüyle yapılan işlemler yalnızca +'' op sembolüyle birlikte kullanıldığında anlamlıdır ve diğer tüm durumlarda yoksayılır.
u Dosyanın orijinal modundaki kullanıcı izni bitleri.
g Dosyanın orijinal modundaki grup izni bitleri.
o Dosyanın orijinal modundaki diğer izni bitleri.
op sembolleri gerçekleştirilen işlemi aşağıdaki gibi temsil eder:
perm için hiçbir değer sağlanmazsa, ``+'' işleminin hiçbir etkisi yoktur. who için hiçbir değer sağlanmazsa, perm içinde belirtilen ve dosya modu oluşturma maskesinde (bkz. umask(2)) karşılık gelen biti temiz olan her izin biti ayarlanır. Aksi takdirde, belirtilen who ve perm değerleri tarafından temsil edilen mod bitleri ayarlanır.
perm için hiçbir değer sağlanmazsa, ``-'' işleminin hiçbir etkisi yoktur. who için hiçbir değer sağlanmazsa, perm içinde belirtilen ve dosya modu oluşturma maskesinde karşılık gelen biti ayarlanmış olan her izin biti temizlenir. Aksi takdirde, belirtilen who ve perm değerleri tarafından temsil edilen mod bitleri temizlenir.
= who değeri tarafından belirtilen mod bitleri temizlenir veya hiçbir who değeri belirtilmemişse sahip, grup ve diğer mod bitleri temizlenir. Ardından, who için hiçbir değer sağlanmazsa, perm içinde belirtilen ve dosya modu oluşturma maskesinde (bkz. umask(2)) karşılık gelen biti temiz olan her izin biti ayarlanır. Aksi takdirde, belirtilen who ve perm değerleri tarafından temsil edilen mod bitleri ayarlanır.
Her yantümce (clause), mod bitleri üzerinde gerçekleştirilecek bir veya daha fazla işlemi belirtir ve her işlem mod bitlerine belirtilen sırayla uygulanır.
Yalnızca diğer izinler üzerindeki işlemler (tek başına o'' sembolüyle belirtilir), s'' veya ``t'' perm sembolleriyle birleştirildiğinde yoksayılır.
Dizinlerdeki ``w'' izni, o dizinde dosya oluşturulmasına, taşınmasına ve kopyalanmasına izin verir. Dizin içinde oluşturulan dosyalar dizinin grup kimliğini miras alacaktır.
Geçerli Mod Örnekleri (Examples Of Valid Modes)
644 bir dosyayı herkes tarafından okunabilir ve yalnızca sahibi tarafından yazılabilir yapar.
go-w grup ve diğerleri için yazma iznini reddeder.
=rw,+X okuma ve yazma izinlerini olağan varsayılanlara ayarlar, ancak şu anda ayarlanmış olan yürütme izinlerini korur.
+X bir dizini veya dosyayı, zaten herhangi biri tarafından aranabilir/yürütülebilirse herkes tarafından aranabilir/yürütülebilir yapar.
755 u=rwx,go=rx u=rwx,go=u-w bir dosyayı herkes tarafından okunabilir/yürütülebilir ve yalnızca sahibi tarafından yazılabilir yapar.
go= grup ve diğerleri için tüm mod bitlerini temizler.
g=u-w grup bitlerini kullanıcı bitlerine eşit olarak ayarlar, ancak grup yazma bitini temizler.
ACL Manipülasyon Seçenekleri (Acl Manipulation Options)
ACL'ler, sembolik mod dilbilgisi uzantıları kullanılarak manipüle edilir. Her dosyanın, sıralı bir girdi listesi içeren bir ACL'si vardır. Her girdi bir kullanıcıyı veya grubu belirtir ve bir dizi izne izin verir (grant) veya reddeder (deny). Aynı ada sahip bir kullanıcı ve bir grubun mevcut olduğu durumlarda, ad türünü belirtmek için kullanıcı/grup adının önüne "user:" veya "group:" eklenebilir.
Kullanıcı veya grup adı boşluk içeriyorsa, ad ve izin arasında sınırlayıcı olarak ':' kullanabilirsiniz.
Aşağıdaki izinler tüm dosya sistemi nesneleri için geçerlidir: delete Öğeyi siler. Silme işlemi, bir nesne üzerindeki bu izinle veya içeren dizin üzerindeki delete_child hakkı ile verilebilir. readattr Bir nesnenin temel özniteliklerini okur. Nesne aranabiliyorsa ve açıkça reddedilmemişse bu izin örtük olarak verilir. writeattr Bir nesnenin temel özniteliklerini yazar. readextattr Genişletilmiş özniteliklerini okur. writeextattr Genişletilmiş özniteliklerini yazar. readsecurity Bir nesnenin genişletilmiş güvenlik bilgilerini (ACL) okur. writesecurity Bir nesnenin güvenlik bilgilerini (sahiplik, mod, ACL) yazar. chown Bir nesnenin sahipliğini değiştirir.
Aşağıdaki izinler dizinler için geçerlidir: list Girdileri listeler. search Dosyaları ada göre arar. add_file Bir dosya ekler. add_subdirectory Bir alt dizin ekler. delete_child İçerilen bir nesneyi siler. Yukarıdaki dosya delete iznine bakın.
Aşağıdaki izinler dizin olmayan dosya sistemi nesneleri için geçerlidir: read Okumak için açar. write Yazmak için açar. append Yazmak için açar, ancak yalnızca dosyanın daha önce yazılmamış alanlarına yazılmasına izin verecek şekilde açar. execute Dosyayı bir betik veya program olarak yürütür.
ACL mirası (inheritance), yalnızca dizinlere uygulanabilen aşağıdaki izin sözcükleriyle kontrol edilir: file_inherit Dosyalara miras bırakır. directory_inherit Dizinlere miras bırakır. limit_inherit Bu bayrak yalnızca alt dizinler tarafından devralınan girdiler için geçerlidir; devralınan girdide directory_inherit bayrağının temizlenmesine neden olarak daha derin alt dizinlerin de girdiyi devralmasını önler. only_inherit Girdi, oluşturulan öğeler tarafından devralınır ancak ACL işlenirken dikkate alınmaz.
ACL manipülasyon seçenekleri aşağıdaki gibidir:
+a +a modu, komut satırındaki bir sonraki argümandan yeni bir ACL girdisini ayrıştırır ve bunu ACL'deki kuralsal konuma yerleştirir. Sağlanan girdi zaten listelenen bir kimliğe atıfta bulunuyorsa, iki girdi birleştirilir.
Örnekler
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1
chmod +a "admin allow write" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: admin allow write
chmod +a "guest deny read" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write
chmod +a "admin allow delete" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write,delete .
chmod +a "User 1:allow:read" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: User 1 allow read 3: admin allow write,delete
+a modu, ACL için doğru kuralsal biçimi korumaya çalışır. local deny local allow inherited deny inherited allow
Varsayılan olarak chmod, girdileri yerel deny ve yerel allow listelerinin en üstüne ekler. Miras alınan (inherited) girdiler +ai modu kullanılarak eklenir.
Örnekler
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write,delete 3: juser inherited deny delete 4: admin inherited allow delete 5: backup inherited deny read 6: admin inherited allow write-security
chmod +ai "others allow read" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write,delete 3: juser inherited deny delete 4: others inherited allow read 5: admin inherited allow delete 6: backup inherited deny read 7: admin inherited allow write-security
+a# Belirli bir sıralama gerektiğinde, bir girdinin yerleştirileceği tam konum +a# modu ile belirtilir.
Örnekler
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write
chmod +a# 2 "others deny read" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: others deny read 3: admin allow write
+ai# modu, miras alınan girdileri belirli bir konuma yerleştirmek için kullanılabilir. Bu modların standart dışı (non-canonical) ACL sıralamalarının oluşturulmasına izin verdiğini unutmayın.
-a: -a modu ACL girdilerini silmek için kullanılır. Sağlanan girdiyle tam olarak eşleşen tüm girdiler silinecektir. Eğer girdi, bir girdi tarafından verilen hakların bir alt kümesini listeliyorsa, yalnızca listelenen haklar kaldırılır. Girdiler -a# modu kullanılarak indeks numarasına göre de silinebilir.
Örnekler
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: guest deny read 2: admin allow write,delete
chmod -a# 1 file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: admin allow write,delete
chmod -a "admin allow write" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: admin allow delete
-a modu işlenirken miras alınma durumu dikkate alınmaz; haklar ve girdiler, miras alınma durumlarına bakılmaksızın kaldırılacaktır.
Kullanıcı veya grup adı boşluk içeriyorsa sınırlayıcı olarak ':' kullanabilirsiniz.
Örnek
chmod +a "User 1:allow:read" file1
=a# Bireysel girdiler =a# modu kullanılarak yeniden yazılır.
Örnekler
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: admin allow delete
chmod =a# 1 "admin allow write,chown" file1
ls -le
-rw-r--r--+ 1 juser wheel 0 Apr 28 14:06 file1 owner: juser 1: admin allow write,chown
Bu mod yeni girdiler eklemek için kullanılamaz.
-E: ACL bilgilerini standart girişten (stdin), satır sonlarıyla ayrılmış sıralı bir ACE listesi olarak okur. Bilgi doğru şekilde ayrıştırılırsa, mevcut bilgiler değiştirilir.-C: Belirtilen dosyalardan herhangi birinin ACL'si standart dışı (non-canonical) sırada ise false döndürür.-i: Belirtilen dosya(lar)ın ACL'lerindeki tüm girdilerden 'inherited' (miras alınmış) bitini kaldırır.-I: Belirtilen dosya(lar)ın ACL'lerinden miras alınan tüm girdileri kaldırır.-N: Belirtilen dosya(lar)dan ACL'yi kaldırır.
Uyumluluk (Compatibility)
-v seçeneği standart dışıdır ve betiklerde kullanılması önerilmez.
Ayrıca Bakınız (See Also)
chflags(1), install(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), sticky(7), symlink(7), chown(8), mount(8)
Standartlar (Standards)
chmod yardımcı programının, bu standartta yer almayan "t" perm sembolü hariç olmak üzere IEEE Std 1003.2 (“POSIX.2”) ile uyumlu olması beklenmektedir.
Tarihçe (History)
chmod komutu Versiyon 1 AT&T UNIX'te ortaya çıkmıştır.
macOS 26.4 7 Ocak, 2017 macOS 26.4