Ustawić domyślną grupę dla użytkowników podczas tworzenia nowych plików?

37

Często zdarza mi się przeglądać pliki, gdy tworzyłem je za pośrednictwem SSH i są one jm:jmna przykład własnością.

Następnie, aby zezwolić Apache'owi na dostęp, muszę to zrobić na przykład chown jm:www-data.

Jestem pewien, że mogę określić, że kiedy tworzę pliki, zamiast używać grupy pod moim imieniem, określ inną?

Czy jest lepszy sposób zarządzania użytkownikami / grupami?

JM w pracy
źródło

Odpowiedzi:

73

Jeśli chcesz, aby wszystkie nowe pliki w określonym katalogu były własnością określonej grupy, po prostu zastosuj setgidbit:

chgrp www-data /some/dir
chmod g+s /some/dir

Jeśli masz istniejące drzewo katalogów, do którego chcesz zastosować to zachowanie, możesz to zrobić za pomocą find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(jeśli katalogi są już własnością odpowiedniej grupy, możesz pominąć pierwsze polecenie w obu tych przykładach).

James Henstridge
źródło
1
Niezła odpowiedź! Czy możesz wyjaśnić, co ... {} +oznaczają symbole ?
Alexander Lomia
3
Są argumentami findpolecenia, opisanymi na stronie man. Przy pierwszym wywołaniu uruchomi polecenie chgrp www-data, dołączając szereg argumentów jako argumenty (zamiast wywoływać polecenie raz dla każdego wyniku, tak jak byś to zrobił {} \;).
James Henstridge
6
Dlaczego nie użyć chmod g+s /some/dir -R? Właśnie przetestowałem i wydaje się, że działa.
Cragmonkey
13
@Cragmonkey: ustawi również bit setgid na zwykłych plikach. Jeśli którykolwiek z nich będzie wykonywalny, pozwoli to innemu użytkownikowi w systemie na uzyskanie uprawnień grupy, która jest właścicielem pliku.
James Henstridge