Linux'ta chmod Komutu Nasıl Kullanılır

Yayınlanan: 2022-10-25
Linux dizüstü bilgisayarda stilize terminal istemi
Fatmawati Achmad Zaenuri/Shutterstock.com
Chmod üç ana argüman alır: sırasıyla okuma, yazma ve yürütme anlamına gelen r, w ve x. Argüman kombinasyonlarının eklenmesi veya kaldırılması, dosya ve klasör izinlerini kontrol eder. Örneğin, chmod +rwx komut dosyalarını okuma, yazma ve yürütme izni ekler. chmod -wx'in çalıştırılması, yazma ve yürütme yeteneğini kaldırır.

Linux'un chmod komutunu kullanarak dosyalara kimlerin erişebileceğini, dizinleri arayacağını ve komut dosyalarını çalıştırabileceğini kontrol edin. Bu komut, ilk bakışta karmaşık görünen ancak nasıl çalıştıklarını öğrendikten sonra aslında oldukça basit olan Linux dosya izinlerini değiştirir.

chmod Dosya İzinlerini Değiştirir

Linux'ta bir dosyaya veya dizine kimin ne yapabileceği, izin setleri aracılığıyla kontrol edilir. Üç grup izin vardır. Dosyanın sahibi için bir set, dosya grubunun üyeleri için başka bir set ve diğer herkes için son bir set.

Yeni Başlayanlar İçin 10 Temel Linux Komutu
İLGİLİ Yeni Başlayanlar İçin 10 Temel Linux Komutu

İzinler, dosya veya dizinde gerçekleştirilebilecek eylemleri kontrol eder. Bir dosyanın okunmasına, değiştirilmesine veya bir komut dosyası veya program ise yürütülmesine izin verir veya engeller. Bir dizin için, dizine kimlerin cd ekleyebileceğini ve dizin içindeki dosyaları kimlerin oluşturabileceğini veya değiştirebileceğini izinler belirler.

Bu izinlerin her birini ayarlamak için chmod komutunu kullanırsınız. Bir dosya veya dizinde hangi izinlerin ayarlandığını görmek için ls kullanabiliriz.

Dosya İzinlerini Görüntüleme ve Anlama

Dosyalar ve dizinler için dosya izinlerini ls listelemek için -l (uzun biçim) seçeneğini kullanabiliriz.

 ls -l 

Her satırda, ilk karakter, listelenmekte olan girişin türünü tanımlar. Kısa çizgi ( - ) ise bir dosyadır. Eğer d harfi ise bir dizindir.

Sonraki dokuz karakter, üç izin grubu için ayarları temsil eder.

  • İlk üç karakter, dosyanın sahibi olan kullanıcının izinlerini gösterir ( kullanıcı izinleri ).
  • Ortadaki üç karakter, dosya grubunun üyeleri için izinleri gösterir ( grup izinleri ).
  • Son üç karakter, ilk iki kategoride olmayan herkes için izinleri gösterir ( diğer izinler ).

Her bir izin kümesinde üç karakter vardır. Karakterler, izinlerden birinin varlığının veya yokluğunun göstergeleridir. Bunlar ya bir tire ( - ) ya da bir harftir. Karakter bir tire ise, izin verilmediği anlamına gelir. Karakter bir r , w veya bir x ise, bu izin verilmiştir.

Harfler şunları temsil eder:

  • r : Okuma izinleri. Dosya açılabilir ve içeriği görüntülenebilir.
  • w : Yazma izinleri. Dosya düzenlenebilir, değiştirilebilir ve silinebilir.
  • x : Yürütme izinleri. Dosya bir komut dosyası veya program ise, çalıştırılabilir (yürütülebilir).

Örneğin:

  • --- hiçbir izin verilmediği anlamına gelir.
  • rwx , tam izinlerin verildiği anlamına gelir. Okuma, yazma ve yürütme göstergelerinin tümü mevcuttur.

Ekran görüntümüzde ilk satır bir d ile başlıyor. Bu satır, "arşiv" adlı bir dizine atıfta bulunur. Dizinin sahibi “dave”dir ve dizinin ait olduğu grubun adı da “dave” olarak adlandırılır.

Sonraki üç karakter, bu dizin için kullanıcı izinleridir. Bunlar, sahibinin tam izinlere sahip olduğunu gösterir. r , w ve x karakterlerinin tümü mevcuttur. Bu, dave kullanıcısının o dizin için okuma, yazma ve yürütme izinlerine sahip olduğu anlamına gelir.

