Z oczywistych powodów muszę ustawić umask
wartość dla jednego określonego folderu. Jak to zrobić?
Dzięki z góry!
AKTUALIZACJA 1
Powód, dla którego muszę używać umask dla określonego folderu, jest następujący. Mam aplikację internetową, a kiedy tworzy jakiś plik, domyślnym uprawnieniem jest 700. Potrzebuję jednak co najmniej 755 uprawnień do tego pliku. Myślę, że mógłbym teraz lepiej wyjaśnić problem.
permissions
umask
Bakhtiyor
źródło
źródło
Odpowiedzi:
możesz użyć
setfacl
Gdzie
name
jest nazwa grupyAby dowiedzieć się, do których grup należy ty lub konkretny użytkownik, zobacz W unix / linux jak dowiedzieć się, w której grupie jest dany użytkownik za pomocą wiersza poleceń?
źródło
setfacl
się zmieniło. Pojawia się komunikat o błędzie stwierdzający, że-m
nie jest to prawidłowa opcja.setfacl
nie zmienia się. Najprawdopodobniej nie podałeś prawidłowej nazwy grupy (po-m
).setfacl
dotyczy list kontroli dostępu, a nieumask
. Lepsze rozwiązanie, ale nie to, o co pytano, nie sądzę.sudo setfacl -Rdm ...
(Pomiń R dla rekurencji) powinno działać. @ Wyatt8740 (poprawnie). Aby mieć pewność, uruchom:man setfacl
i wpisz/-modify
. Musisz użyćsudo
.Nie można ustawić umask dla katalogu, jest to wartość na poziomie procesu. Jeśli chcesz uniemożliwić innym czytanie plików w katalogu, odwołaj odpowiednie bity uprawnień.
Na przykład, jeśli masz katalog
/home/user/directory
z niektórymi plikami i katalogami, które mogą uzyskać uprawnienia z procesu, takie jak 777, ustaw bity uprawnień/home/user/directory
na około 700. Uniemożliwi to innym użytkownikom (poza rootem superużytkownika) zejście w/home/user/directory
.Jestem paranoikiem i ustawiłem uprawnienia na
/home/user
750, więc tylko ja mogę czytać, pisać i schodzić w moim katalogu domowym. W konsekwencji/home/user/Public
inni nie mogą uzyskać dostępu do takich folderów , ale mogę z tym żyć.Po aktualizacji pytania: nadal nie możesz kontrolować tego w systemie plików (innym niż używanie innego typu systemu plików, takiego jak FAT, który jest zdecydowanie odradzany), musisz to zrobić w swojej aplikacji internetowej. Jeśli twoja aplikacja jest zakodowana w PHP, możesz zmienić umask w locie za pomocą
umask
funkcji:Możesz umieścić to w pliku konfiguracyjnym, takim jak plik zawierający hasło połączenia z bazą danych (myślenie w aplikacjach takich jak Wordpress).
Pamiętaj, że jest to wartość procesowa, niektóre serwery pozwalają na ustawienie jej w swoich plikach konfiguracyjnych, w przeciwnym razie możesz zmodyfikować skrypty startowe, aby ustawić żądany umask. Pamiętaj, że uprawnienia takie jak
755
i644
są dość niebezpieczne dla aplikacji internetowych, jeśli kod jest wrażliwy, każdy może go odczytać.źródło
/home/user/Public
(mount -o bind /home/user/Public /some/other/place
), aby obejść problem z uprawnieniami do katalogu nadrzędnego.Aby zmienić uprawnienia do folderu, użyj chmod. umask jest dla plików.Ustaw umask na to, czego potrzebujesz
i wróć, kiedy skończysz
źródło
umask
). Przepraszamy za dodanie mylących informacji.Innym rozwiązaniem może być po prostu ustawienie identyfikatora grupy na plikach utworzonych w katalogu, co powoduje, że nowe pliki są własnością identyfikatora grupy katalogów, zamiast identyfikatora grupy użytkownika, który utworzył pliki. Myślę więc, że możesz po prostu zrobić:
chown www-data:www-data /my/folder
chmod 4755 /my/folder
Ustawia to uprawnienia specjalne do plików setgid, co spowodowałoby, że wszystkie utworzone pliki
/my/folder
byłyby własnościąwww-data
grupy, która następnie ma uprawnienia rx (5) z powodu katalogu nadrzędnego.źródło
Zapewnij inne rozwiązanie zaimplementowane za pomocą haczyków i
direnv
. Poniższe rozwiązanie może być bardziej kompatybilne, jeślisetfacl
nie jest dostępne w twoim systemie. (np. macOS)Służy
.envrc
doexport
niestandardowejumask
wartości dla określonego katalogu, aexport
ed env var zostanie zwolniony, gdy opuścisz ten katalog.Zdefiniuj hak, aby zmienić
umask
wartość po zmianie katalogu roboczego.Na razie inicjalizacja haka direnv dla zsh nie obsługuje
chpwd
haka. Jeśli żądanie ściągnięcia GH-514 nie zostało scalone, gdy zobaczysz tę stronę. Proszę wypowiedzieć sięeval "$(direnv hook zsh)"
i zaczepićdirenv
nachpwd
ręcznie za pomocą następującego kodu,Źródło: dynamic-umask-based-on-cwd.md
źródło
Powiązany, ale może nie mieć zastosowania w tym przypadku, następujący klip pochodzi z
.zshrc
:Tak więc do użytku interaktywnego coś takiego działałoby (ale oczywiście nie zapewniało bezpieczeństwa).
źródło