Android

Linux'ta Chmod komutu (dosya izinleri)

Что такое Linux, обзор, отличия. Какой Linux выбрать в 2020

Что такое Linux, обзор, отличия. Какой Linux выбрать в 2020

İçindekiler:

Anonim

Linux'ta, dosyalara erişim dosya izinleri, öznitelikler ve sahiplik aracılığıyla yönetilir. Bu, yalnızca yetkili kullanıcıların ve işlemlerin dosyalara ve dizinlere erişmesini sağlar.

Bu eğitici dosya ve dizinlerin erişim izinlerini değiştirmek için chmod komutunun nasıl kullanılacağını kapsar.

Linux Dosya İzinleri

Daha ileri gitmeden önce, temel Linux izin modelini açıklayalım.

Linux'ta her dosya bir sahip ve bir grupla ilişkilendirilir ve üç farklı kullanıcı sınıfı için izin erişim haklarıyla atanır:

  • Dosya sahibi Grup üyeleri Diğerleri (diğer herkes).

Dosya sahipliği chown ve chgrp komutları kullanılarak chgrp .

Her sınıfa uygulanan üç dosya izin türü vardır:

  • Okuma izni Yazma izni Yürütme izni.

Bu kavram, hangi kullanıcıların dosyayı okumaya, dosyaya yazmasına veya dosyayı yürütmesine izin verileceğini belirlemenizi sağlar.

Dosya izinleri ls komutu kullanılarak görüntülenebilir:

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

İlk karakter dosya türünü gösterir. Normal bir dosya ( - ), dizin ( d ), sembolik bir bağlantı ( l ) veya başka bir özel dosya türü olabilir.

Sonraki dokuz karakter, her biri üç karakterden oluşan üç üçüz olan dosya izinlerini temsil eder. İlk üçlü, sahip izinlerini, ikinci grup izinlerini ve son üçlü diğer herkesi gösterir. İzinlerin dosya türüne bağlı olarak farklı bir anlamı olabilir.

Yukarıdaki örnekte ( rw-r--r-- ), dosya sahibinin okuma ve yazma izinlerine ( rw- ), grubun ve diğerlerinin yalnızca okuma izinlerine ( r-- ) sahip olduğu anlamına gelir.

Üç izin üçlüsünün her biri aşağıdaki karakterlerden oluşturulabilir ve bir dosyaya veya dizine ayarlanmasına bağlı olarak farklı efektlere sahip olabilir:

İzinlerin Dosyalara Etkisi

izin Karakter Dosyadaki Anlamı
Okuma - Dosya okunamıyor. Dosya içeriğini görüntüleyemezsiniz.
r Dosya okunabilir.
Yazmak - Dosya değiştirilemez veya değiştirilemez.
w Dosya değiştirilebilir veya değiştirilebilir.
gerçekleştirmek - Dosya yürütülemiyor.
x Dosya yürütülebilir.
s user üçlüsünde bulunursa, setuid bitini ayarlar. group üçlüsünde bulunursa, setgid bitini ayarlar. Ayrıca x bayrağının ayarlandığı anlamına gelir.

setuid veya setgid bayrakları yürütülebilir bir dosyada ayarlandığında, dosya dosyanın sahibi ve / veya grup ayrıcalıklarıyla yürütülür.

S S ile aynıdır ancak x bayrağı ayarlanmamıştır. Bu bayrak dosyalarda nadiren kullanılır.
t others üçlüsünde bulunursa sticky bitini ayarlar.

Ayrıca x bayrağının ayarlandığı anlamına gelir. Bu bayrak dosyalarda işe yaramaz.

T t aynıdır ancak x bayrağı ayarlanmamıştır. Bu bayrak dosyalarda işe yaramaz.

İzinlerin Dizinlere (Klasörler) Etkisi

Linux'ta Dizinler, diğer dosyaları ve dizinleri içeren özel dosya türleridir.

izin Karakter Dizindeki Anlam
Okuma - Dizinin içeriği gösterilemez.
r Dizinin içeriği gösterilebilir.

(örn. Dizin içindeki dosyaları ls ile listeleyebilirsiniz.)

Yazmak - Dizinin içeriği değiştirilemez.
w Dizinin içeriği değiştirilebilir.

(örneğin, yeni dosyalar oluşturamazsınız, dosyaları silemezsiniz. vb.)

gerçekleştirmek - Dizin olarak değiştirilemez.
x Dizin cd kullanılarak gezilebilir.
s user üçlüsünde bulunursa, setuid bitini ayarlar. group üçlüsünde bulunursa setgid bitini ayarlar. Ayrıca x bayrağının ayarlandığı anlamına gelir. setgid bayrağı bir dizinde ayarlandığında, içinde oluşturulan yeni dosyalar, dosyayı oluşturan kullanıcının birincil grup kimliği yerine dizin grubu kimliğini (GID) devralır.

setuid dizinler üzerinde bir etkisi yoktur.

