Unix: Yalnızca bir kişinin klasörümü aynı fs'de görmesine nasıl izin verebilirim?


9

Bir arkadaşımın direktifine erişim vermek istiyorum. Dizin bulunduğu dosya sistemine erişebilir. Tüm kullanıcılar için izinleri ayarlamak istemiyorum. Sadece bir kişinin direk görmesini nasıl sağlayabilirim? Hiçbirimiz süper kullanıcı değiliz.

[BOUNTY CHALLENGE] Ubuntu kullanarak yanıtların hiçbiri çalışmıyor:

1. jamuraa Yaklaşımı çalışmıyor

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. nik'in Yaklaşımı çalışmıyor: var olmayan dosyaya erişilemiyor

3. ba's Yaklaşım çalışmıyor: Grup oluşturamıyorum, kök değil.

4. TOK Yaklaşımı çalışmıyor, kullanıcılar iki grupta bulunuyor: "kullanıcılar" ve "alan"

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
Bu cevapların sizin için nasıl bir sorun oluşturduğuna dair bir satırlık bilgi vermeniz faydalı olacaktır - diğer seçenekleri oluşturmak için daha iyi bir sorun tanımı verir.
nik

nik: Hata profilleri eklendi.

Yanıtlar:


12

Yalnızca normal UNIX izinleriyle (kullanıcı, grup, herkes), bunu kolayca yapamazsınız. Artık dizine erişmeniz gerekmiyorsa, dizinin sahibini bazı Unices için geçerli olan arkadaşınızla değiştirebilirsiniz, ancak çoğu değil.

Ancak - Linux'ta ACL'leri etkinleştirdiyseniz, dosyanın sahibi sizseniz bunu yapabilirsiniz. Sadece komutunu çalıştırın setfacl -m user:friend:rwx filenamenerede arkadaşı Arkadaşınızın hesap adıdır ve dosya adı dosyasıdır. Çalışarak yürürlüğe girip girmediğini kontrol edebilirsiniz , listede getfacl filenameüçlüyü görmelisiniz user:friend:rwx. ACL'leri etkinleştiren çok fazla Linux sistemi görmedim.


ACL'ler, dosya sisteminizde etkin oldukları varsayılarak, bu sorunun standart çözümüdür.
Ryan C. Thompson

HHH bunun işe yaramayacağını söylüyor. Bazı garip sebeplerden ötürü ACL'lerin etkinleştirilmemesi durumunda, bunun olacağını düşünüyorum. HHH, ne verir?
pboin

pboin: Bu yöntem o kadar işe yaramıyor ki nedeni ACL'lerin etkin olmaması ya da başka bir şey olmadığından emin olmayabilir.

11

Bu okulda tartıştığımız bir şey.
Kabaca böyle gider,

  1. Bir dizin oluşturun ( databurada referans olması için adlandırılmıştır )
    • izinleri " chmod 711 data" olarak değiştir
    • grubunun ve diğerlerinin yalnızca x- dizine girme erişimi
    • dizini listeleyemezler
    • Şimdi, bir dizin oluşturun difficult-name-here(bu bir karma-string olabilir)
    • izinleri " chmod a+rx difficult-name-here" olarak değiştir
    • dış dizin listelenemezken bu dizinin içeriği güvenlidir
    • "zor adı" bilen kişiler bu ikinci dizine atlayabilir
      • " cd path/to/data/difficult-name-here"
      • diğerleri adı göremez ve dizin içeriğine erişemez
      • Ancak, roother zaman her şeye erişebilir (burada bir sorun değildir)
    • difficult-name-herebu verileri vermek istediğiniz kişilerle paylaşın
    • Paylaşılan dosyaları bu ikinci dizinde tut

Oldukça kaba, ama eğer unix erişim kontrolü kırılmadan kırılabilirse, bilmek istiyorum.


Yorumdan güncelleme dmckee,
Bu tam olarak ulaştığımız sonuç!
"belirsiz güvenlik" güvenlik sınırlıdır .

Veriler için koruma tasarlarken
değerini belirlemek önemlidir.

Hedeflemelisiniz,

  • Daha yüksek bir güvenlik kırma maliyeti,
  • Güvenli içeriğin maliyeti,
  • Paranoya ile orantılı bir faktör

Bu durumda, rootdizin ağacını halka açık bir yerde numaralandırmaya karar verirseniz,
sırrınız ortadan kalkar! Ancak, kökten veya potansiyel sorumsuzluklarından mı korunuyorsunuz?
Bu durumda, paylaşılan dosyalar hakkında endişelenmeniz gereken çok şey var.


Sorudaki çalışmayan notla ilgili güncelleme .
Bunu linux'un ilk günlerinde işe yaradığını bilmek için kullandım.
Eğer 'alırsanız cannot access non-existant file' yerine 'permissions denied'çok büyük olasılıkla sırayla bir hata yapmış. Ne istersen böyle görünmeli,

 755 711 755 her neyse - === Erişim izinleri

 BasePath / CoverDir / Az Bilinen / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^ ons görülemez
          | ^ ^ ^ ^ ^ ^ ^ Dizin Adı okuma erişimi
          ^^^^^ Genel arkadaş ile paylaştı. Belirsiz dizin.
                ulaşılabilir 
                dizin.
  1. ' CoverDir' Erişimi ' ' olarak ayarlarsanız 'rwx--x--x,
    grup ve diğerleri yalnızca dizini girebilir ancak içeriğini okuyamaz.
  2. Şimdi, içinde belirsiz bir dizin adı
    ' Obscure', kullanır ve ' rwxr-xr-x' ile tam okuma erişimi verirseniz ,
    bu adı bilen herkes içeriğini listeleyebilir.
  3. Bu erişim, dışarıdan ' ls BasePath/CoverDir/Obscure'
    Grubunuzdaki insanlar ve diğerleri yapamayacakları için ' ls BasePath/CoverDir' yapılmalıdır .