Üç karakterlik ikinci grup, grup izinleridir, bunlar rx . Bunlar, dave grubunun üyelerinin bu dizin için okuma ve yürütme izinlerine sahip olduğunu gösterir. Bu, dizindeki dosyaları ve içeriklerini listeleyebilecekleri ve bu dizine cd (çalıştır) yapabilecekleri anlamına gelir. Yazma izinleri yoktur, bu nedenle dosya oluşturamaz, düzenleyemez veya silemezler.

Üç karakterden oluşan son set de rx . Bu izinler, ilk iki izin grubu tarafından yönetilmeyen kişiler için geçerlidir. Bu kişilerin ("diğerleri" olarak adlandırılır) bu dizinde okuma ve yürütme izinleri vardır.

Özetlemek gerekirse, grup üyeleri ve diğerleri okuma ve yürütme izinlerine sahiptir. Dave adlı kullanıcının sahibi de yazma izinlerine sahiptir.

Diğer tüm dosyalar için (mh.sh komut dosyası dışında) dave ve dave grubunun üyeleri, dosyalar üzerinde okuma ve yazma özelliklerine, diğerleri ise yalnızca okuma izinlerine sahiptir.

mh.sh betik dosyasının özel durumu için, sahibi dave ve grup üyeleri okuma, yazma ve yürütme izinlerine, diğerleri ise yalnızca okuma ve yürütme izinlerine sahiptir.

İzin Sözdizimini Anlama

İzinleri ayarlamak için chmod kullanmak için şunu söylemeliyiz:

  • Kim: Kimler için izin ayarlıyoruz.
  • Ne : Ne değişikliği yapıyoruz? İzni ekliyor muyuz yoksa kaldırıyor muyuz?
  • Hangisi : Hangi izinleri ayarlıyoruz?

Bu değerleri temsil etmek için göstergeler kullanırız ve u+x gibi kısa “izin ifadeleri” oluştururuz; burada “u”, “kullanıcı” (kim), “+”, ekleme (ne) anlamına gelir ve “x”, yürütme izni anlamına gelir. (Hangi).

Kullanabileceğimiz “kim” değerleri şunlardır:

  • u : Kullanıcı, dosyanın sahibi anlamına gelir.
  • g : Grup, dosyanın ait olduğu grubun üyeleri anlamına gelir.
  • o : Diğerleri, yani u ve g izinlerine tabi olmayan kişiler.
  • a : Hepsi, yukarıdakilerin tümü anlamına gelir.

Bunların hiçbiri kullanılmazsa, chmod sanki “ a ” kullanılmış gibi davranır.

Kullanabileceğimiz “ne” değerleri şunlardır:

  • : Eksi işareti. İzni kaldırır.
  • + : Artı işareti. İzin verir. İzin, mevcut izinlere eklenir. Bu izne ve yalnızca bu izin kümesine sahip olmak istiyorsanız, aşağıda açıklanan = seçeneğini kullanın.
  • = : Eşittir işareti. Bir izin belirleyin ve diğerlerini kaldırın.

Kullanabileceğimiz "hangi" değerler şunlardır:

  • r : Okuma izni.
  • w : Yazma izni.
  • x : Yürütme izni.

İzinleri Ayarlama ve Değiştirme

Diyelim ki herkesin üzerinde tam izinlere sahip olduğu bir dosyamız var.

 ls -l yeni_ dosya.txt 

Davet kullanıcısının okuma ve yazma izinlerine ve grubun ve diğer kullanıcıların sadece okuma izinlerine sahip olmasını istiyoruz. Aşağıdaki komutu kullanarak yapabiliriz:

 chmod u=rw,og=r yeni_dosya.txt 

“=” operatörünü kullanmak, mevcut tüm izinleri silip, belirtilenleri ayarladığımız anlamına gelir.

hadi bu dosyadaki yeni izni kontrol edelim:

 ls -l yeni_dosya.txt 

Beklediğimiz gibi mevcut izinler kaldırıldı ve yeni izinler belirlendi.

Mevcut izin ayarlarını kaldırmadan izin eklemeye ne dersiniz? Bunu da kolayca yapabiliriz.

Diyelim ki düzenlemeyi bitirdiğimiz bir script dosyamız var. Tüm kullanıcılar için çalıştırılabilir hale getirmemiz gerekiyor. Mevcut izinleri şöyle görünür:

 ls -l yeni_script.sh 

