Her kullanıcı için nasıl farklı izinler verebilirim?


11

Bu yüzden, birkaç yıldır Linux kullanıyorum ve bu cevabı gerçekten bilmeliyim, ama bulmakta zorlanıyorum. Özellikle Debian tabanlı distro .... kullanıyorum çoğunlukla Ubuntu.

Üçten fazla kullanıcısı olan bir sunucum varsa, her kullanıcı için bir dosyaya nasıl farklı izinler ayarlayabilirim?

Örneğin:

Bu izinlere ve sahipliğe sahip bir dosyam varsa:

rwx rw_ r__ user1:group1 file1.txt

ve bu istenen izinlere sahip 3 kullanıcı var ....

  • kullanıcı1 rwx
  • kullanıcı2 rw_
  • kullanıcı3 r__

Tek sahip is var yapmak kullanici1 , dosyanın sahibi kullanici2 olmak grup1 ve kullanıcı3 ne olabilir - doğru mu?

Ama bir ne varsa Kullanıcı4 ve birey5 .

  • kullanıcı4 _wx
  • kullanıcı5 __x

Bunu nasıl kurarım?

Bunu daha önce yapmak zorunda kalmadım, ancak bu soruyu bir Windows yöneticisi tarafından istendi ve dürüstçe cevap veremedim.


8
İzinlerde bu tür ayrıntılar için, erişim kontrol listelerini (EKL) kullanmanız gerekecektir Burada hızlı bir Eğitim bulabilirsiniz . Dikkatli bir kelime olmasına rağmen, izinler yerine ACL'lerin yoluna başladığınızda, çok kaygan bir eğimdir ve sonunda bazı istenmeyen sonuçlarla işler hızlı bir şekilde karmaşıklaşır.
MelBurslan

Yanıtlar:


19

Geleneksel unix izinleri yalnızca bulduğunuz kullanıcı, grup ve diğer izinlere izin verir. Bunlar, oluşturulması gereken grupların bazı garip kombinasyonlarıyla sonuçlanabilir ...

Böylece yeni bir ACL (Erişim Kontrol Listeleri) biçimi tarandı. Bu, birden fazla kullanıcı ve farklı izinlere sahip birden çok grup belirtmenize olanak tanır. Bunlar setfaclkomut ile ayarlanır vegetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Çıktıya bakarak bir dosyanın ACL'si olup olmadığını kolayca anlayabilirsiniz ls:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

+İzinleri sonunda bir ACL gösterir.


2

Evet, ACL: ler farklı kullanıcılar veya gruplar için farklı hakların özgürce ayarlanmasına izin verir. IIRC olağan grup izinleri, grupların ve kullanıcıların ACL: s (olduğu gibi gösterilir ) aracılığıyla sahip olabileceği izinler kümesini masksınırlar getfacl, ancak setfaclizinler eklerseniz bununla ilgilenmelidir.

Ancak bazı durumlarda izin kümesinin herhangi bir anlam ifade edip etmediğini sormanız gerekir.

Bu istenen izinlere sahip 3 kullanıcı var ....
- user1 rwx
- user2 rw_
- user3 r__

Bunu, kullanıcı1'i dosyanın sahibi, kullanıcı2'yi grubun üyesi yaparak ve kullanıcı3 dahil olmak üzere diğerlerinin okuma erişimine izin vererek ACL: s veya (yaklaşık olarak) normal Unix izinleriyle uygulayabilirsiniz. Yine de herkes (dizine erişimi olan) da okuma erişimine sahip olacaktır.

Bu izinlerin anlamını düşünelim. Bir kullanıcının okuyabildiği, diğerinin okuyabildiği ve yazabildiği bir kullanıcınız var. Bu tamamen olağan. Bunların hiçbirinin dosyayı yürütme erişimi yoktur, ancak üçüncü bir kullanıcının da bunu yapması gerekir.

Aklımda bu pek mantıklı değil. Dosyayı okuyabilen herhangi bir kullanıcı, orijinal dosyayı yürütmek için erişim olmadan bir kopya (*) oluşturabilir, yürütülebilir olarak işaretleyebilir ve çalıştırabilir. Bazı kullanıcılar için erişim izni vermenin diğer kullanıcılar için değil, çalıştırılması mantıklı olan tek durum, yürütülebilir dosyanın intihar yoluyla ayrıcalıklarını yükseltmesidir. Ancak durum böyleyse, dosyaya yazma erişimi olan başka kullanıcılara da sahip olmamalısınız.

Aynı anlamda, -wxuser4 ile ve user5 ile --xbenim için bir anlam ifade etmiyor. Yalnızca ekleme işlemine izin verme olasılığı varsa, yalnızca yazma erişimi mantıklı olabilir , ancak izin sistemi bu kadar ayrıntılı değildir.

(* hiçbir yere yazamazlarsa)


Yine de, xbit için garip gereksinimi kaldırırsak, user1 ve user2'nin yazma erişimine sahip olması ve user3'ün okuma erişimine sahip olması gereken bir dosya bırakılır. Bir yazar ve birden fazla okuyucu geleneksel modelle kolay olurdu, ancak bu durumda dosya izinlerini içeren dizinin izinleriyle birleştirmek için püf noktalarına ihtiyaç duyacaktır. Neyse ki, çoğu durumda daha fazla izne sahip bir kullanıcı yeterlidir.

Yürütme bitindeki gereksinim olmadan, ACL: s kullanmak için bir durum gibi görünür. Ama bununla birlikte, bu özel örnek bana oldukça kıvrımlı görünüyor.


Kullanıcı yalnızca yürütme izni olmadan monte edilen bir dosya sistemine yazabiliyorsa, uygun izinler ayarlanmışsa orijinali yürütebilse bile bir kopyasını yürütemez. Ayrıca, istismar aramalarını önlemek istiyorsanız, yalnızca yürütme mantıklı olabilir. -wxkesinlikle garip.
celtschk

1
Bazı sistemlerde yalnızca eklemelere izin verme mekanizması vardır. chattr +aÖrneğin Linux var . Ve sisteme özgü herhangi bir şey olmadan bile, dosyayı bir FIFO yapabilirsiniz. --xve ayrıca -wx, dizinler için de bana mantıklı geliyor .
Random832
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.