7
"Eğer bu kırılabilirse [...], bilmek istiyorum" Eh, belirsizliğin ve dolayısıyla da kırılganlığın güvenliğinin en iyi örneğidir. Uzun vadede güvenmeyin. Gerçi temiz.
dmckee --- eski moderatör yavru kedi

Unix erişim denetiminiz güvenli bir şekilde uygulanırsa, bu neredeyse gölgeli bir parola veritabanı (veya sshözel anahtar) kadar güvenlidir .
nik

5

Ryan aslında% 100 doğruydu, sadece geri kalmıştı. Arkadaşınız (büyük olasılıkla) kullanıcı adıyla ilişkili benzersiz bir gruba sahip olduğundan, söz konusu dizinin grup sahipliğini büyük olasılıkla arkadaşınızın kullanıcı adı olarak değiştirin. İçeriğinizi ikiniz arasında paylaşabilmek için kullanıcı olarak sahipliğinizi korumalısınız:

chown -R youruser:friendgroup ~/foo/bar

Ardından, diğer kullanıcının sahip olmasını istediğiniz erişime bağlı olarak dizine uygun izinleri atayın:

chmod -R 770 ~/foo/bar

her ikinize de dizine ve içeriğinin tümüne tam rwx erişimi verir.

Bunun, arkadaşınızın grubuna başka bir kullanıcının eklenmediğini varsaydığını lütfen unutmayın. Sistem muhtemelen bu atamayı yapmazdı, ancak daha önce de belirtildiği gibi, kök kullanıcı istediklerini yapabilir. Arkadaşınızın veya rastgele kullanıcının ait olduğu her grubu görmek için gruplar komutunu kullanabilirsiniz. Ayrıca, izinler herhangi bir nedenle değiştirilmedikçe, sistemdeki her grup için grup atamalarını içeren / etc / group dosyasını görüntüleyebilmeniz gerekir.


4

Siz ve arkadaşınız için yeni bir grup oluşturacağım ve dizin ve setgid bitiyle birlikte klasör ve sahip için klasör izinlerini tam olarak ayarlayacağım.

Ancak ihtiyaçlarınıza bağlı olarak, sizi ve arkadaşlarınızı umask değiştirmeye bakmak zorunda kalabilirsiniz, böylece grubu otomatik olarak yeni dosyaları değiştirebilecek şekilde ayarlar.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
Bu, sahip olmadığı süper kullanıcı ayrıcalıklarını gerektirebilir.
Keck

1
Oh, bu çizgiyi tamamen kaçırdım: x Sonra kayboldum. Sanırım sadece posta yoluyla yerel olarak gönderirdim - en iyi çözüm değil ama en azından dosya diğer adama rastlar.
gaqzi

2

Erişim Kontrol Listeleri bunu yapmanın mükemmel yoludur.

Ancak (doğru hatırlamıyorsam), dosya sisteminin ACL'ler (örn. "/ Dev / sda6 / home ext3 varsayılanları, acl "), / etc / fstab aracılığıyla başlatılması gerekir ve bu yalnızca süper kullanıcının yapabileceği bir şeydir. ..


2

Grsec / selinux gibi RBACS gereklidir ..


Sorunun bu olup olmadığından emin değilim, biraz alıntı ekleyebilir misiniz?

2

Varsayılan olarak, bir Ubuntu sistemindeki her kullanıcının aynı adla ilişkili bir grubu vardır. Eğer arkadaşınızı grubunuza ekleyip söz konusu klasörü olarak işaretleyebiliyorsanız, g+rwxayarlanmış olacaksınız. Her kullanıcı için bir grup oluşturmanın nedeni olarak belirtilen bu kullanım durumunun belirsiz bir şekilde hatırlıyorum.


Gruplara kullanıcı eklemek, OP'nin sahip olmadığını söylediği kök erişimi gerektirir.
Dave Sherohman


2

bunu denemedim, ancak içinde şifrelenmiş bir kullanıcı alanı FS'si olan (örneğin encfs) genel olarak okunabilir bir dizine ne dersiniz. Sonra bu parolayı arkadaşınızla paylaşabilirsiniz ve başka hiç kimse bu verileri kullanamaz (sanırım verileri alabilir ve bir şifre kırıcıyı çevrimdışı çalıştırabilirler mi?).


2

Linux'a dosya ayrıcalıklarındaki pencerelerle aynı inceliği vermek için grupları iç içe yerleştirmeniz gerekir. Arkadaşınızın olmasını istediğiniz şekilde klasörünüze erişimi olan bir grup oluşturun. Onu o gruba veya içinde bulunduğu gruba ekleyin. Örneğin

/ foo, paylaşmak istediğiniz klasördür. Klasöre istenen erişime sahip bir grup FooGroup oluşturun. Bu gruba, bu klasöre erişim izni vermek istediğiniz grupları ve kullanıcıları ekleyin.

Her klasör veya dosya için bir gruba sahip olmak büyük bir acıdır, ancak Windows ile aynı düzeyde erişimi kısıtlamanın en iyi yoludur.


1

Dizini ile şifreleyebilirsiniz gpg. Ve sonra nik'in önerdiği gibi konumu gizlemeye çalışın.

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.