Bir gruba kullanıcı ekledim, ancak dosyalar üzerindeki grup izinlerinin hala bir etkisi yok


Yanıtlar:


28

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/passwdyanı sıra, kullanıcının belirtildiği tüm gruplar olur /etc/group. (Daha doğrusu, pw_gidalan getpw(your_uid), artı tüm gruplar hangi kullanıcı açıkça üyesi olan . Ötesinde /etc/passwdve /etc/groupsö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 suve sudoyapabilirler.

İ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.


1
Bir masaüstü GUI kullanıyorsanız, bir terminal penceresine oturum açıp tekrar oturum açmanın grup üyeliğini sıfırlamayacağını unutmayın. Bu sorunu yaşadım ve GUI oturumumdan da çıkmam gerekiyor: þ
user394

3
@ user394 Oturumu kapatıp tekrar açmak, grup üyeliğini sıfırlar. Yalnızca bir terminal penceresini kapatırsanız oturumu kapatmazsınız.
Gilles 'SO- kötü olmayı bırak

10

Kullanıcı2 oturumunu kapatıp açmanız gerekebilir (veya yeni bir oturum açmak için ssh'ing yapmayı deneyin). id --groupsBir kullanıcının sayısal grup kimliklerini göstermek için çıkışını kontrol edin .


1

sudo su $(whoami)

Temel olarak aynı geçici çözüm ssh localhost , ancak bir ssh sunucusu yüklenmeden kullanılabilir.

Kökün olduğu sürece. Ancak yeni bir grup eklediyseniz ve izinleri değiştirdiyseniz, büyük olasılıkla eklemiş olursunuz.


Bu, kabul edilenden çok daha az bilgi açısından eksiksiz bir cevap olsa da, bazen bir saatin nasıl oluşturulacağını bilmek istersiniz ve bazen sadece saatin kaç olduğunu bilmek istersiniz. Bu cevap, bir sonraki çıkışımı yapana kadar çalışabilecek bir hile ile bana yardımcı oldu.
Benjamin Staton

0

Ana bilgisayar için ControlMaster ssh yönergesini kullanıyorsanız, kullanıcı oturumu kapatmanın yardımcı olmadığı bir durum vardır. Hesabınızı bir gruba ekler, oturumu kapatır ve aynı ControlMaster bağlantısı içinde tekrar oturum açarsanız, oturumda size yeni bir üyelik gösterilmeyecektir. Master bağlantısını zorla kesmeniz gerekecek

ssh -O exit hostname

tekrar oturum açmadan önce.

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.