logo

Örneklerle Linux/Unix'te Chmod Komutu

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:

    -R:Özyinelemeli, yani alt dizinlere nesne ekleme anlamına gelir.-İÇİNDE:Ayrıntılı, değiştirilmiş görüntüleme nesneleri anlamına gelir (değiştirilmemiş nesneler görüntülenmez).

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:

    rwx:En soldaki üç karakter, dosya sahibinin (yani Kullanıcı sınıfının) izinlerini belirtir.r-x:Ortadaki üç karakter, dosyanın sahibi olan grubun (yani Grup sınıfının) izinlerini belirtir.---:En sağdaki üç karakter, Diğer sınıfının izinlerini belirtir. Dosya sahibi olmayan kullanıcılar ve grup üyeleri dosyaya erişemez.

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:

Linux chmod Komutu

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:

Linux chmod Komutu

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:

Linux chmod Komutu

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.