“Chmod + x” ve “chmod 755” arasındaki fark nedir?


61

O arasındaki farkın ne bir dosyayı çalıştırılabilir hale gelince chmod 755ve chmod +xben hangi zaman kullanırsınız? Ben şimdiye kadar sadece kullanmış chmod +xve sadece bir şey okumak ve kullanıldığı chmod 755ve bunu kullanmak daha iyi olup olmadığını anlayamadı chmod 755ya chmod +x.


9
chmod +xdiğer izinleri değiştirmeden tüm çalıştırılabilir bayrağını ayarlar. chmod 755rwxr-xr-x
ravery


5
@ravery: Merhabalar! Açıklama ve eleştiriye açıklık gerektiren bir alan olan yorum bölümünü buldun. Bir cevap / çözüm sağlamak için, aşağıdaki "cevap" bölümünü kullanmalısınız (büyük kırmızı "Cevabınızı Gönderin" düğmesini arayın). Umarım yardımcı olur!
Monica ile Hafiflik Yarışları

Yanıtlar:


144

Kısa versiyon:

Onları karşılaştırabilmek için, aynı perspektiften onlara bakmalıyız, bu yüzden:

  • chmod +xeşittir chmod ugo+x( umaskdeğerine göre)
  • chmod 755 eşittir chmod u=rwx,go=rx

Açıklama:

İlk önce şunu bilmelisin:

  1. + bu izni dosyanın zaten sahip olduğu diğer izinlere eklemek anlamına gelir.
  2. = tüm izinleri yoksay, bunları tam olarak benim verdiğim şekilde ayarla.

    • Böylece "okuma, yazma, yürütme, yapışkan bit, intihar ve rehber" tümü göz ardı edilecek ve yalnızca sağlananlar belirlenecek.
  3. okuma = 4, yazma = 2, yürütme = 1

    • İşte arkasındaki ikili mantık (eğer ilgileniyorsanız):

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      

Kullanarak çalıştırılabilir bit ( ) 'i sahibine, gruba ve diğerlerine +xeklemeyi söylüyorsunuz .+x

  • eşittir ugo+xveyau+x,g+x,o+x
  • Hangi sahibin, grubun veya bir başkasının sizin hedefiniz olduğunu belirlemediğinizde, xhepsini dikkate alacaktır. @Rinzwind'in belirttiği gibi, umaskdeğere dayalı, izin verenlere biti ekler umask. hedefi o+ro zaman belirttiyseniz, umaskartık hiçbir etkisinin olmadığını unutmayın.
  • Diğer modlara (izinler) dokunmuyor.
  • u+xSahibine yalnızca çalıştırılabilir bit eklemek için de kullanabilirsiniz .

Kullanarak 755sizi belirtiyorsunuz:

  • 7 -> u=rwx(sahip için 4 + 2 + 1)
  • 5 -> g=rx(grup için 4 + 1)
  • 5 -> o=rx(diğerleri için 4 + 1)

Yani chmod 755: chmod u=rwx,g=rx,o=rxya da chmod u=rwx,go=rx.

görüntü tanımını buraya girin


15
çok önemli bir ek: kullandığınızda chmod 755bu bitleri ayarlarsınız VE ayrıca (orada olabilecek) tüm suid / sgid / yapışkan bitlerini temizlersiniz (örnek için: ASLA chmod 755 /tmp). 755 her zaman 0755 olarak düşünülmelidir, yani ilk sekizlik bit kümesi de 0'a ayarlanır.
Olivier Dulac

1
neredeyse mükemmel yani erken bir +1 (benden bu rozeti aldın yay
:)

@OlivierDulac Çok fazla ayrıntıya girmek istemedim ama cevabı güncelleyeceğim ...
Ravexina

1
Sanırım izinlerin nasıl çalıştığını yeni anladım, teşekkürler!
Fabich


37

chmod +x tüm kullanıcılar için yürütme iznini varolan izinlere ekler.

chmod 755755Bir dosyanın iznini ayarlar .

755 mal sahibi için tam izin anlamına gelir ve başkalarının iznini okur ve uygular.


7

Ona bakmamın bir başka yolu (ki anlaması daha kolay buluyorum), chmod +xizinleri nispeten belirlemek , oysa chmod 755ki onları kesinlikle belirlemek .

Sonra chmod 755isimli bir dosya üzerinde koştu, onun izinler olacak 755, ya da rwxr-xr-x.