S S ile aynıdır ancak x bayrağı ayarlanmamıştır. Bu bayrak dizinlerde işe yaramaz.
t others üçlüsünde bulunursa sticky bitini ayarlar.

Ayrıca x bayrağının ayarlandığı anlamına gelir. Yapışkan bit bir dizinde ayarlandığında, yalnızca dosyanın sahibi, dizinin sahibi veya yönetici kullanıcı dizindeki dosyaları silebilir veya yeniden adlandırabilir.

T t aynıdır ancak x bayrağı ayarlanmamıştır. Bu bayrak dizinlerde işe yaramaz.

chmod kullanma

chmod komutu aşağıdaki genel formu alır:

chmod MODE FILE…

chmod komutu, bir dosyadaki izinleri sembolik veya sayısal mod veya referans dosyası kullanarak değiştirmenize olanak tanır. Modları daha sonra daha ayrıntılı olarak açıklayacağız. Komut boşlukla ayrılmış bir veya daha fazla dosyayı ve / veya dizini bağımsız değişken olarak kabul edebilir.

Yalnızca kök, dosya sahibi veya sudo ayrıcalıklarına sahip kullanıcı bir dosyanın izinlerini değiştirebilir. chmod kullanırken, özellikle izinleri yinelemeli olarak değiştirirken çok dikkatli olun.

Sembolik (Metin) Yöntem

Sembolik modu kullanırken chmod komutunun sözdizimi aşağıdaki biçime sahiptir:

chmod perms… FILE…

İlk bayraklar kümesi ( ), kullanıcı bayrakları, dosya izinlerini hangi kullanıcıların sınıfta değiştirdiğini tanımlar.

  • u - Dosya sahibi. g - Grubun üyesi olan kullanıcılar. o - Diğer tüm kullanıcılar. a - Tüm kullanıcılar, ugo aynı.

Kullanıcı bayrağı atlanırsa, varsayılan bayrak a ve umask tarafından ayarlanan izinler etkilenmez.

İkinci bayrak kümesi ( ), işlem bayrakları, izinlerin kaldırılması, eklenmesi veya ayarlanıp ayarlanmayacağını tanımlar:

  • - Belirtilen izinleri kaldırır. + Belirtilen izinleri ekler. = Geçerli izinleri belirtilen izinlerle değiştirir. = Sembolünden sonra hiçbir izin belirtilmezse, belirtilen kullanıcı sınıfından tüm izinler kaldırılır.

İzinler ( perms… ) şu harflerden sıfır veya bir veya daha fazlası kullanılarak açıkça ayarlanabilir: r , w , x , X , s ve t . İzinleri birinden başka bir kullanıcı sınıfına kopyalarken u , g ve o kümesindeki tek bir harfi kullanın.

Birden fazla kullanıcı sınıfı için izinler ayarlarken ( ), sembolik modları ayırmak için virgül (boşluk kullanmadan) kullanın.

Aşağıda chmod komutunun sembolik modda nasıl kullanılacağına dair bazı örnekler verilmiştir:

  • Grubun üyelerine dosyayı okuma izni verin, ancak dosyayı yazmaya ve yürütmeye izin vermeyin:

    chmod g=r filename

    Tüm kullanıcılar için yürütme iznini kaldırın:

    chmod ax filename

    Diğer kullanıcılar için yazma iznini iterek kaldırın:

    chmod -R ow dirname

    Dosyanın sahibi dışındaki tüm kullanıcılar için okuma, yazma ve yürütme iznini kaldırın:

    chmod og-rwx filename

    Aynı şey aşağıdaki form kullanılarak da gerçekleştirilebilir:

    chmod og= filename

    Dosyanın sahibine okuma, yazma ve yürütme izni verin, dosya grubuna okuma izinleri verin ve diğer tüm kullanıcılara izin vermeyin:

    chmod u=rwx, g=r, o= filename

    Dosyanın sahip izinlerini, dosya grubunun üyelerinin sahip olduğu izinlere ekleyin:

    chmod g+u filename

    Belirli bir dizine yapışkan bit ekleyin:

    chmod o+t dirname

Sayısal Yöntem

Sayısal yöntem kullanılırken chmod komutunun sözdizimi aşağıdaki biçime sahiptir:

chmod NUMBER FILE…

Sayısal modu kullanırken, üç kullanıcı sınıfının (sahip, grup ve diğerleri) aynı anda izinlerini ayarlayabilirsiniz.

NUMBER , 3 veya 4 basamaklı bir sayı olabilir.

3 basamaklı sayı kullanıldığında, ilk basamak dosyanın sahibinin, dosya grubunun ikincisinin ve sonuncusunun diğer tüm izinlerini temsil eder.

Her yazma, okuma ve yürütme izinleri aşağıdaki sayı değerine sahiptir:

  • r (okuma) = 4 w (yazma) = 2 x (yürütme) = 1 izin yok = 0

Belirli bir kullanıcı sınıfının izin sayısı, o grup için izinlerin değerlerinin toplamı ile temsil edilir.

