tło
Jest to trwały problem sftp
i udostępnianie plików. Wynika to z faktu, że wynikające z tego uprawnienia są oparte na oryginalnym uprawnieniu pliku po stronie użytkownika i umask ( -u
) argument nie wymusza takich uprawnień, a jedynie usuwa niechciane uprawnienia. Oznacza to, że tylko jeśli użytkownik próbuje przesłać plik za zgodą 0777
, jest stosowany i rozbierany do 0775
. W przeciwnym razie zostanie po prostu tak, jak było. Na przykład jeśli użytkownik ma plik zapisany w swoim systemie plików za zgodą 0700
, pojawi się również po wgraniu jako 0700
.
Rozwiązanie
Ostatnio rozwiązaliśmy ten problem w Fedorze, stosując poprawkę, która wymusza dokładne zezwolenie na nowe przesłane pliki -m
Przełącz na sftp-server
. Opiera się na tym głównym błędzie:
https://bugzilla.mindrot.org/show_bug.cgi?id=1844
To jest dostępne w bieżącym CentOS 7.2 . Z dziennika zmian:
- Add sftp option to force mode of created files (#1197989)
Obejście problemu
Nie ma innego eleganckiego rozwiązania z wyjątkiem okresowego uruchamiania skryptu (z cron
), który naprawia nieprawidłowe uprawnienia. Byłby to jeden liner w bashu, ale myślę, że możesz wymyślić jakieś. Mogę to bardziej rozwinąć, jeśli jesteś zainteresowany.
Albo możesz użyć inotify
„złapać” zmiany wcześniej.
Grupa powinna być dziedziczona z katalogu nadrzędnego, prawda?