Aşağıdaki komutla herkes için yürütme izni ekleyebiliriz:

 chmod a+x yeni_script.sh 

İzinlere bir göz atarsak, yürütme izninin artık herkese verildiğini ve mevcut izinlerin hala yerinde olduğunu göreceğiz.

 ls -l yeni_script.sh 

Aynı şeyi “a+x” ifadesindeki “a” olmadan da başarabilirdik. Aşağıdaki komut da aynı şekilde işe yarayacaktı.

 chmod +x new_script.sh

Birden Çok Dosya İçin İzinleri Ayarlama

Aynı anda birden fazla dosyaya izin uygulayabiliriz.

Bunlar geçerli dizindeki dosyalardır:

 ls -l 

Diyelim ki “.page” uzantılı dosyalardan “diğer” kullanıcıların okuma izinlerini kaldırmak istiyoruz. Bunu aşağıdaki komutla yapabiliriz:

 chmod veya *.page 

Bunun ne gibi bir etkisi olduğunu kontrol edelim:

 ls -l 

Görüldüğü gibi “diğer” kullanıcı kategorisi için “.page” dosyalarından okuma izni kaldırılmıştır. Başka hiçbir dosya etkilenmedi.

Dosyaları alt dizinlere dahil etmek isteseydik, -R (özyinelemeli) seçeneğini kullanabilirdik.

 chmod -R veya *.page

Sayısal Steno

chmod kullanmanın bir başka yolu da sahip, grup ve diğerlerine vermek istediğiniz izinleri üç basamaklı bir sayı olarak vermektir. En soldaki basamak, sahibin izinlerini temsil eder. Ortadaki rakam, grup üyeleri için izinleri temsil eder. En sağdaki rakam, diğerleri için izinleri temsil eder.

Kullanabileceğiniz rakamlar ve neyi temsil ettikleri burada listelenmiştir:

  • 0: (000) İzin yok.
  • 1: (001) Yürütme izni.
  • 2: (010) İzin yaz.
  • 3: (011) İzinleri yazın ve yürütün.
  • 4: (100) Okuma izni.
  • 5: (101) İzinleri okuyun ve yürütün.
  • 6: (110) Okuma ve yazma izinleri.
  • 7: (111) İzinleri okuyun, yazın ve yürütün.

Üç iznin her biri, ondalık sayının ikili eşdeğerindeki bitlerden biri ile temsil edilir. İkili sistemde 101 olan 5, oku ve çalıştır anlamına gelir. İkili olarak 010 olan 2, yazma izni anlamına gelir.

Bu yöntemi kullanarak, sahip olmak istediğiniz izinleri ayarlarsınız; bu izinleri mevcut izinlere eklemezsiniz. Bu nedenle, okuma ve yazma izinleri zaten mevcutsa, yürütme izinlerini eklemek için 7 (111) kullanmanız gerekir. 1 (001) kullanılması, okuma ve yazma izinlerini kaldırır ve yürütme iznini ekler.

Diğer kullanıcı kategorisi için “.page” dosyalarına okuma iznini tekrar ekleyelim. Kullanıcı ve grup izinlerini de ayarlamalıyız, bu yüzden onları zaten olduklarına ayarlamamız gerekiyor. Bu kullanıcılar zaten 6 (110) olan okuma ve yazma izinlerine sahiptir. “Diğerlerinin” okuma ve izinlere sahip olmasını istiyoruz, bu nedenle 4 (100) olarak ayarlanması gerekiyor.

Aşağıdaki komut bunu başaracaktır:

 chmod 664 *.sayfa 

Bu, kullanıcı, grup üyeleri ve diğerleri için ihtiyaç duyduğumuz izinleri ihtiyaç duyduğumuz izinlere ayarlar. Kullanıcıların ve grup üyelerinin izinleri önceden olduklarına sıfırlanır ve diğerlerinin okuma izni geri yüklenir.

 ls -l 

Gelişmiş seçenekler

chmod için man sayfasını okursanız, SETUID ve SETGID bitleri ve kısıtlı silme veya “yapışkan” bit ile ilgili bazı gelişmiş seçenekler olduğunu göreceksiniz.

chmod ihtiyaç duyacağınız vakaların %99'u için burada açıklanan seçenekler size yardımcı olacaktır.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar