Özet
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
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 gibidir:
-f:chmoddosya 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:-Rseç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:-Rseçeneği belirtilirse tüm sembolik bağlantılar takip edilir.-P:-Rseç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östererekchmod'un ayrıntılı (verbose) modda çalışmasını sağlar.-vbayrağı 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 belirtilmediği sürece 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
chmod yardımcı programı başarı durumunda 0, bir hata oluşursa >0 ile çıkar.
Modlar
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:
| Mod | İzin | Açıklama |
|---|---|---|
4000 |
setuid | Set-user-ID biti. Bu bitin ayarlandığı yürütülebilir dosyalar, dosya sahibinin etkin kullanıcı kimliğiyle (effective UID) çalışır. |
2000 |
setgid | Set-group-ID biti. Bu bitin ayarlandığı yürütülebilir dosyalar, dosya sahibinin etkin grup kimliğiyle (effective GID) çalışır. |
1000 |
sticky | Sticky (yapışkan) biti (bkz. chmod(2) ve sticky(7)). |
0400 |
u+r | Sahibinin okumasına izin verir. |
0200 |
u+w | Sahibinin yazmasına izin verir. |
0100 |
u+x | Dosyalar için sahibinin yürütmesine, dizinler için dizin içinde arama yapmasına izin verir. |
0040 |
g+r | Grup üyelerinin okumasına izin verir. |
0020 |
g+w | Grup üyelerinin yazmasına izin verir. |
0010 |
g+x | Dosyalar için grup üyelerinin yürütmesine, dizinler için dizin içinde arama yapmasına izin verir. |
0004 |
o+r | Diğerlerinin okumasına izin verir. |
0002 |
o+w | Diğerlerinin yazmasına izin verir. |
0001 |
o+x | Dosyalar için diğerlerinin yürütmesine, dizinler için dizin içinde 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:
| Karakter | İzin / Açıklama |
|---|---|
r |
Okuma bitleri. |
s |
Yürütmede set-user-ID ve set-group-ID bitleri. |
t |
Sticky (yapışkan) biti. |
w |
Yazma bitleri. |
x |
Yürütme/arama bitleri. |
X |
Dosya bir dizin ise veya orijinal modda yürütme/arama bitlerinden herhangi biri ayarlanmışsa yürütme/arama bitleri (yalnızca + operatörüyle anlamlıdı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:
| Operatör | Anlamı / İşlem |
|---|---|
+ |
Belirtilen kullanıcılar için belirtilen izin bitlerini ekler (dosya modu oluşturma maskesini (bkz. umask(2)) dikkate alarak). |
- |
Belirtilen kullanıcılar için belirtilen izin bitlerini kaldırır. |
= |
Belirtilen kullanıcılar için izin bitlerini tam olarak belirtilen değere eşitler (diğer tüm bitleri temizler). |
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
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 kaldırır.=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 izin bitlerini kullanıcı izin bitlerine eşit olarak ayarlar, ancak grup yazma iznini temizler.
ACL Manipülasyon Seçenekleri
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 izni, nesnenin kendisindeki bu hakla veya ebeveyn dizindekidelete_childhakkı 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 (extended attributes) 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 sahibini değiştirir.
Aşağıdaki izinler dizinler için geçerlidir:
list: Dizin girdilerini listeler.search: Dosyaları ada göre arar.add_file: Yeni bir dosya ekler.add_subdirectory: Yeni bir alt dizin ekler.delete_child: İçerilen bir alt nesneyi siler (bkz.deleteizni).
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: Yalnızca dosyanın daha önce yazılmamış (son) 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 girdidedirectory_inheritbayrağı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 değerlendirilirken dikkate alınmaz.
ACL manipülasyon seçenekleri aşağıdaki gibidir:
+a:+amodu, 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.Kullanım Örneği:
# 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+amodu, 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+aimodu kullanılarak eklenir.Kullanım Örneği:
# 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.Kullanım Örneği:
# 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:-amodu 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.Kullanım Örneği:
# 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-amodu 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.Kullanım Örneği:
# 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,chownBu 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 isefalsedö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
-v seçeneği standart dışıdır ve betiklerde kullanılması önerilmez.
Ayrıca Bakınız
chflags(1), install(1), chmod(2), stat(1), umask(2), fts(3), setmode(3), sticky(7), symlink(7), chown(8), mount(8)
Standartlar
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
chmod komutu Versiyon 1 AT&T UNIX'te ortaya çıkmıştır.