Verwenden von Gnome 3.18. Ich teile Dateien zwischen anderen Familienmitgliedern, aber die Standard-Umask in meiner Distribution (Archlinux) ist 0022
. Daher ist nicht jede erstellte Datei / jedes erstellte Verzeichnis für unsere gemeinsame Gruppe beschreibbar.
Ich habe versucht zu setzen umask 0002
in , /etc/profile
aber die Gnome - Sitzung wird immer noch mit 0022
. Es funktioniert jedoch für eine Login-Bash-Shell.
Ich habe auch versucht, diese Zeile hinzuzufügen /etc/pam.d/system-auth
:
session required pam_umask.so umask=0002
Sie hat den gleichen Effekt wie die in /etc/profile
. Ich habe es versucht
Wenn ich die Umask manuell in einer Gnome-Terminal-Shell ändere, starte ich eine Anwendung daraus, z. B. gedit, und die von ihr erstellten Dateien haben die gewünschten Berechtigungen. Wenn ich gedit über die Gnomenmenüs starte, ist dies nicht der Fall. Es geht mir also wirklich darum, die Umask für die Gnome-Sitzung festzulegen, und ich kann nicht finden, wo ich das tun soll.
EDIT (um Gilles 'Kommentar zu beantworten): Ich benutze GDM 3.18 als DM. Ich habe auch versucht, die Zeile pam_umask hinzuzufügen /etc/pam.d/gdm-launch-environment
. Alle anderen gdm-*
Dateien enthalten Includes von session
aus der system-auth
Datei, daher sollten sie nicht mehr benötigen. Es ändert nichts.
/etc/login.defs
enthält UMASK 077
aber auch USERGROUPS_ENAB yes
welche sollte umask
entweder 0077
oder 0007
für Benutzer gesetzt werden, deren primäre Gruppe der Benutzername ist.
Die einzige Datei, die 022
für umask in enthält, /etc
ist, /etc/profile
aber das war mein erster Versuch.
Was /etc/Xsession.d
, habe ich nicht dieses Verzeichnis. Da Wayland jetzt der Standard-Anzeigeserver ist, bin ich mir nicht sicher, ob die Umask als Teil der X-Initialisierung festgelegt werden soll, auch wenn ich sie noch selbst verwende.
/etc/Xsession.d
oder eine andere Datei hinzuzufügen/etc/pam.d
(ich gehe davon aus, dass Sie dies systemweit festlegen möchten). Oder vielleicht/etc/login.defs
.tty
oderssh
Logins, und sie sind im Grunde die gleichen, wirklich (mitpam_umask
). Sie arbeiten nicht mit meiner Gnomensitzung. Also kann ich niemandem das Kopfgeld geben. Ich weiß nicht, ob dies spezifisch für Gnome auf Xorg unter Archlinux ist. Ich werde mit anderen Distributionen testen, wenn ich etwas Zeit habe.Antworten:
Einige Gnome-Anwendungen werden von gestartet
systemd --user
. In diesem Fall wird umask von systemd0022
unabhängig vom konfigurierten Wert für pam_umask auf gesetzt . Mir sind keine Problemumgehungen bekannt, aber ich habe ein Problem mit dem Systemd Github Issue Tracker geöffnet . Dieses Problem wird auch bei Gnome Bugzilla gemeldet .Umask set using
pam_umask
funktioniert wie erwartet für Anwendungen, die nicht von gestartet werdensystemd --user
.Unter Ubuntu Bugzilla wird eine Problemumgehung empfohlen , um Systemd Service-Overrides für alle betroffenen Anwendungen zu platzieren.
Um dies selbst zu untersuchen
Sie können die auf Ihrem System ausgeführten Prozesse in einem Baumformat (übergeordnete / untergeordnete Prozesse) auflisten, indem Sie Folgendes verwenden:
Suchen Sie nach PIDs für: (1) die Instanz von systemd --user in Ihrer Sitzung ; (2) eine von ihm gestartete Anwendung wie gedit, die systemd --user als untergeordneter Prozess angezeigt wird ; und (3) einen Prozess in Ihrer Sitzung, der nicht von systemd --user gestartet wurde .
Vergleichen Sie die in procfs gemeldeten Aufgaben :
systemd --user selbst (1) und Prozesse, die nicht von ihm gestartet wurden (3), sollten die richtige umask haben, die von pam_umask festgelegt wurde . Von systemd --user (2) gestartete Prozesse haben eine Umask von
0022
.quelle
Das Problem ist das von Sebasth erwähnte. Ich habe viele Dinge ausprobiert, aber dann habe ich eine Problemumgehung gefunden, die darin besteht, die (pro Benutzer) UMask von dbus zu überschreiben:
Schreiben Sie in die Datei, die geöffnet wird, einfach:
Die Datei wird in .config / systemd / user / dbus.service.d / override.conf gespeichert und überschreibt die dbus-Standard-Umask, von der ich annehme, dass sie von systemd --user geerbt wird, da dbus von ihr gestartet wird. Melden Sie sich einfach ab und wieder an, und Gnome-Anwendungen sollten die angegebene umask verwenden. Nur eine Problemumgehung, aber es funktioniert für mich.
quelle
Stattdessen können
umask
Sie dieusergroups
Option ändern, für diepam_umask
dieser Benutzer und diese Gruppe dieselben Berechtigungen haben wie die klassische Unix-Methode zum Freigeben von Ordnern.quelle
Um die Standard-Umask systemweit festzulegen, müssen Sie sie zuerst aktivieren, was hier ziemlich gut erklärt wird:
Der obige Link ist für Debian und Ubuntu, aber für alle anderen Linux-Systeme gleich.
Um es umask zu aktivieren (was möglicherweise bereits vorhanden ist), müssen Sie eine Zeile hinzufügen zu
/etc/pam.d/common-session
:Nach der Aktivierung können Sie es einrichten in:
Ich sehe, dass Sie diese Datei bereits gefunden haben. Alles, was Sie tun müssen, ist Folgendes festzulegen:
Und setzen Sie UMASK auf 0002 oder was auch immer Sie möchten.
Dadurch wird der Standardwert systemweit festgelegt. Dies bedeutet, dass alle Benutzer die Umask von dort abholen müssen, sofern sie in ihrem .profile oder .bashrc nichts anderes festgelegt haben
quelle
common-*
für allgemeine Einstellungen verwendet wird. Arch verwendet als RedHat einesystem-auth
Datei dafür. Wie auch immer, ich habe Ihren Vorschlag versucht,session optional pam_umask.so
und undUMASK 002
in/etc/login.defs
Wie erwartet und wie bei hinzuzufügenpam_umask.so umask=0002
, funktionierte es für eine tty-login
Sitzung (oder über SSH), aber Gnome stellte0022
wie immer eine Umask ein. Gnome muss eine interne Umask-Einstellung verwenden, oder Archlinux verwendet eine ... Ich werde eine andere Distribution ausprobieren, um festzustellen, ob das Problem ebenfalls auftritt.Für die Anmeldesitzung: Fügen Sie
umask 0002
Ihrem$HOME/.profile
(oder/etc/profile
) hinzu.Für die Gnome-Sitzung: Fügen Sie
umask 0002
Ihre hinzu$HOME/.gnomerc
quelle
BEARBEITEN: Damit systemd die Umask der Gnome-Sitzung festlegt, habe ich unter /etc/systemd/system/display-manager.service.d/ eine umask.conf-Datei mit den folgenden Zeilen erstellt:
Nach dem Neustart des Computers können nun alle Prozesse unter
user.slice
der gewünschten Umask übereinstimmen. Das Abmelden war nicht ausreichend, damit die Änderungen vorgenommen werden konnten. Ich empfehle daher, den Computer neu zu starten, bevor Sie die Tests für Prozessaufgaben ausführen. Zusätzliche Informationen :
quelle
/etc/systemd/system/gdm.service.d/umask.conf
nur enthalten[Service]\nUMask=0002
ausreichen.Ich wollte nur hinzufügen, dass die
pam_umask
Manpages einige ziemlich gute Informationen enthalten, damit Sie herausfinden können, woher Ihre Umask kommt. Speziell:Wie jemand gesagt hat, sollten Sie dies in der
common-session
Datei im Verzeichnis einrichten/etc/pam.d
.Beachten Sie, dass Anmeldungen, die pam nicht verwenden (z. B. solche, die umask verwenden
getty
oderlogin
deren Umask über gesetzt wird)login.defs
.quelle
Bei einer Installation von Fedora 29 mit Gnome stellte ich fest, dass Programme, die über den Gnome-Launcher gestartet wurden, andere lesbare Dateien 0022 hinterließen. Pam verzichtet offenbar auf /etc/login.defs, wie oben angegeben. Das Bearbeiten der Maske dort, 0077, änderte jedoch nichts an Gnomes Verhalten. Ich musste auch / etc / profile und / etc / bashrc bearbeiten - beide setzten es auf 0022 zurück.
Es wäre schön, wenn Fedora einen Platz dafür hätte, aber die Einträge in / etc / profile und / etc / bashrc setzen die Maske für Benutzer mit IDs über oder unter 200 unterschiedlich, so dass es scheint, dass eine Maske nicht für alle passt.
Obwohl dies vorerst eine Lösung ist, ist das Problem noch nicht vollständig gelöst, da der Gnome-Benutzer immer noch keine Möglichkeit hat, seine eigene Umask festzulegen, da diese auf Anwendungen angewendet wird, die vom Gnome-Launcher ausgeführt werden. Gnome sollte anscheinend eine Konfigurationsoption für diese Umask haben. (Vielleicht tut es das, aber ich habe es nicht gefunden.)
quelle
Ich habe die Problemumgehung zumindest für Fedora 31:
quelle