Listy kontroli dostępu
Prostą odpowiedzią są listy kontroli dostępu (ACL) . Tak, możesz znaleźć kontrprzykład, ale są one wystarczająco dobre w praktyce (w przeciwieństwie do zwykłego zapisu grupowego, które wymaga, aby użytkownicy cały czas o tym myśleli). Wymagają, aby administrator systemu (root) zdefiniował grupy, jeśli chcesz, aby pliki były udostępniane tylko przez nazwaną grupę (root może zdecydować o delegowaniu, na przykład akceptując grupy z LDAP, ale to inna historia).
Potrzebujący uczestnicy muszą mieć maskę 022. Jeśli rutynowo tworzą pliki nieczytelne dla świata, ten schemat nie zadziała. Ale jeśli mają restrykcyjną umaskę, to prawdopodobnie dlatego, że i tak nie chcą udostępniać plików.
Włączanie list ACL
Ubuntu domyślnie nie włącza list ACL, więc istnieje jednorazowy wymóg administratora. Edytuj /etc/fstab
za pomocą swojego ulubionego edytora i zmieniaj każdą linię odpowiadającą systemowi plików, w którym chcesz współdzielić pliki: dodaj acl
do opcji. (Pamiętaj, aby nie zmieniać żadnej innej linii i nie używać edytora, który zawija długie linie.) Oto przykładowa linia z acl
dodaną opcją:
UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors=remount-ro,acl 0 1
Aby opcja zaczęła obowiązywać za pierwszym razem, użyj polecenia takiego jak poniżej (dla każdego systemu plików):
sudo mount -o remount,acl /
Zainstaluj narzędzia ACL z acl
pakietu.
Konfigurowanie udostępnionego katalogu
Aby udostępnić pliki grupie mygroup
:
setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root
Jeśli ludzie utworzą pliki i skopiują je do udostępnionego katalogu, pliki będą czytelne dla całego świata (z powodu umask), a każdy w grupie będzie mógł dodawać i usuwać pliki (ponieważ grupa jest zapisywalna przez grupę). Ludzie nie mogą edytować plików innych użytkowników, ale to dobrze, bo od razu natrafilibyście na konflikty edycji.
Jeśli nie masz grupy uniksowej, możesz dodawać użytkowników jeden po drugim:
setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root
Kontrola wersji
Jeśli chcesz, aby ludzie mogli edytować pliki w miejscu, potrzebujesz również czegoś, co zapobiegnie konfliktom edycji. To kontrola wersji.
Nie potrzebujesz nic z tego, aby współdzielić repozytorium git. Wiesz, że istnieją rozwiązania takie jak gitosis, więc używaj ich.