chmod +xsadece mevcut izinleri alacak ve dosyaya yürütme izinleri ekleyecektir .


6

Ayrıntılı bilgi için chmod man sayfasını gözden geçirmenizi tavsiye ederim . Aynı değiştirme görevini yerine getirmek için chmod komutuyla iki farklı işlem modu görüyorsunuz.

Sekizli mod sayıları kullanıyor ve dosyanın tüm izinlerini ayarlıyor. Karakter modu harfleri kullanıyor ve genellikle yalnızca mevcut izinleri değiştirmek için kullanılır.

chmod 755izinleri ayarlarken ayarlar rwxr-xr-x; chmod +xböylece sahip, grup ve dünyanın tümü yürütülebilir izinler ekler. Varsayılan bir dosya izninin rwxr--r--755 ile aynı izinlere ayarlanacağını varsayarsak rwxr-xr-x.


5

Aradaki fark, hangi izinlerin alındığı ve bunları ayarlamak için hangi modu kullandığınızdır.

İle chmod +xhepinizin yürütülebilir bit set - sahibi, sahibi grubu ve diğer kullanıcılara. Bu sembolik mod olarak bilinir. Alıntı yapmak için man chmod:

İşleç +, seçilen dosya modu bitlerinin her dosyanın mevcut dosya modu bitlerine eklenmesine neden olur; - bunların uzaklaştırılmalarına neden olur; ve = eklenmelerine neden olur ve bir yöneticinin belirtilmemiş set kullanıcı ve grup kimliği bitlerinin etkilenmemesi dışında belirtilmemiş bitlerin kaldırılmasına neden olur.

İle chmod 755Eğer sekizlik numaralarını kullanıyorsanız, ikili gösterimi izinleri belirli bitleri ayarlamak için kullanılır. İlk (solda) 3 bit, sahip izinlerine, ortadaki 3 grubun izinlerine ve sonuncusu (en sağdaki) diğer tüm kullanıcıların izinlerine karşılık gelir. Bitlerin sırası her zaman aynıdır read,write,executeveya rwxBu nedenle, tam olarak aynı olduğu için, ikili gösterime dönüştürüldüğünde, münferit sayıya karşılık gelen tek tek sayı, sayıdaki karşılık gelen konum bitinin 1 olduğu izin bitlerini 0 olacak şekilde ayarlayacaktır. Özellikle:

  • Sekizli sayı 7ikili olarak 111'dir , bu yüzden sahibi için tüm okuma, yazma ve bit işlemlerini ayarladınız; rwxayarlandı.
  • Sekizli sayı 5ikilidir (101), bu nedenle okuma ve yürütme ayarlarınızı yazıp devre dışı bırakıyorsunuzdur ve grup ve diğer kullanıcılar için 5 olduğundan, bu iki kategori aynı izinlere sahip olacak. Böylece r-xayarlanır.

İşte küçük demo:

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7月   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7月   6 13:54 file2

3

Önemli bir fark, chmod + 'ın umask kısıtlamalarına tabi olduğudur ve chmod <octal> değildir.

Aşağıdaki örneği düşünün:

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

Bu nedenle, izinlerinizde umask ayarlarınıza uygun bir şekilde delta değişiklik yapmak istiyorsanız, '+' sözdizimini kullanın. Ancak, umask ile ilgili olarak kesinlikle ayarlamak istemezseniz, <octal> biçimini kullanın ve yalnızca bir deltayı değil tüm bitleri belirtmeniz gerektiğini fark edin.


1

Bu güzel cevaplara ek olarak küçük ama muhtemelen önemli bir farktan bahsetmek istiyorum. Komut chmod 755 fileeşittir chmod 0755 file. Bu komutu SETUID-bit veya SETGID-bit ayarlı bir dosyada çalıştırırsak, SETUID / SETGID-bit'i kaldıracaktır. chmod +x fileSETUID / SETGID-bit'e dokunulmaz. Bunu aşağıdaki örnekte görebiliriz:

~ $ dokunma testi
~ $ chmod u + s testi
~ $ ll testi
-rwSrw-r-- 1 ay mook 0 Eylül 14 00:49 test
~ $ chmod + x testi
~ $ ll testi
-rwsrwxr-x 1 mook mook 0 Eylül 14 00:49 sınavı
~ $ chmod 755 testi
~ $ ll testi
-rwxr-xr-x 1 mook mook 0 Eylül 14 00:49 sınavı
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.