Sayısal modda dosyanın izinlerini bulmak için tüm kullanıcı sınıflarının toplamlarını hesaplamanız yeterlidir. Örneğin, dosyanın sahibine okuma, yazma ve yürütme izni vermek için, dosya grubuna okuma ve yürütme izinlerini vermek ve yalnızca aşağıdakileri yapacağınız diğer tüm kullanıcılara okuma izinlerini vermek için:

  • Sahip: rwx = 4 + 2 + 1 = 7Grup: rx = 4 + 0 + 1 = 5 Diğerleri: rx = 4 + 0 + 0 = 4

Yukarıdaki yöntemi kullanarak, istenen izinleri temsil eden 754 sayısına 754 .

setuid , setgid ve sticky bit bayraklarını ayarlamak için dört basamaklı sayı kullanın.

4 basamaklı sayı kullanıldığında, ilk basamak aşağıdaki anlama gelir:

  • setuid = 4setgid = 2 yapışkan = 1 değişiklik yok = 0

Sonraki üç basamak, 3 basamaklı sayı kullanıldığında aynı anlama gelir.

İlk basamak 0 ise, atlanabilir ve mod 3 basamakla temsil edilebilir. 0755 sayısal modu 755 aynıdır.

Sayısal modu hesaplamak için başka bir yöntem de (ikili yöntem) kullanabilirsiniz, ancak bu biraz daha karmaşıktır. 4, 2 ve 1 kullanarak sayısal modun nasıl hesaplanacağını bilmek çoğu kullanıcı için yeterlidir.

stat komutunu kullanarak sayısal gösterimdeki dosyanın izinlerini kontrol edebilirsiniz:

stat -c "%a" filename

644

chmod komutunun sayısal modda nasıl kullanılacağına dair bazı örnekler:

  • Dosyanın sahibine grup üyelerine ve diğer tüm kullanıcılara okuma ve yazma izinleri ve yalnızca okuma izinleri verin:

    chmod 644 dirname

    Dosyanın sahibine izinleri okuma, yazma ve yürütme, grup üyelerine okuma ve yürütme izinleri verin ve diğer tüm kullanıcılara izin vermeyin:

    chmod 750 dirname

    Belirli bir dizine okuma, yazma ve yürütme izinleri ve yapışkan bir bit verin:

    chmod 1777 dirname

    Dosya sahibinin okuma, yazma ve yürütme izinlerini yinelemeli olarak ayarlayın ve belirli bir dizindeki diğer tüm kullanıcılar için izin yok:

    chmod -R 700 dirname

Referans Dosyası Kullanma

--reference=ref_file seçeneği, dosyanın izinlerini belirtilen başvuru dosyası ( ref_file ) ile aynı olacak şekilde ayarlamanızı sağlar.

chmod --reference=REF_FILE FILE

Örneğin, aşağıdaki komut file1 izinlerini file1 atar

chmod --reference=file1 file2

Dosyanın İzinlerini Yinelenen Olarak Değiştirme

Verilen dizinin altındaki tüm dosya ve dizinlerde özyinelemeli olarak çalışmak için -R ( --recursive ) seçeneğini kullanın:

chmod -R MODE DIRECTORY

Örneğin, /var/www dizini altındaki tüm dosya ve alt dizinlerin izinlerini 755 şunları kullanırsınız:

chmod -R 755 /var/www

Sembolik Bağlantılarda Çalışma

Sembolik bağlantılar her zaman 777 izne sahiptir.

Varsayılan olarak, symlink'in izinlerini değiştirirken, chmod , bağlantının işaret ettiği dosyadaki izinleri değiştirir.

chmod 755 symlink

Muhtemelen, hedef sahipliği değiştirmek yerine “symlink” e erişemezsiniz: İzin reddedildi ”hatası alırsınız.

Hata, Linux dağıtımlarının çoğunda varsayılan olarak sembolik bağların korunduğu ve hedef dosyalar üzerinde çalışamayacağınız için oluşur. Bu seçenek /proc/sys/fs/protected_symlinks . 1 etkin ve 0 devre dışı demektir. Symlink korumasını devre dışı bırakmamanız önerilir.

Toplu Olarak Dosya İzinlerini Değiştirme

Bazen dosyaları ve dizin izinlerini toplu olarak değiştirmeniz gereken durumlar vardır.

En yaygın senaryo, web sitesi dosyasının izinlerini 644 ve yönetmenin izinlerini 755 olarak özyineli olarak değiştirmektir.

Sayısal yöntemi kullanarak:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Sembolik yöntemi kullanarak:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

/var/www/my_website komutu /var/www/my_website altındaki dosyaları ve dizinleri /var/www/my_website ve izinleri ayarlamak için bulunan her dosya ve dizini chmod komutuna /var/www/my_website .

Sonuç

chmod komutu dosyanın izinlerini değiştirir. İzinler sembolik veya sayısal mod kullanılarak ayarlanabilir.

chmod hakkında daha fazla bilgi edinmek için chmod man sayfasını ziyaret edin.

chmod terminali