Yerel makinede dosya paylaşmanın iyi ve kolay yolu


13

Aşağıdaki özelliklere sahip bir dizin istiyorum:

  • Birçok kullanıcı dosyaları içine kopyalayabilir
  • Bu dosyalar bu kullanıcılar tarafından silinebilir / değiştirilebilir (A kullanıcısı bu dizine kopyalanan dosyayı silebilir / değiştirebilir)

normal dosya izinleri kullanılarak yapılamaz (çünkü izinler kopyada saklanır).

İşte net ne buldum:

Bazı kullanım durumları:

  • Yerel makinede müzik paylaşma
  • Basit git depo paylaşımı (sadece birçok kişiye çıplak bir depo yapılabilir) --- gitoz gibi çözümler olduğunu biliyorum
  • Birçok geliştiricinin php uygulamasının test örneğini root vermeden değiştirmesine izin verin (dosyaları kopyalayacağını tahmin ediyorum) --- Kâr amacı gütmeyen genç geliştiricilerden oluşan bir ekibe liderlik ediyorum ve bunu basit tutmalıyım!

DÜZENLE

AFAIK ayarı SGID biti sağlam değildir, sadece yeni oluşturulan dosyaları etkiler --- ve bu kullanım durumları için temel iş akışı kopyalamayı ve diğer işlemleri (dosyanın değiştirilmesini engeller) çözer

Yanıtlar:


9

Erişim kontrol listeleri

Düz cevap erişim kontrol listeleri (ACL) . Evet, bir karşı örnek bulabilirsiniz, ancak pratikte yeterince iyidirler (kullanıcıların her zaman düşünmelerini gerektiren grup yazılabilirliğinden farklı olarak). Gereksinim duydukları şey, dosyaların yalnızca adlandırılmış bir grup tarafından paylaşılmasını istiyorsanız, sistem yöneticisinin (kök) grupları tanımlamasıdır (kök, örneğin LDAP'den grupları kabul ederek temsilci seçebilir, ancak bu başka bir hikaye).

022 umask'ına sahip olmak için katılımcı kullanıcılara ihtiyacınız var. Eğer dünya tarafından okunamayan dosyalar rutin olarak oluşturuyorlarsa, bu şema çalışmaz. Ancak kısıtlayıcı bir umask'ları varsa, muhtemelen dosya paylaşmak istemedikleri için.

EKL'leri etkinleştirme

Ubuntu varsayılan olarak ACL'leri etkinleştirmez, bu nedenle bir defalık yönetici gereksinimi vardır. Düzenleme /etc/fstabfavori editörü kullanarak ve paylaşım dosyalarına istediğiniz dosya sistemine karşılık gelen her satırı değiştirin: eklenti aclseçeneklerine. (Başka bir satırı değiştirmediğinizden ve uzun satırları saran bir düzenleyici kullanmadığınızdan emin olun.) aclEklenen seçenekle ilgili örnek bir satır aşağıdadır:

UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5  /  ext4  errors=remount-ro,acl  0 1

İlk kez etkinleştirme seçeneği için, aşağıdakine benzer bir komut kullanın (her dosya sistemi için):

sudo mount -o remount,acl /

ACL araçlarını aclpaketten yükleyin .

Paylaşılan dizini ayarlama

Grup tarafından paylaşılan dosyalara sahip olmak için mygroup:

setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root

Kişiler dosya oluşturup paylaşılan dizine kopyalarsa, dosyalar dünya tarafından okunabilir (umask nedeniyle) ve gruptaki herkes dosya ekleyebilir ve kaldırabilir (grup grup yazılabilir olduğu için). İnsanlar birbirlerinin dosyalarını düzenleyemezler, ancak bu iyi bir şeydir ya da hemen anlaşmazlıkları düzenlemeye başlarsınız.

Bir unix grubunuz yoksa, kullanıcıları tek tek ekleyebilirsiniz:

setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root

Sürüm kontrolü

İnsanların dosyaları yerinde düzenlemesini istiyorsanız, çakışmaları düzenlemeyi önlemek için bir şeye ihtiyacınız vardır. Bu sürüm kontrolü.

Git deposunu paylaşmak için bunlara ihtiyacınız yoktur. Gitosis gibi çözümler olduğunu biliyorsunuz, bu yüzden kullanın.


Otomatik devralma, hedef dizin düzeyinde ayarlanan varsayılan ACL'yi atayan (yoksayan) cp (ve mv?) Tarafından kesilmezse ACL mükemmel çalışır.
yararlı

2

Sadece bunu yapın:

mkdir /src/teamA
addgroup teamA
chgrp teamA /src/teamA
chmod g+rws /src/teamA

Şimdi teamAgruptaki herkes içeride her şeyi yapabilir/src/teamA

Sihir dizindeki sgid (set group id) bitidir.


AFAIK çalışmaz, güncellenmiş post
jb'ye bakın.

1

Kullanıcıların paylaşılan bir klasördeki dosyalara erişmesini istiyorsanız (örneğin, farklı kişiler aynı makinede farklı zamanlarda oturum açar ve aynı dosyalara erişmeleri gerekir), bindfspaylaşılan bir dizin oluşturmak için kullanabilirsiniz .

Birden çok yerel kullanıcının paylaşılan bir dizindeki ve alt dizinlerindeki tüm dosyaları (yeni oluşturulanlar dahil) okumasına ve yazmasına (oluştur, sil, yeniden adlandır, değiştir ...) izin verir. Her kullanıcı, dosyaları ve klasörleri (yeni oluşturulanlar dahil) kendilerine ait olarak görür.

Kısaca, sen koş

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

/ home / paylaşılanı user1, user2 ve user3 için kullanılabilir hale getirmek.

Talimatlar

Bkz Bindfs-SharedDirectoryLocalUsers (Ubuntu belgeler) (her zaman Bilgisayarınızı geçiş) kalıcı olarak kurulması da dahil olmak üzere, tam talimatlar için. Bunu kendi makinemde, her biri farklı paylaşım gruplarına sahip bir dizi dizin için kullanıyorum (bir klasör tüm hesaplar için kullanılabilir, diğeri yalnızca iş hesapları için, diğeri yalnızca kişisel hesaplar için).

Gönderiden:

bindfs, bir dizini izin ayarlarıyla başka bir konuma (bağlama noktası) monte etmek için bir FUSE dosya sistemidir. Bağlama noktasının içinden dosyaların sahipliğini ve izinlerini belirlemenizi sağlar.

...

En büyük yararı, paylaşılan dizinde oluşturulan yeni dosyaların sahiplik ve izinleri devralmasıdır.

Erişim kontrol listeleri (ACL'ler)

Dokümantasyon notları:

Farklı kullanıcılar ve / veya grup için daha gelişmiş izinler ayarlamak istiyorsanız Erişim Kontrol Listelerini deneyin .

Daha fazla ayrıntı için Gilles yanıtına bakın.


oneiric'e bindfs eklemekte sorun yaşıyorsanız, burada kullanıcı tarafından oluşturulan paketler alabilirsiniz. bugs.launchpad.net/ubuntu/+source/bindfs/+bug/851600
david.libremone

-3

Shellholic'in çözümünü, o klasördeki tüm dosyalar için gid'i 15 saniyede bir güncelleyen bir cron işi veya benzer bir şeyle birleştirebilirsiniz.

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.