Dosya izinleri nasıl çalışır?


Yanıtlar:


23

Her dosyanın üç farklı kategori için hakları vardır:

  • Dosyanın sahibi,
  • dosyayla ilişkili grup ve
  • herkes

Haklar, dosyayı okuma hakkı, dosyaya yazma hakkı veya bir komut dosyası veya program durumunda dosyayı yürütme hakkı anlamına gelir.

CLI’de

  • chownörneğin sahibini değiştirmekchown guillermooo
  • grubu değiştir chgrp, örneğinchgrp root
  • hakları ile değiştirin chmod, örneğin chmod u+w filename.ext(dosyanın sahibine yazma izni ekler filename.ext)

Bu araçların her biri hakkında daha fazla bilgi edinmek istiyorsanız, bir terminal açın ve man [tool]örn man chmod.


8
Dizinler için biraz daha zor - yürütme izninin içeriğine erişmek için yürütme izni gerekiyor. Bu, (örneğin) ihtiyaç duyduğunuz bir dosyayı okumak veya yazmak için, dosyayı içeren dizine erişimin yanı sıra, dosyanın kendisinde uygun izinler anlamına gelir. Bu neredeyse hiç ortaya çıkmaz, ancak bu yüzden kötü belgelenmiştir / anlaşılmıştır!
adamnfish

Huh. Haklısın. Daha az uykum olduğunda yarın düzenleyeceğim.
ParanoiaPuppy

1
chown guillermooobu olmamalı chown guillermooo filenamemıydı?
Zeynel

32

Uyarı: Dosyaların ve dizinlerin izinlerinin değiştirilmesi potansiyel olarak zararlıdır ve sisteminizi kullanılamaz duruma getirebilir. Özyinelemeli olarak yanlış yolda root olarak çalıştırıldığında, Ubuntu'yu yeniden kurmak zorunda kalacağımız bir noktaya gelebiliriz. Bu nedenle, HOME dizinleri dışındaki izinleri değiştirmemek ve komutları mümkünse root olarak tekrarlamak gerektiğinden kaçınılması iyi bir fikirdir.

Dosya izinleri

Ubuntu, dosyalar veya dizinler için izin verebileceğimiz veya reddedebileceğimiz üç görev olduğunda Unix'ten izin kavramını devraldı:

  • Okuma erişimi için r (read) dosyası / dizini açılabilir.
  • Yazma / düzenleme erişimi için w (write) dosyası / dizini açılabilir.
  • x (yürütme) dosyası bir program olarak çalıştırılabilir / dizin gezilebilir.

( Bir dizine geçmek , esasen onu bir yol adının parçası olarak kullanmak anlamına gelir. Daha fazla açıklama için bkz. Https://unix.stackexchange.com/a/13891 veya https://unix.stackexchange.com/questions/21251 ).

Ek olarak, izin verdiğimiz üç dava var:

  • u (kullanıcı) bir dosyanın sahibine izinlerin herhangi biri verilir.
  • g (grup) grubuna ait olduğu dosyaya izin verilir.
  • o (diğer) diğerlerine izin verilir.

Şimdi bu dizilişlerin birleşimini elde etmek için her bitin bir izin tanımladığı bir ikili sistem kullanıyoruz. Bu en iyi aşağıdaki Tabloda gösterilebilir.

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Şimdi eğer örneğin istiyorsak

a) bir dosyaya (= kullanıcı) sahibi vardır r , EAD w ayin ve e x ecute izni,
b) dosyanın grup verilmiş r ead ve e x ecute izinleri ve
tüm diğerleri sadece olmalıdır) c r ead erişimini.

Ardından ortaya çıkan dosya izni:

 u   g   o
rwx r-x r--

Bunu sekizli sayılarda elde etmek için, örneğin. için chmodkomuta veya biz aşağıdaki gibi tablosunun üzerindeki doldurmak için gereken bir hata mesajı anlamak varken:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Bir kullanıcı (4 + 2 + 1 = 7), grup (4 + 0 + 1 = 5) ve diğer (4 + 0 + 0 = 4) toplamını toplamak için her izin numarasının eklenmesi gerekir. Sonuçta ortaya çıkan sayı şudur:

 u   g   o
 7   5   4

Şimdi izin bitlerini değiştirmek için iki seçeneğimiz var chmod:

chmod u+rwx g+rx o+r filename

veya çok daha basit

chmod 751 filename

Her iki komut da aynı şeyi yapacaktır.

Evimizde yeni oluşturulan bir dosyanın varsayılan izni 664 (-rw-rw-r--) olacaktır.

Dosyaların program olarak çalıştırılabilir olmasını istiyorsak, bu izni değiştirmemiz gerekir.

  • Biz de bu çalıştırılabilir olabilir dizinin yetkilerini değiştirmek zorunda olacağı. Her iki dosya en Yalnızca Not ve dizinin çalıştırılabilir bit bir program olarak bu dosyayı çalıştırmak için izin verilecektir ayarlanır.

  • Bir dosyayı evimize kopyalarken, kendi varsayılan izinlerimizle değiştirilecek izinlerini kaybedecektir (örneğin bir arşiv seçeneği gibi gelişmiş seçenekleri kullanarak kopyalamadıkça).

  • Ayrıca, dosyanın izinleri kendi bağlama noktalarından devralabileceğini de unutmayın. takma seçenekleri. Bu, Unix izinlerini desteklemeyen Windows biçimli sürücüleri takarken önemlidir.

Kullanıcılar ve Gruplar

Yakında bunun hikayenin sadece yarısı olduğunu fark ettik. Ayrıca eşyalarını da sıralamamız gerekiyor. Bunu yapmak için her dosya veya klasörün belirli bir sahibi ve tanımlanmış bir grup üyeliği vardır.

Bir dosya oluşturduğumuz her seferde bir dosyanın sahibi oluruz ve dosyanın grubu da biz oluruz. İle ls -lbiz izinleri, mülkiyet ve aşağıdaki örnek çıkışından görüldüğü gibi grup görebilirsiniz:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Yalnızca bizim olan bir dosyanın izinlerini, gruplarını veya sahipliğini değiştirmemize izin verilir.

Dosya sahibi biz değilsek bir Permission deniedhata alırız . Tüm dosyalar için sadece root bunu değiştirebilir. Bu nedenle sudo, bizim olmayan dosyaların izinlerini düzenlerken kullanmak zorundayız . chownKullanıcılar ve chgrpgruplar için bunu yapmak için iki tane yerleşik komut vardır .

Bir dosya sahipliğini herhangi bir kişiden birine değiştirmek için takkatbu komutu verebiliriz:

sudo chown takkat testfile

Bir dosyanın grubunu değiştirmek için takkatbiz sorunu

sudo chgrp takkat testfile

Daha fazla ayrıntı ve seçenek için komutların kılavuz sayfalarını okuyun. Ayrıca daha fazla okuma için önerilen bu güzel daha ayrıntılı bir rehber var:

Ayrıca burada bazı ilgili soruları bulabilirsiniz:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.