Chmod ve chown arasındaki temel fark nedir?


43

Bazı örneklerde, chownbunun yerine bazılarının kullanıldığını gördüm chmod. Nerede kullanmayı bilmiyorum chmodve chown. Lütfen aralarındaki farkı, ne zaman ve neden kullanmam gerektiğini açıklayınız.


18
Tek: Kimse bu açık henüz yapılmış ch anges mod e ve diğer ch anges kendi er. Ayrıca, erkeği ual okuyun .
Monica'ya Zarar Vermeyi Durdurun

1
Ederken chownaynı zamanda yapabilirsiniz ch ange gr ou s , orada olup chgrpbu görev için özel olarak ayrılmış.
Monica'ya Zarar Vermeyi Durdurun

6
Bir muz ve sandalye arasındaki temel fark nedir? Muz üzerinde oturma.
Shadur

Yanıtlar:


48

Bir dosya oluşturalım

touch rainbow

Dosyanın meta verilerine bakalım

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

Bilginin ilk kısmı dosya tipidir ( -başında normal dosya demektir) ve izin bitleri

Ondan sonra sahibi (zanna) ve grubu (zanna) görüyoruz. Bunları chowndeğiştirmek için komutu kullanabiliriz :

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

Ve chmodizin bitlerini değiştirmek için kullanıyoruz

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

İzin bitleri sahibi, grubu ve diğerleri için ayrı ayrı ayarlanabilir olduğundan, birleştirerek farklı kullanıcılar için dosya izinlerini kontrol edebilir chownve chmod. Linux'taki izinlerle ilgili bir çarpışma kursu için bu kısa kılavuza bakın .


1
Resim için +1. Ya da chmod a+wörnek?
Yapması

2
@ WinEunuuchs2Unix haha ​​teşekkürler ... Özellikle yararsız izinler ayarını kasten seçtim. Gerçekten olası her permütasyon kullanmaya ne zaman ve neden açıklayan başlarsanız chmodve chown(arayla çok geniş bir soru olan) cevabım sonsuza kadar devam edecektir. Basit tutmaya çalışıyorum
Zanna

96

Basit bir chownterimde, bir dosyanın sahipliğini değiştirmek için kullanılırken chmod, dosya modu bitlerini değiştirmek için kullanılır.

  • chown Dosyanın kime ait olduğunu tanımlar.
  • chmod Kimin ne yapabileceğini tanımlar.

Birini bir dosyanın sahibi yaptığınızda, o dosyayı neredeyse istediği yerde yapabilir; örneğin, chmodkimlerin ne yapabileceğini tanımlamak için kiplerini değiştirmek için kullanabilir.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

Yukarıdaki satırda ravexinadosyanın sahibinin ve adminsgrubun sahibi olduğunu görebiliriz . Kullanabilirim: sudo chown dave:sudo filedosyanın sahibini daveve grubunu sudo; Şimdi dosya "dave" ve "sudo" grubundaki herkes.

Ancak chmodkiminle ne yapabileceğimizi tanımladık. Bir dosyayı okuma, dosyaya yazma veya yürütme hakkı vardır. Örneğin:

chmod 777 file

Sahip, grup ve diğer herkes dahil olmak üzere herkese okuma, yazma ve uygulama hakkı verir.

Gönderen turnoff.us : görüntü tanımını buraya girin


1
Sahip dosyaya ne isterse yapamaz - silmek veya taşınmak, içerdiği dizine yazma izni gerektirir.
muru

2
@muru bu doğru;) Okumak / yazmak / exec demek chattristedim, sanırım dosyayı da etkileyebilecek.
Ravexina

1
@KamilMaciorowski Bunu biliyorsun, bunu biliyorum, Ravexina bunu biliyor ama çoğu insan bilmiyor.
muru

2
@KamilMaciorowski Senden hiçbir şey yapmanı istemedim. Kaçırdığınız şey, çoğu kişinin bir dosyayı silmeyi veya yeniden adlandırmayı dizinde işlemler olarak değil, dosya üzerinde işlemler olarak düşünmesidir. Bu yüzden bunun gibi sorularımız var: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Belli ki bu dizinin işlem olduğunu biliyorsunuz (tebrikler) !), ancak bununla ilgili ortak bir yanılgı var, bu yüzden yeniden adlandırmanın veya silmenin dosyaya değil dizindeki izinleri içerdiğine dikkat çektim. ...
muru

1
@KamilMaciorowski ... Bu soru chmod ve chown arasındaki farkı bilmeyen bir kullanıcı tarafından yazılmış, bu nedenle bana bir dosyayı yeniden adlandırmanın dizinde izinlere ihtiyaç duyacağını bilmeyecekleri makul görünüyor.
muru

19

Bir dosyanın (veya dizinin ya da her neyse) izinlerini göz önünde bulundururken, iki faktör vardır:

  • kim dosyanın sahibi - kullanıcı ve grup ve
  • onunla neler yapabilirler - okuyun, yazın, uygulayın veya bir kombinasyonunu kullanın.

chownkim ile ilgilenir . chmodilgilenir ne . Diğeri yerine birini kullanamazsınız.

Basit Unix izinleri, bir dosyaya erişmeye çalışan kullanıcıları üç türe ayırır:

  1. dosyanın sahibi
  2. dosyaya sahip olan grubun üyesi olan kullanıcılar
  3. herkes

chownilk ikisini değiştirmek için kullanılır. chmodbu türlere verilen hakları değiştirmek için kullanılır.


7

Önceki mükemmel cevaplara eklemek için birkaç puan / ipucu:

  • Erişmek için bir dizinde (ve üstündeki herkes için) yürütme iznine sahip olmalısınız.
  • Değişiklikleri hedefin ve altındakilerin tümüne tekrarlı olarak uygulamak için -R seçeneğini kullanın, örn. chown -R www-data files/
  • Sözdizimi kullanarak kullanıcı ve grubu aynı anda değiştirebilirsiniz. chown user:group myfile
  • Genellikle, özellikle dosya ve dizinlerin bir kombinasyonu ile çalışırken mutlak izinler ayarlamak yerine '+' ve '-' seçeneklerini kullanmak daha kolay / daha iyidir. Örneğin, bir dizine ve altındaki her şeye grup yazma izni vermek chmod -R 775 files/istiyorsanız, 'dosya /' ve içindeki ve altındaki her şeyi çalıştırılabilir ve herkes tarafından okunabilir hale getirir, bu her dosya için istenen sonuç olmayabilir. Kullanmak chmod -R g+w files/sadece başka bir şeye dokunmadan grubun yazma iznini ekleyecektir.

6

Çok iyi cevaplar zaten var, ancak izinlerin anlaşılmasının çok kolay olduğu bir yere katkıda bulunmak istiyorum

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

Bu sayede izinleri bir dosyaya kolayca ekleyebilirsiniz. Yukarıdaki örnekte

user = read + write
other = read but not write
group = not read not write

-Rİzinleri tekrar tekrar değiştirmek isterseniz, unutma .


1

chownDeğişecek kim dosyanın sahibi ve ne grubuna ait iken chmoddeğişikliklerle nasıl (hepsi adresinden ulaşabilirler eğer ya) sahipleri ve gruplar dosyaya erişebilir.

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.