user2
oturumu kapatıp tekrar açmanız gerekir. Grup izinleri şu şekilde çalışır:
- Giriş yaptığınızda, işlemlerinizin ana grubunuzda grup üyeliğinin
/etc/passwd
yanı sıra, kullanıcının belirtildiği tüm gruplar olur /etc/group
. (Daha doğrusu, pw_gid
alan getpw(your_uid)
, artı tüm gruplar hangi kullanıcı açıkça üyesi olan . Ötesinde /etc/passwd
ve /etc/group
söz konusu bilgiler NIS veya LDAP gibi kullanıcı veritabanlarının diğer tür gelebilir.) Ana grup sürecin hale etkili grup kimliği ve diğer gruplar ek grup kimlikleri haline gelir .
- Bir işlem, dosyaya erişim gibi belirli bir gruba üyelik gerektiren bir işlem gerçekleştirdiğinde , söz konusu grubun etkin grup kimliği veya sürecin ek grup kimliklerinden biri olması gerekir.
Gördüğünüz gibi, kullanıcının grup üyeliğinde yaptığınız değişiklik yalnızca kullanıcı oturum açtığında etkili olur. Çalışan işlemler için çok geç. Bu yüzden kullanıcının oturumu kapatıp tekrar açması gerekir. Bu çok fazla sorun varsa, kullanıcı ayrı bir oturumda oturum açabilir (örn. Farklı bir konsolda veya ile ssh localhost
).
Gelişmiş bir süreç, yalnızca ayrıcalıkları (kullanıcı kimlikleri, grup kimlikleri, yetenekler) kaybedebilir . Çekirdek init
, kök olarak çalışan işleme (önyüklemeden sonraki ilk işlem) başlar ve her işlem sonuçta bu işlemden çıkarılır¹. login
İşlem (veya sshd
, ya sizi kaydeder masaüstü yöneticisi parçası) hala root olarak çalışıyor. İşinin bir kısmı kök ayrıcalıklarını bırakmak ve uygun kullanıcı ve gruplara geçmek.
Tek bir istisna vardır: bir setuid veya setgid programı yürütmek . Bu program ek izinler alır: üst işlemin üyeliklerinin çeşitli alt kümeleriyle birlikte setxid yürütülebilir dosyasının sahibi olan kullanıcı veya gruptaki ek üyelik altında hareket etmeyi seçebilir. Özellikle, bir setuid kök programı kök izinlerine sahiptir, bu nedenle her şeyi yapabilir²; programlar işlerini böyle sever su
ve sudo
yapabilirler.
İn
Bazen init'ten (initrd, udev) türetilmeyen süreçler vardır, ancak ilke aynıdır: kök olarak başlayın ve zamanla ayrıcalıklarınızı kaybedin.
²
SELinux gibi çok seviyeli güvenlik çerçevelerinin engellenmesi.