Linux chmod komutu dosya ve dizinlerin erişim izinlerini değiştirmek için kullanılır. Anlamı modu değiştir . Sembolik bağlantıların iznini değiştiremez. Hatta özyinelemeli dizin geçişinde karşılaşılan sembolik bağlantıları göz ardı eder.
İçinde Linux Dosya sisteminde her dosya belirli bir sahiple ilişkilidir ve farklı kullanıcılar için erişim iznine sahiptir. Kullanıcı sınıfları şunlar olabilir:
- mal sahibi
- grup üyesi
- Diğerleri (Diğer herkes)
Linux'taki dosya izinleri aşağıdaki üç türdür:
- oku (r)
- yaz (w)
- yürüt (x)
Chmod'un Kısa Tarihi
İlk olarak, chmod komutu AT&T UNIX sürüm 1'de chmod sistem çağrısıyla temsil edilir. Erişim kontrol listeleri, sistemlerin türleri ve kullanıcı sayısı arttıkça esnekliği artırmak için bu en yaygın modlara ek olarak çeşitli dosya sistemlerine dahil edildi.
GNU coreutils'de düzenlenen chmod sürümü Jim Meyering ve David MacKenzie tarafından belirlendi. Bu komut, temel GNU Unix benzeri yardımcı programların UnxUtils yerel Win32 bağlantı noktası koleksiyonunun bir öğesi olarak Microsoft Windows için yalıtılmış bir paket olarak mevcuttur. Ayrıca chmod komutu IBM i OS'ye gönderildi.
Chmod komutunu kullanarak dosya izninin nasıl değiştirileceğini görelim.
Sözdizimi:
Java çifti
Chmod komutunun temel sözdizimi aşağıdaki gibidir:
chmod
Genel olarak uygulanan seçenekler şunlardır:
Sembolik bir bağdan bahsedilirse hedef nesne etkilenir. Doğrudan sembolik bağlantılarla ilgili dosya modları genellikle kullanılmaz.
Chmod izninin birincil bileşeni:
Örneğin, rwxr-x---
Üç karakterden oluşan tüm gruplar, tüm sınıflar için izinleri belirtir:
Seçenekler:
Chmod komutu aşağıdaki komut satırı seçeneklerini destekler:
-c, --değişiklikler: Ayrıntılı seçeneğe benzer ancak farkı, değişiklik yapılmışsa bildirilmesidir.
-f, --sessiz, --sessiz: Hata mesajlarını bastırmak için kullanılır.
-v, --verbose: İşlenen her dosya için bir teşhis görüntülemek için kullanılır.
--no-koru-kök: Özellikle (varsayılan) ters eğik çizgi sembolünü ('/') işlememek için kullanılır.
--preserve-root: Bu seçenek kullanılırsa ters eğik çizgide ('/') yinelemeli olarak çalışmaz.
--referans=RFİLE: RFILE'ın modunu alternatif olarak MODE değerlerini belirtmek için kullanılır.
-R, --özyinelemeli: Dosyaları ve dizinleri yinelemeli olarak değiştirmek için kullanılır.
java'da string'in int'ye nasıl aktarılacağı
--yardım: Kullanım ve destek seçeneklerinin kısa bir açıklamasını içeren yardım kılavuzunu görüntülemek için kullanılır.
--versiyon: Versiyon bilgisini görüntülemek için kullanılır.
Dosya İzni Söz Dizimi
Yeni bir kullanıcıysanız, dosya iznini ayarlamak için kullanılan farklı harf türleri kafanızı karıştırabilir. Bu nedenle, chmod komutuyla devam etmeden önce dosya izin sözdizimini anlayalım.
Bir dosyanın veya dizinin iznini ayarlamak için aşağıdakileri belirtmemiz gerekir:
- Kim: Biz kimiz. (kullanıcı)
- Ne: Ne gibi bir değişiklik yapacağız (izin eklemek veya kaldırmak gibi)?
- Hangisi: İzinlerden hangisi?
İzin beyanı u+x, u-x gibi göstergelerle temsil edilir. 'u' 'kullanıcı' anlamına gelirken, '+' ekleme anlamına gelir, '-' kaldırma anlamına gelir, 'x' çalıştırılabilir (hangi) anlamına gelir.
yazılım testi ve türleri
Kullanıcı değeri şu şekilde olabilir:
u: dosyanın sahibi
g: grup üyesi
o: diğerleri
bir: hepsi
İzin türleri r, w ve x olabilir.
İzinleri Ayarlama ve Güncelleme
Bir dosyanın iznini ayarlamak için chmod komutuyla bir izin bildirimi yürütün. Örneğin, 'Demo.txt' dosyasının tüm kullanıcıları ve grupları için okuma ve yazma iznini ayarlamak istiyoruz. 'u=rw,go=rw Demo.txt' izin ifadesini chmod komutu ile aktarmamız gerekiyor. Dosya iznini görüntülemek için aşağıdaki komutu yürütün:
ls -l Demo.txt
Yukarıdaki komut, dosyanın 'Demo.txt' dosyasının geçerli dosya iznini gösterecektir.
İzni değiştirmek için aşağıdaki komutu yürütün:
chmod u=rw,go=rw Demo.txt
Aşağıdaki çıktıyı göz önünde bulundurun:
Yukarıdaki çıktıdan 'Demo.txt' dosyasının erişim izni değişmiştir.
Birden Çok Dosya İçin İzinleri Ayarlama
Chmod komutunu kullanarak aynı anda birden fazla dosya için izin ayarlayabiliriz. Birden fazla dosyanın dosya iznini değiştirmek için chmod komutuyla dosya desenini belirtin. Örneğin tüm metin dosyaları için okuma ve yazma izni ayarlamak istiyorsak *.txt dosyasını belirtin. Chmod komutuyla txt deseni.
Geçerli çalışma dizinindeki tüm metin dosyalarının iznini görüntülemek için aşağıdaki komutu yürütün:
ls -l *.txt
Tüm metin dosyalarını izin modlarıyla listeleyecektir. Aşağıdaki çıktıyı göz önünde bulundurun:
Yukarıdaki çıktıya göre, birçok dosya diğer kullanıcılar için yalnızca okuma iznine sahiptir.
Diğer kullanıcıların okuma ve yazma iznini ayarlamak için aşağıdaki komutu yürütün:
chmod o+w *.txt
Metin dosyalarının diğer kullanıcıları için okuma ve yazma iznini ayarlayacaktır. Aşağıdaki çıktıyı göz önünde bulundurun:
Sayısal Kısayol
İzinleri belirtmek için harf yerine sayısal değerleri kullanabiliriz. İzni belirtmek için üç basamaklı bir değer kullanılır. En soldaki rakam sahibi (u), ortadaki rakam ise grup üyelerini (g) temsil eder. En sağdaki rakam diğerlerini (o) temsil eder.
Aşağıdaki tabloda rakamlar ve izinleri gösterilmektedir:
Linux ana bilgisayarı
Rakamlar | İzinler |
---|---|
000 | İzin yok |
001 | İzni yürüt |
010 | Yazma izni |
011 | İzinleri yazma ve yürütme |
100 | Okuma izni |
101 | İzinleri okuma ve yürütme |
110 | Okuma ve yazma izinleri |
111 | İzinleri okuma, yazma ve yürütme |
Sembolik modlar
Ayrıca chmod komutu, belirli modların değiştirilmesine izin veren daha ayrıntılı sembolik gösterimi kabul eder. Sembolik mod, tek bir metin dizesi oluşturacak şekilde birleştirilen üç öğeden oluşur:
$ chmod [references] [operator] [modes] file...
Chmod programı, dosya modlarının nasıl düzenlenmesi gerektiğini tanımlamak için bir operatör uygular. Aşağıdaki operatörler onaylanmıştır:
Şebeke | Tanım | |
---|---|---|
+ | Tanımlananları açıklanan sınıflara ekler. | |
- | Tanımlanan modu açıklanan sınıflardan kaldırır. | |
= | Tanımlanan modların, açıklanan sınıflar için aynı modlarla oluşturulacağını temsil eder. |
Modlar, açıklanan sınıflardan hangi izinlerin kaldırılacağını veya verileceğini temsil eder. Ortak izinlerle ilgili temel olarak üç ortak mod vardır:
İsim | Mod | Tanım |
---|---|---|
Okumak | R | Bir dosyayı okur veya bir dizinin içeriğini listeler. |
yazmak | İçinde | Bir dizine veya dosyaya yazar. |
uygulamak | X | Bir dizin ağacını yineler veya bir dosyayı çalıştırır. |
özel yürütme | X | Bu izin değildir ancak bunun yerine x yerine kullanılabilir. Geçerli izinlerine rağmen dizinlerin yürütme izinlerini kullanır ve en azından yürütme izinleri bit seti olan bir dosya için yürütme izinlerini kullanır. '+' operatörüyle ve yalnızca chmod -R a+rx kullandığımızda gerçekleşecek olan yürütme iznini ayarlamadan kullanılırsa faydalıdır, oysa chmod -R a+rx uygulayabiliriz. yerine x ile. |
Çoklu modifikasyonlar, birden fazla sembolik modun virgüllerle birlikte izole edilmesiyle açıklanabilir. Chmod komutu şunları denetleyecektir: umask bir kullanıcı belirtilmemişse.
Özel modlar
Ayrıca chmod komutu bir dizinin veya dosyanın özel modlarını ve ekstra izinlerini değiştirebilir. Sembolik modlar, setgid ve setuid modlarını belirtmek için 's'yi ve yapışkan modu belirtmek için 't'yi uygular. Bir mod, diğer sınıflardan bahsedilip bahsedilmemesine rağmen yalnızca doğru sınıflar için kullanılır.
Hemen hemen tüm işletim sistemleri, özellikle sekizli olarak özel mod spesifikasyonunu sayısal olarak destekler, ancak birkaçı desteklemez. Bu sistemlere yalnızca sembolik modlar uygulanabilir.
Bazı komut satırı örnekleri:
Emretmek | Tanım |
---|---|
chmod a+r publicComments.txt | Her sınıf için (yani Grup, Sahip ve Diğerleri) okuma izni ekleyecektir. |
chmod a-x publicComments.txt | Her sınıf için yürütme iznini kaldıracaktır. |
chmod a+rx görüntüleyici.sh | Her sınıf için yürütme ve okuma izinlerini ekleyecektir. |
chmod u=rw, g=r, o=internalPlan.txt | Kullanıcı için yazma ve okuma izinlerini, Grup için sunucu okuma izinlerini ayarlayacak ve Diğerleri için erişimi reddedecektir. |
chmod -R u+w, go-w dokümanları | Sahibi için dizin belgelerine ve içeriğinin her birine yazma iznini içerecek ve diğerlerinin ve grubun yazma iznini silecektir. |
chmod ve=rw groupAgreements.txt | Grup ve kullanıcı için yazma ve okuma izinlerini ayarlayacaktır. |
chmod 664 global.txt | Grup ve kullanıcı için yazma ve okuma izinlerini ayarlayacak ve Diğerlerine okuma izni verecektir. |
chmod 744 Show_myCV.sh | Kullanıcı için yürütme, yazma ve okuma izinlerini ayarlayacak ve Grup ve Diğerlerine okuma izni verecektir. |