Nfs setattr'ın çalışması için mod değerlerinin 777'den 0777'ye değiştiği bir kod değişikliği gördüm. 2 değerdeki fark nedir?
mkdir()
. 0777 vs 777
Nfs setattr'ın çalışması için mod değerlerinin 777'den 0777'ye değiştiği bir kod değişikliği gördüm. 2 değerdeki fark nedir?
mkdir()
. 0777 vs 777
Yanıtlar:
Onları chmod
(komut satırı programı) geçiriyorsanız , fark yoktur. Fakat bir C programında veya benzeri bir durumda, 0777
sekizinci (üç 1 bitlik üç set, yani niyetimiz var), 777
ondalık ise ve oldukça farklı bir bit kalıbı. ( chmod
herhangi 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
)
chmod
komuta verdiğiniz değer her zaman sekizlik olarak yorumlanır. Kullanarak chmod 888
bir hata verecektir.
chmod
sayı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.)
1777
istiyorsanız, yazmanız 01777
mı gerekiyor ?
1777
, 01777
C ile yazılmıştır (Veya 1023
ondalık sayıdaki aynı sayı olan yazabilirsiniz . Fakat :-)
İ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.
İlginç cevap:
0700
ve arasında bir fark yoktur.700
00700
ve 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.
Linux sisteminde iki tür izin vardır:
Dosya izninde, dosya ve klasörlere izin veriyoruz:
İzinler:
Özel izinlerde üç tür izin vardır:
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.