Varsayılan 0666 maskesinin olduğunu varsayalım. umask0022 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 chmodgibi 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: passwdbö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 umaskbu 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 bitlerimaskkullanı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.