Linux'ta chmod Komutu Nasıl Kullanılır
Linux'un chmod
komutunu kullanarak dosyalara kimlerin erişebileceğini, dizinleri arayabileceğini 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 kimlerin ne yapabileceği, izin kümeleri aracılığıyla kontrol edilir. Üç grup izin vardır. Dosyanın sahibi için bir küme, dosyanın grubunun üyeleri için başka bir küme ve diğer herkes için son bir küme.
İzinler, dosya veya dizin üzerinde 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, izinler dizine kimlerin girebileceğini cd
ve dizinde kimlerin dosya oluşturabileceğini veya değiştirebileceğini belirler.
chmod
Bu izinlerin her birini ayarlamak için komutu kullanırsınız. Bir dosya veya dizinde hangi izinlerin ayarlandığını görmek için kullanabiliriz ls
.
Dosya İzinlerini Görüntüleme ve Anlama
Dosyalar ve dizinler için dosya izinlerini listelemek için -l
(uzun format) seçeneğini kullanabiliriz ls
.
ls -l
Her satırdaki ilk karakter, listelenen girişin türünü tanımlar. Tire ( -
) ise bir dosyadır. Harf d
ise bir dizindir.
Sonraki dokuz karakter, üç izin kümesinin ayarlarını 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 izin kümesinde üç karakter vardır. Karakterler, izinlerden birinin olup olmadığının göstergeleridir. Bir tire ( -
) veya bir harftir. Karakter bir tire ise, bu, iznin verilmediği anlamına gelir. Karakter bir r
, w
veya bir ise x
, 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 : İzinleri yürütün. Dosya bir komut dosyası veya program ise çalıştırılabilir (yürütülebilir).
Örneğin:
-
---
hiçbir iznin verilmediği anlamına gelir. -
rwx
tam izinlerin verildiği anlamına gelir. Okuma, yazma ve çalıştırma göstergelerinin tümü mevcuttur.
Ekran görüntüsümüzde ilk satır bir d
. Bu satır, "arşiv" adlı bir dizini ifade eder. Dizinin sahibi "dave" dir ve dizinin ait olduğu grubun adı da "dave" olarak adlandırılır.
Sonraki üç karakter, bu dizinin kullanıcı izinleridir. Bunlar, sahibin tam izinlere sahip olduğunu gösterir. r
, w
Ve x
karakterler hepsi mevcuttur. Bu, kullanıcı dave'nin o dizini okuma, yazma ve yürütme izinlerine sahip olduğu anlamına gelir.
İkinci üç karakter kümesi grup izinleridir, bunlar r-x
. Bunlar, dave grubunun üyelerinin bu dizini okuma ve yürütme izinlerine sahip olduğunu gösterir. Bu, dizindeki dosyaları ve içeriklerini listeleyebilecekleri ve bu dizinde cd
(çalıştırabilecekleri) anlamına gelir . Yazma izinleri olmadığı için dosya oluşturamaz, düzenleyemez veya silemezler.
Üç karakterlik son set de r-x
. Bu izinler, ilk iki izin kümesine tabi olmayan kişiler için geçerlidir. Bu kişiler ("diğerleri" olarak adlandırılır), bu dizini okuma ve yürütme izinlerine sahiptir.
Özetlemek gerekirse, grup üyeleri ve diğerleri okuma ve yürütme izinlerine sahiptir. Dave adlı kullanıcı olan sahibinin de yazma izinleri vardır.
Diğer tüm dosyalar için (mh.sh komut dosyası dışında) dave ve dave grubunun üyeleri dosyalar üzerinde okuma ve yazma özelliklerine sahiptir ve diğerleri yalnızca okuma izinlerine sahiptir.
Mh.sh komut dosyasının özel durumu için, sahip dave ve grup üyeleri okuma, yazma ve yürütme izinlerine sahiptir ve diğerleri yalnızca okuma ve yürütme izinlerine sahiptir.
İzin Sözdizimini Anlama
chmod
İzinleri ayarlamak için kullanmak için şunu söylememiz gerekir:
- Kim: Kimler için izinleri belirliyoruz.
- Ne : Ne tür bir değişiklik yapıyoruz? İzin ekliyor muyuz yoksa kaldırıyor muyuz?
- Hangisi : Hangi izinleri belirliyoruz?
Bu değerleri temsil etmek için göstergeler kullanırız ve u+x
"u", "kullanıcı" (kim), "+", ekle (ne) ve "x", yürütme izni (hangisi) anlamına gelir. .
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;
u
veg
izinleri tarafından yönetilmeyen kişiler anlamına gelir . - a : Hepsi, yukarıdakilerin tümü anlamına gelir.
Bunların hiçbiri kullanılmazsa, chmod
" 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 setine sahip olmak istiyorsanız
=
, aşağıda açıklanan seçeneği 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
Kullanıcı dave'nin okuma ve yazma izinlerine sahip olmasını ve grubun ve diğer kullanıcıların yalnızca okuma izinlerine sahip olmasını istiyoruz. Aşağıdaki komutu kullanarak yapabiliriz:
chmod u = rw, og = r new_file.txt
"=" Operatörünü kullanmak, mevcut tüm izinleri silip ardından belirtilenleri ayarladığımız anlamına gelir.
bu dosyadaki yeni izni kontrol edelim:
ls -l new_file.txt
Beklediğimiz gibi, mevcut izinler kaldırıldı ve yeni izinler ayarlandı.
Nasıl bir izni ekleme hakkında olmadan varolan izinleri ayarlarını kaldırarak? Bunu da kolayca yapabiliriz.
Diyelim ki düzenlemeyi bitirdiğimiz bir betik dosyamız var. Tüm kullanıcılar için çalıştırılabilir hale getirmemiz gerekiyor. Mevcut izinleri şu şekildedir:
ls -l new_script.sh
Aşağıdaki komutla herkes için yürütme iznini ekleyebiliriz:
chmod a + x new_script.sh
İzinlere bakarsak, yürütme izninin artık herkese verildiğini ve mevcut izinlerin hala yerinde olduğunu göreceğiz.
ls -l new_script.sh
Aynı şeyi "a + x" ifadesindeki "a" olmadan da başarabilirdik. Aşağıdaki komut da işe yarardı.
chmod + x new_script.sh
Birden Çok Dosya için İzinleri Ayarlama
Aynı anda birden fazla dosyaya izin uygulayabiliriz.
Bunlar, geçerli dizindeki dosyalar:
ls -l
"Diğer" kullanıcılar için yazma izinlerini ".page" uzantılı dosyalardan kaldırmak istediğimizi varsayalım. Bunu şu komutla yapabiliriz:
chmod veya * .page
Bunun hangi etkiye sahip olduğunu kontrol edelim:
ls -l
Gördüğümüz gibi, kullanıcıların "diğer" 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
Kullanmanın başka bir yolu chmod
, sahibine, gruba 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) İzni uygula.
- 2: (010) Yazma izni.
- 3: (011) Yazma ve çalıştırma izinleri.
- 4: (100) Okuma izni.
- 5: (101) İzinleri oku ve çalıştır.
- 6: (110) Okuma ve yazma izinleri.
- 7: (111) İzinleri okuyun, yazın ve uygulayın.
Üç iznin her biri, ondalık sayının ikili eşdeğerindeki bitlerden biriyle temsil edilir. İkili tabanda 101 olan 5, oku ve çalıştır anlamına gelir. İkilide 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. Dolayısıyla, okuma ve yazma izinleri zaten mevcutsa, yürütme izinleri eklemek için 7 (111) kullanmanız gerekir. 1 (001) kullanmak, okuma ve yazma izinlerini kaldırır ve yürütme iznini ekler.
Diğer kullanıcı kategorisi için “.page” dosyalarına tekrar okuma iznini ekleyelim. Kullanıcı ve grup izinlerini de belirlemeliyiz, bu yüzden onları zaten oldukları gibi ayarlamamız gerekir. Bu kullanıcılar zaten 6 (110) olan okuma ve yazma izinlerine sahiptir. "Diğerlerinin" okuma ve izinlere sahip olmasını istiyoruz, bu yüzden 4 (100) olarak ayarlanmaları 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 belirler. Kullanıcıların ve grup üyelerinin izinleri önceden oldukları gibi sıfırlanır ve diğerlerinin okuma izni geri yüklenir.
ls -l
Gelişmiş seçenekler
Eğer man sayfasını okursanız, chmod
SETUID ve SETGID bitleri ve kısıtlı silme veya "yapışkan" bit ile ilgili bazı gelişmiş seçenekler olduğunu göreceksiniz.
İhtiyaç duyacağınız vakaların% 99'u chmod
için burada açıklanan seçenekler sizi ele alacaktır.