Mam pewien katalog, w którym jest projekt współdzielony przez wielu użytkowników. Ci użytkownicy używają SSH, aby uzyskać dostęp do tego katalogu i modyfikować / tworzyć pliki.
Ten projekt powinien być możliwy do zapisu tylko dla określonej grupy użytkowników: nazwijmy go „moja grupa”. Podczas sesji SSH wszystkie pliki / katalogi utworzone przez bieżącego użytkownika powinny domyślnie należeć do grupy „moja grupa” i mieć uprawnienia do zapisu w grupie.
Mogę rozwiązać problem uprawnień za pomocą umask
:
$ cd project
$ umask 002
$ touch test.txt
Plik „test.txt” można teraz zapisywać w grupach, ale nadal należy do mojej domyślnej grupy („mislav”, tak jak moja nazwa użytkownika), a nie do „mygroup”. Mogę chgrp
rekurencyjnie ustawić żądaną grupę, ale chciałem wiedzieć, czy istnieje sposób, aby ustawić grupę domyślnie, np. Umask zmienia domyślne uprawnienia podczas sesji.
Ten konkretny katalog jest udostępnionym repozytorium git z kopią roboczą, a ja chcę git checkout
i git reset
operacje, aby ustawić poprawną maskę i grupę dla nowych plików utworzonych w kopii roboczej. System operacyjny to Ubuntu Linux.
Aktualizacja: kolega sugeruje, że powinienem przejrzeć getfacl / setfacl POSIX ACL, ale poniższe rozwiązanie w połączeniu z umask 002
bieżącą sesją jest dla mnie wystarczające i jest o wiele prostsze.
Jeśli chcesz to zrobić z istniejącym folderem, musisz upewnić się, że bit setgid jest również włączony dla wszystkich podfolderów. Jednak nie potrzebujesz go w plikach i prawdopodobnie nie chcesz go też w plikach. Oto, jak ustawić rekurencyjnie dla wszystkich podfolderów.
źródło
Nie mogę znaleźć źródła z powrotem, ale użycie
setgid
tego rozwiązania w przypadku repozytoriów git git, które, jak zakładam, jest twoim przypadkiem, jest przestarzałe i może powodować problemy w niektórych przypadkach.Git może zająć się tym wszystkim za pośrednictwem
core.sharedRepository
flagi. Miałem ten sam problem i rozwiązałem go w następujący sposób:Zakładając, że
repogroup
twoja grupa, i ty maszcd
do katalogu repo:Najpierw zmień flagę współdzieloną na
group
:Uwaga: tutaj musisz użyć słowa kluczowego
group
, a nie nazwy grupy. Jest to równoważne z utworzeniem pustego repozytorium z opcją--shared=group
.Następnie zmień grupę dla całego repozytorium:
Aby upewnić się, że istniejące katalogi można zapisywać w grupach (
g+w
), a istniejące pliki wykonywalne również stają się plikami wykonywalnymi grup (g+X
), należy również:Gdy to zrobisz, git honoruje
shared=group
flagę i zajmuje się uprawnieniami grupy w następujących przypadkach, zarówno dla istniejących, jak i nowych plików, więc nigdy więcej nie będziesz potrzebować doumask
lubchgrp
.Umieszczę źródło w komentarzu, jeśli go znajdę.
źródło
Nie jestem wielkim ekspertem, jeśli chodzi o stronę * nix, ale myślę, że to, czego szukasz, nazywa się setgid.
Zobacz tutaj .
źródło
Trudno jest dziedziczyć uprawnienia do katalogu nadrzędnego w systemie Linux / UNIX bez korzystania z list ACL. ale istnieje sposób na przypisanie domyślnych uprawnień do plików, sprawdź poniższy link
Czy możesz dziedziczyć uprawnienia do katalogu nadrzędnego.
źródło