0777 ve 777 mod değerleri arasında bir fark var mı?


Yanıtlar:


75

Onları chmod(komut satırı programı) geçiriyorsanız , fark yoktur. Fakat bir C programında veya benzeri bir durumda, 0777sekizinci (üç 1 bitlik üç set, yani niyetimiz var), 777ondalık ise ve oldukça farklı bir bit kalıbı. ( chmodherhangi bir sayısal argümanı sekizlik olarak yorumlayacaktır, dolayısıyla baştaki sıfır gerekli değildir.)

0777 (sekizlik) == ikili 0b 111 111 111    == izinler rwxrwxrwx   (== ondalık 511)

777 (ondalık) == ikili 0b 1 100 001 001== izinler sr----x--x(== sekizlik 1411)


14
Sadece açık olmak gerekirse - chmodkomuta verdiğiniz değer her zaman sekizlik olarak yorumlanır. Kullanarak chmod 888bir hata verecektir.
mattdm

fakat her hane sekizdir, tam sayı değil.
Drake Clarris

1
Sekizlik rakamlardan oluşan bir dize olan bir sekizlik sayı. chmodsayısal bir argümanı önek ne olursa olsun, sekizlik olarak yorumlar. (Ama gerçekte sayının hiçbir işlevi yoktur; sadece rakamlar veya daha doğrusu bitler.)
alexis 23

Yani, bir C programında, geçmek 1777istiyorsanız, yazmanız 01777mı gerekiyor ?
Faheem Mitha

1
@Faheem, bu doğru. Octal 1777, 01777C ile yazılmıştır (Veya 1023ondalık sayıdaki aynı sayı olan yazabilirsiniz . Fakat :-)
alexis

4

İlk bit yapışkan bit için kullanılır http://en.wikipedia.org/wiki/Sticky_bit

4 basamak kullanarak izin verirseniz, ilk önce bu bit ayarlanır veya kaldırılır.


3
Yapışkan bit, ilk bit değil, üçüncüsüdür. Birincisi suid biti, ikincisi ise sgid bitidir. Üç rakam kullanarak izinleri ayarlarsanız, eksik olan ilk rakam bu üç bit'i de etkiler (yani kaldırır).
jlliagre

Haklısın. Ergo, "alexis tarafından verilen cevap sıkıcıdır.
alfredocambera

2
@jlliagre chmod man sayfasından - "İhmal edilen rakamların başında sıfır olduğu varsayılır.". Aynı zamanda, ilk 4 basamaklı bir yapışkan bit. Man sayfasından tekrar: "İlk hane, ayarlanan kullanıcı kimliğini (4) ve ayarlanan grup kimliğini (2) ve kısıtlı silme veya yapışkan (1) özellikleri seçer. İkinci hane, dosyaya sahip olan kullanıcı için izinleri seçer: 4), (2) yaz ve çalıştır (1), üçüncü dosya grubundaki diğer kullanıcılar için aynı değerlere sahip olanları seçer ve dördüncü dosya grubundaki olmayan diğer kullanıcılar için aynı değerlere sahiptir. ".
Faheem Mitha

1
@FaheemMitha ihmal basamak böylece sıfır gelen varsayılır olacak yukarıda belirtilen bit kaldırın. Ayrıca, bitleri ve rakamları karıştırıyor gibisiniz, ilk rakam hakkında değil, ilk bit hakkında yorum yapıyordum.
jlliagre

1
@jlliagre Tamam, yeterince adil.
Faheem Mitha

1

İlginç cevap:

  • Diğer cevaplarda açıklandığı gibi 0700ve arasında bir fark yoktur.700
  • ama orada olduğu arasında bir fark 00700ve 0700(dizinler için)

En azından GNU coreutils'in Linux'taki varsayılan chmod versiyonu budur.

Bu örneğe bakın:

$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir                   # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir                  # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul  8 09:27 mydir

Bu, dizinler için setuid / setgid bitlerinin yanlışlıkla silinmesini önlemek içindir. Ayrıntılar için chmod belgelerine bakın.


-1

Linux sisteminde iki tür izin vardır:

  1. Dosya İzni
  2. Özel izin

Dosya izninde, dosya ve klasörlere izin veriyoruz:

İzinler:

  • oku (4)
  • geç (2)
  • çalıştırma (1)

Özel izinlerde üç tür izin vardır:

  • SUID (4)
  • SGID (2)
  • Yapışkan Bit (1)

Sorunuzda neyin farklı olduğunu soruyorsunuz, bu nedenle, aralarında hiçbir fark yoktur, chmod 777 and 0777çünkü no any octal value(0) sıfıra sahip olan değeri gösterir.

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.