Kullanıcının diğer bazı kullanıcıların ev dizinlerini okumasına izin ver


10

Sistem yönetiminde yeniyim ve izinle ilgili bir sorgum var. Adlı bir grubum var administration. İçinde administrationgrup kullanıcılar var user1, user2, user3, superuser. Tüm kullanıcılar administrationgruptadır. Şimdi, diğer kullanıcıların dizinini superusergörebilmek için kullanıcıya izin vermem gerekiyor /home. Ancak, ben istemiyorum user1, user2, user3kendisi dışında herhangi bir başka kullanıcının ev görmek. (Yani, user1sadece user1evini görebilmeli vs.).

Kullanıcıları ve grupları oluşturdum ve tüm kullanıcıları gruba atadım. superuserŞimdilik izinleri nasıl belirtmeliyim ?

Başka bir deyişle, iki gruba sahip olmayı düşünüyorum (söyle NormalUsersve Superuser). NormalUsersGrup kullanıcı bulunacaktır user1, user2ve user3. SuperuserGrubu sadece kullanıcısı olur Superuser. Şimdi, Superusergruptaki kullanıcıların dosyalarına tam erişime sahip olmam gerekiyor NormalUsers. Linux'ta bu mümkün mü?



Önceki sorumda, / etc / sudoers dosyasını düzenleme ve kullanıcıyı kısmi yönetici yapma konusunda daha fazla endişeliydim. Burada, yerel bir kullanıcının izinlerini değiştirmeye çalışıyorum. Evet, elde etmeye çalıştığım şeye benziyor, ancak burada farklı bir yönteme yaklaşmaya çalışıyorum.
Ramesh

Yanıtlar:


10

Kullanıcılar kooperatif ise erişim kontrol listelerini (ACL) kullanabilirsiniz. user1(Ve arkadaşlarının) giriş dizinine okuma erişimi veren bir ACL ayarlayın superuser. Yeni oluşturulan dosyalar için varsayılan EKL'yi ve ayrıca varolan dosyalardaki EKL'yi de ayarlayın.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 isterse dosyalarındaki ACL'yi değiştirebilir.

Adlı kullanıcının dosyalarına her zaman superuserokuma erişimi vermek istiyorsanız user1, kullanıcıların ev dizinlerinin farklı izinlere sahip, bindfs ile başka bir görünümünü oluşturabilirsiniz .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

~ Superuser / spyglass / user1 üzerinden erişilen dosyalar dünya tarafından okunabilir. İzinler dışında, giriş dizininin ~superuser/spyglass/user1bir görünümüdür user1. Yana superusererişebileceği tek kullanıcı ~superuser/spyglass, sadece superuserbu yararlanabilir.


Benim sistemde, izinler ve kullanıcı adı takas edilir: setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms

10

İsteğe bağlı bir gruba belirli bir dizine erişim vermek için ACL'leri kullanabilirsiniz.

Örneğin, setfacl -m g:dba:rwx /home/fookoştuysanız, hangi grubun dizinin sahibi olduğuna bakılmaksızın, dba grubunun üyelerinin üzerinde rwx izinleri olur.

Muhtemelen "varsayılan" ACL'yi (dizin içinde yeni oluşturulan nesneler için ACL) bu izni de içerecek şekilde ayarlamak istersiniz.


evet, aynen ... Ben de aynı şeyi öğrendim ama hala LDAP kullanıcıları için sunucuya ACL vermek için iyi bir fikir olup olmadığından emin değilim.
Ramesh

@Ramesh Eğer sistemde kullanıcı iseler (nss-ldap, sssd, vb. Kullandığınız için), o zaman neden iyi olmayacağından emin değilim.
derobert

Bunu test yatağında tekrarlamaya çalışıyordum. Kullanıcı olarak oturum açarken (örneğin foo), "izinler 644 olarak ayarlanmalıdır" olarak bir uyarı iletisi görüyorum. Uyarının göz ardı edilebileceğine inanıyorum. Ancak, laboratuar kullanıcılarının kullanıcı hesaplarının güvenliğinin ihlal edildiğini bilmesini istemiyorum. Ben rwx setfacl komutunda sadece r olarak değiştirdiğimde, foo'nun dizinini göremiyorum.
Ramesh

2
@Ramesh Dizinlerden gerçekten geçmek için + x'e ihtiyacınız var. Bir dizinin 644 olması gerektiğini söyleyen emin değilim, aptalca, 755 veya benzeri olmalıdır. Ancak her iki durumda da, kullanıcı ls'nin izin alanında bir + görür ve bunu görmek için getfacl'i çalıştırabilir - bu bir sır değil.
derobert

Tamam, uyarı mesajı alıyordum, Kullanıcının $ HOME dizini kullanıcıya ait olmalı ve diğer kullanıcılar tarafından yazılamaz olmalıdır. Setacl komutundaki yazma iznini kaldırdım ve şimdi uyarı mesajını göremiyorum.
Ramesh

0

Ne yazık ki, bunu doğrudan vanilya Linux'ta yapmanın hiçbir yolu yok.

Yürütmelerine izin vermek istediğiniz kabul edilebilir komutların beyaz bir listesiyle kısmi yöneticiler için sudo kullanıcılarında yeni bir grup oluşturabilirsiniz.

Ancak, tam olarak istediğinizi elde etmek için, istediğinizi başarmak için Apparmor veya SELinux'u kullanmanız gerekir. Ne yazık ki, bu araçların hiçbirinin kurulumu ve kullanımı kolay değildir ve örnekler burada hızlı bir cevap kapsamı dışında değildir.


1
Linux bir süredir ACL'leri destekliyor. ACL'ler bunu yapmanıza izin verir.
derobert

Evet, bu çözümü buldum ve cevabı güncelledim. Ancak, hala sunucuda ve LDAP kullanıcıları için de kullanılabilir olup olmadığını bilmiyorum.
Ramesh

@derobert Anladığım kadarıyla, erişimi sınırlamak için aynı anda ACL'leri kullanırken birine sudo aracılığıyla kök düzeyinde izin vermek mümkün değil. Bunu başarmak için SELinux veya başka bir MAC kullanmalısınız.
İsviçre

1
Bence OP kullanıcı "süper kullanıcı" dediğinde, kelimenin tam anlamıyla - kök değil anlamına gelir.
derobert
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.