Varsayılan 0666 maskesinin olduğunu varsayalım. umask
0022 yeni maskeyi 0644 (0666-0022 = 0644) yapar, yani grup ve diğerlerinin okuma (yazma veya yürütme yok) izinleri vardır.
"Ekstra" basamak (ilk sayı = 0), özel mod olmadığını belirtir.
Mod bir rakamla başlarsa, sekizli olarak yorumlanır, aksi takdirde sembolik olması gerekir.
0, 1 (yapışkan bit için) veya 6 (SGID için) olduğu gibi bir basamaktır. Gibi bir komut , kullanıcı ve gruba okuma ve yazma izinlerini nereye ekleyeceğiniz chmod
gibi diğer yöntemlerle çağrılabilir chmod ug+rw mydir
. Bu durumda modun (ug + rw) bir rakamla başlamadığını, bu nedenle sekizlik olarak değil, sembolik olarak yorumlanacağını unutmayın.
Bkz en.wikipedia.org/wiki/Chmod#Symbolic_examples simgecilik yanı sıra www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/ için özel modları üzerinde biraz.
İlk parçanın maskesini kaldıracağınızı bilmiyorum umask
, ancak teknik olarak yapabilirsiniz. Neden neredeyse her zaman sıfır olarak gördüğünüzü açıklar.
Pinkfloydx33'e kredi
Maskenin ilk basamağı, sahip / grup / diğer modele çok iyi uymayan özel izinlerle ilgilidir. Bir dosya izni için dört hane sağlandığında, ilki şu özel değerlere başvurur:
4000 = SUID
2000 = SGID
1000 = sticky bit
Set-user-ID kısaltması olan SUID biti, yürütülebilir bir programın sahibinin etkin kullanıcı kimliğiyle (uid) çalışmasına neden olur; Bu, kök ayrıcalıkları gerektiren, ancak normal kullanıcılar tarafından çalıştırılması amaçlanan şeyleri yapan programlarda yaygın olarak görülür: passwd
böyle bir örnektir.
Set-grup-ID kısaltması olan SGID biti çok benzerdir ancak sahibinin etkin grup kimliği (gid) ile çalışır .
Yapışkan bit biraz daha karmaşıktır, bu konuda daha fazla bilgi istiyorsanız, man sayfasını okuyabilirsiniz sticky
.
Bu bitler dizinlerle de kullanılabilir, ancak anlamları değişir.
Aslında umask
bu ekstra bitlerden herhangi birini varsayılan olarak etkinleştirmenize izin verecek şekilde ayarlayabileceğinize inanmıyorum , ancak muhtemelen bunu yine de yapmak istemezsiniz.
Kullanıcıya kredi470379
man 2 umask
(ilgili sistem çağrısı) "sadece dosya izin bitlerimask
kullanılır". İçindebash
, umask 1000 bir hata üretir: "sekizli sayı aralık dışında". Peki neden ekstra 0? Sanırım sadece sayının sekizlik olduğunu göstermek.