Korzystanie z Gnome 3.18. Udostępniam pliki innym członkom rodziny, ale domyślnym umask na mojej dystrybucji (archlinux) jest 0022
. Dlatego każdego utworzonego pliku / katalogu nie można zapisać dla naszej wspólnej grupy.
Starałem się umieścić umask 0002
w /etc/profile
ale sesja gnome nadal korzysta 0022
. Działa jednak dla powłoki bash logowania.
Próbowałem także dodać tę linię /etc/pam.d/system-auth
:
session required pam_umask.so umask=0002
Ma taki sam efekt jak ten w /etc/profile
. próbowałem
Jeśli ręcznie zmienię umask w powłoce terminalu gnome, uruchamiam z niego aplikację, powiedzmy gedit, a następnie tworzone przez nią pliki mają wymagane uprawnienia. Jeśli uruchomię gedit z menu gnome, tak się nie stanie. Więc tak naprawdę mam na myśli ustawienie umask na sesję gnome i nie mogę znaleźć gdzie to zrobić.
EDYCJA (aby odpowiedzieć na komentarz Gillesa): Używam gdm 3.18 jako DM. Próbowałem także dodać wiersz pam_umask /etc/pam.d/gdm-launch-environment
. Wszystkie pozostałe gdm-*
pliki zawierają session
z system-auth
pliku, więc nie powinny potrzebować więcej. Nic to nie zmienia.
/etc/login.defs
zawiera UMASK 077
jednak również USERGROUPS_ENAB yes
, które powinny ustawić umask
albo 0077
lub 0007
dla użytkowników, których główną grupą jest nazwą użytkownika.
Jedyny plik zawierający 022
dla umask w /etc
to, /etc/profile
ale to była moja pierwsza próba.
Co do /etc/Xsession.d
tego nie mam tego katalogu. Poza tym, ponieważ wayland jest teraz domyślnym serwerem wyświetlania, nie jestem pewien, czy umask powinien być ustawiony jako część inicjalizacji X, nawet jeśli nadal go używam.
/etc/Xsession.d
lub inny plik w/etc/pam.d
(zakładam, że chcesz ustawić to dla całego systemu). Albo może/etc/login.defs
.tty
lubssh
logowania, a są to w zasadzie ten sam, naprawdę (za pomocąpam_umask
). Nie działają z moją sesją gnome. Więc nie mogę dać nagrody nikomu. Nie wiem, czy jest to specyficzne dla gnome na Xorg na archlinuxie. Będę testować z innymi dystrybucjami, kiedy będę miał trochę czasu.Odpowiedzi:
Niektóre aplikacje Gnome są uruchamiane przez
systemd --user
, w którym to przypadku umask jest ustawiany przez systemd na0022
niezależnie od skonfigurowanej wartości dla pam_umask . Nie znam żadnych obejść, ale otworzyłem problem w systemd tracker problemów github. Ten problem jest również zgłaszany w Bugzilli Gnome .Używanie zestawu Umask
pam_umask
działa zgodnie z oczekiwaniami dla aplikacji, które nie zostały uruchomione przezsystemd --user
.W Bugzilli Ubuntu zasugerowano jedno obejście polegające na umieszczeniu zastąpień usługi systemowej we wszystkich aplikacjach, których dotyczy problem.
Aby to zbadać samodzielnie
Możesz wyświetlić listę procesów uruchomionych w systemie w formacie drzewa (procesy nadrzędne / podrzędne), używając:
Znajdź PID dla: (1) wystąpienia sesji systemd --user w sesji ; (2) uruchomiona przez nią aplikacja , taka jak gedit, która pokaże się jako proces potomny systemd --user ; oraz (3) proces w sesji, który nie został uruchomiony przez systemd --user .
Porównaj umasks zgłoszone w procfs :
systemd --user sam (1) i procesy, które nie zostały przez niego uruchomione (3) powinny mieć poprawną umask, która została ustawiona przez pam_umask . Procesy uruchomione przez systemd --user (2) będą miały rozmiar umask
0022
.źródło
Problem polega na tym, że wspomniany przez Sebastha. Próbowałem wielu rzeczy, ale potem znalazłem obejście, które polega na zastąpieniu (na użytkownika) UMask dbus:
W pliku, który zostanie otwarty, po prostu napisz:
Plik zostaje zapisany w .config / systemd / user / dbus.service.d / override.conf i przesłania domyślną umask dbus, która, jak zakładam, jest dziedziczona z systemd --user, ponieważ dbus jest przez nią uruchamiany. Po prostu wyloguj się i zaloguj ponownie, a aplikacje gnome powinny użyć określonego umask. To tylko obejście, ale działa dla mnie.
źródło
Zamiast tego
umask
możesz użyćusergroups
opcjipam_umask
, z tym użytkownikiem i grupą ma takie same uprawnienia, jak w klasycznym uniksowym sposobie udostępniania folderów.źródło
Aby ustawić domyślny system umask dla całego systemu, musisz go włączyć na pierwszym miejscu, co całkiem dobrze wyjaśniłem tutaj:
Powyższe łącze dotyczy Debiana i Ubuntu, ale jest takie samo dla wszystkich innych systemów Linux.
Aby włączyć to umask (które może już jest na swoim miejscu), musisz dodać linię do
/etc/pam.d/common-session
:Po włączeniu możesz skonfigurować w:
Widzę, że już znalazłeś ten plik, więc wszystko, co musisz zrobić, to ustawić:
I ustaw UMASK na 0002 lub cokolwiek chcesz.
Spowoduje to ustawienie wartości domyślnej dla całego systemu, co oznacza, że wszyscy użytkownicy wybiorą stamtąd stamtąd, chyba że nie ustalą inaczej w swoim .profile lub .bashrc
źródło
common-*
wspólnych ustawień. Arch, podobnie jak RedHat, używasystem-auth
do tego pliku. W każdym razie, wypróbowałem twoją sugestię dodaniasession optional pam_umask.so
iUMASK 002
do./etc/login.defs
Tak jak się spodziewałem, i tak jak w przypadkupam_umask.so umask=0002
, działało to dlalogin
sesji tty (lub poprzez SSH), ale Gnome ustawił0022
umask jak zawsze. Gnome musi użyć wewnętrznego ustawienia umask, albo archlinux używa jednego ... Spróbuję innej dystrybucji, aby zobaczyć, czy problem też się pojawi.W przypadku sesji logowania: dodaj
umask 0002
do swojej$HOME/.profile
(lub/etc/profile
).W przypadku sesji Gnome: dodaj
umask 0002
do swojej$HOME/.gnomerc
źródło
EDYCJA: Aby systemd ustawił umask sesji gnome, utworzyłem plik umask.conf w /etc/systemd/system/display-manager.service.d/ z następującymi wierszami:
Po ponownym uruchomieniu komputera umożliwia to teraz wszystkim procesom
user.slice
dostosowanie się do umask, który chcesz. Wylogowanie nie było wystarczające do wprowadzenia zmian, więc radzę zrestartować komputer przed wykonaniem testów na umasks procesowych. Informacje dodatkowe:
źródło
/etc/systemd/system/gdm.service.d/umask.conf
zawierający[Service]\nUMask=0002
.Chciałem tylko dodać, że strony
pam_umask
podręcznika zawierają całkiem niezłe informacje, które pomogą ci dowiedzieć się, skąd pochodzi twój umask. Konkretnie:Jak ktoś powiedział, powinieneś to ustawić w
common-session
pliku w katalogu/etc/pam.d
.Zauważ, że loginy, które nie używają pam (takie jak te, które używają
getty
lublogin
będą miały ustawione umask poprzezlogin.defs
.źródło
Podczas instalacji Fedory 29 z Gnome odkryłem, że programy uruchomione z programu uruchamiającego Gnome pozostawiły inne pliki do odczytu, 0022. Pam najwyraźniej odsyła do /etc/login.defs, jak wspomniano powyżej. Jednak edycja tamtej maski, 0077, nie zmieniła zachowania Gnome. Musiałem także edytować / etc / profile i do / etc / bashrc - oba ustawiały go z powrotem na 0022.
Byłoby miło, gdyby Fedora miał na to jedno miejsce, ale wpisy w / etc / profile i / etc / bashrc ustawiają maskę inaczej dla użytkowników z identyfikatorami powyżej lub poniżej 200, więc wydaje się, że jedna maska nie pasuje do wszystkich.
Chociaż na razie jest to poprawka, problem nie został całkowicie rozwiązany, ponieważ użytkownik gnome nadal nie ma możliwości ustawienia własnego umask, ponieważ jest on stosowany do aplikacji uruchamianych z programu uruchamiającego gnome. Wydaje się, że Gnome powinien mieć opcję konfiguracji dla tego umask. (Może tak, ale nie znalazłem.)
źródło
Mam obejście przynajmniej w Fedorze 31:
źródło