Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Cordess » 26.11.2023 20:41:35

Seit meinem Update auf Debian 12 werden vom Benutzer neu angelegte Dateien wieder mit den Dateirechten:

Code: Alles auswählen

-rw-r--r-- 1 nutzername gruppenname        5 26. Nov 20:32 dateiname
angelegt.

Das fand ich schon immer als ein Sicherheitsproblem, weswegen ich das in den vorherigen Debian Versionen immer auf folgendes geändert habe:

Code: Alles auswählen

-rw------- 1 nutzername gruppenname        5 26. Nov 20:32 dateiname
In Debian 11 musste ich dazu in die Datei /etc/pam.d/common-session folgenden Eintrag hinzufügen:

Code: Alles auswählen

session optional        pam_umask.so umask=077
dadurch erhielten alle neu angelegten Ordner und Dateien automatisch die zuvor genannten Dateirechte. Dieser Eintrag scheint aber nun in Debian 12 wirkungslos zu sein.

In früheren Debian Versionen, irgendwann vor Debian 11, erfolgte diese systemweite Konfiguration in der Datei /etc/login.defs
Die ist aber seit mindestens Debian 11 obsolete.
Und in Debian 12 funktioniert nun auch das in /etc/pam.d/common-session nicht mehr.

Ansonsten gäbe es noch die Möglichkeit pro Nutzer lokal das in der Datei ~/.bashrc mit dem Befehl

Code: Alles auswählen

umask 077
festzulegen.
Aber das ist nicht systemweit und muss dann für jeden Nutzer einzelnen angelegt werden, oder man ändert irgendwo in den tiefen des Systems die Einstellung mit welchem Inhalt die .bashrc Dateien bei neuen Nutzern angelegt werden.

Wo wird daher in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien und Ordner neuerdings konfiguriert? Kann mir das jemand sagen?

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von smutbert » 27.11.2023 09:44:23

In der „/etc/login.defs“. Die Zeile

Code: Alles auswählen

UMASK		022
mit dem Defaultwert sollte bereits drin stehen.
Cordess hat geschrieben: ↑ zum Beitrag ↑
26.11.2023 20:41:35
[...] oder man ändert irgendwo in den tiefen des Systems die Einstellung mit welchem Inhalt die .bashrc Dateien bei neuen Nutzern angelegt werden.
das wäre dann die »/etc/skel/.bashrc«

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Cordess » 27.11.2023 10:10:23

smutbert hat geschrieben: ↑ zum Beitrag ↑
27.11.2023 09:44:23
In der „/etc/login.defs“. Die Zeile

Code: Alles auswählen

UMASK		022
mit dem Defaultwert sollte bereits drin stehen.
Ich habe da schon lange

Code: Alles auswählen

UMASK		077
stehen, aber eine Wirkung scheint es nicht zu haben. Daher auch meine obige Aussage, dass das bereits in Debian 11 als veraltet galt und man die pam Datei nutzen mußte.
Cordess hat geschrieben: ↑ zum Beitrag ↑
26.11.2023 20:41:35
[...] oder man ändert irgendwo in den tiefen des Systems die Einstellung mit welchem Inhalt die .bashrc Dateien bei neuen Nutzern angelegt werden.
das wäre dann die »/etc/skel/.bashrc«
Das werde ich mir mal heute Abend ansehen. Danke.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von MSfree » 27.11.2023 10:10:44

smutbert hat geschrieben: ↑ zum Beitrag ↑
27.11.2023 09:44:23
das wäre dann die »/etc/skel/.bashrc«
Bei mir gibt es umask in der /etc/skel/.profile.

Wobei die Dateien, die unter /etc/skel stehen, nur beim Anlegen neuer Benutzer zum Tragen kommen. Auf bestehende Benutzer haben Änderungen in den skel-Dateien keine Auswirkung.

Neben /etc/login.defs könnte man umask auch in /etc/profile definieren. Ich weiß aber nicht, welche Einstellung (login.defs oder profile) Vorrang hat.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von smutbert » 27.11.2023 11:22:20

Cordess hat geschrieben: ↑ zum Beitrag ↑
27.11.2023 10:10:23
[...] Daher auch meine obige Aussage, dass das bereits in Debian 11 als veraltet galt und man die pam Datei nutzen mußte.
Dass das als veraltet galt, ist mir auch aufgefallen, aber ich meine mich zu erinnern, dass ich irgendwo später wieder das Gegenteil gelesen habe und es als das Mittel Wahl gilt, seitdem das mit der pam-Konfiguration nicht mehr wie erwartet funktioniert.


»/etc/profile« (oder einer Datei in »/etc/profile.d«) wäre auch mein nächster Tipp. Das sollte Vorrang vor der login.defs haben.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Livingston » 27.11.2023 12:09:13

/etc/profile und ~/.profile haben aber den Nachteil, dass sie nicht in X-Sessions aufgerufen werden. Dann müsste also zusätzlich noch was in ~/.Xsession, Startskripten von Windowmanagern oder Autostart-Definitionen verstaut werden.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von MSfree » 27.11.2023 12:18:43

Livingston hat geschrieben: ↑ zum Beitrag ↑
27.11.2023 12:09:13
/etc/profile und ~/.profile haben aber den Nachteil, dass sie nicht in X-Sessions aufgerufen werden.
Doch.

Wenn du dich mit einem Displaymanager (lightdm, sddm, gdm...) einlogst, wird auch die Benutzerumgebung via /etc/profile und ~/.profile geladen.

Wenn du die Xsession aus dem Textlogin aufrufst (start, xinit...) , wurde deine Benutzerumgebung beim Login geladen und dann in die Xsesion vererbt.
Zuletzt geändert von MSfree am 27.11.2023 12:27:22, insgesamt 1-mal geändert.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Livingston » 27.11.2023 12:23:09

Jau, wieder was gelernt... nachdem ich mir jahrelang für startx/openbox was zusammengeschustert habe. :hail:
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Cordess » 27.11.2023 22:12:03

In der ~/.profile Datei steht bezüglich umask folgender Hinweis:

Code: Alles auswählen

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
umask 077
Diese Datei wird ausschließlich nur von einer richtigen Textkonsole (bspw. über CTRL+ALT+F2) ausgewertet.
Der Loginmanager sddm wertet sie bei mir nicht aus, im Terminal (Konsole) unter KDE erhalte ich nach Eingabe von umask immer noch folgende Ausgabe:

Code: Alles auswählen

$ umask
0022
Ich habe daher mal geschaut, ob das Debianlibpam-umask package installiert ist, ein derartiges Paket gibt es allerdings nicht:
https://packages.debian.org/search?keyw ... ection=all

Die Angabe in der ~/.profile Datei ist somit schon einmal irreführend und falsch, man sollte es zumindest nicht package nennen, wenn das Modul Teil eines anderen Pakets ist:
Die Suche, ob es ein Teil eines anderen Pakets ist, ergab allerdings auch keinen Erfolg. Zumindest nicht in Debian 12.

Code: Alles auswählen

$ apt-file search libpam-umask
$
In den Release Notes von Debian 12 steht bezüglich pam in Kapitel 5.3.2 folgendes:

Code: Alles auswählen

 The libpam-ldap package has been removed from bookworm. Its replacement is libpam-ldapd. 
https://www.debian.org/releases/stable/ ... e-packages

Das bezieht sich allerdings auf ein pam Modul für ldap, nicht umask.

Im Paket Debianlibpam-modules wurde ich dann aber fündig:

Code: Alles auswählen

dpkg -L libpam-modules | grep umask
/lib/x86_64-linux-gnu/security/pam_umask.so
In der Manpage zu pam_umask steht einiges drin, das werde ich mir jetzt mal durchlesen. Vorher muss ich aber kurz rebooten, weil ich etwas testen will.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Cordess » 27.11.2023 22:50:26

Wenn in der ~/.profile bezüglich umask nichts konfiguriert ist, also alle umask Angaben kommentiert sind, dann wird ein Skript in
/etc/profile.d/ bezüglich umask ausgewertet, sofern man eines erstellt hat.

Das habe ich mal mit folgendem Inhalt gemacht:
/etc/profile.d/set_umask.sh

Code: Alles auswählen

# Setze umask
umask 077
Das Skript muss nur lesbar sein, es muss nicht ausführbar sein um ausgewertet zu werden.

Code: Alles auswählen

$ ls -l set_umask.sh 
-rw-r--r-- 1 root root 101 27. Nov 22:17 set_umask.sh
sddm wertet dies aber nicht aus, unter X bleibt umask also bei dem defaultwert 0022.
Allerdings wird es im Terminal unter X nach Eingabe von su - ausgewertet

Code: Alles auswählen

$ su -
Passwort:
# umask
0077
Wenn so ein Skript nicht vorhanden oder nicht lesbar ist, dann wird die Datei
/etc/profile als nächstes ausgewertet.
Auch hier werten die Programme unter X und ssdm dies nicht aus.

Wenn dort kein umask definiert ist, dann wird
/etc/pam.d/common-session
ausgewertet.
In der Textkonsole (CTRL+ALT+F2) ist dieser Eintrag in pam also aktiv,
nur unter X nicht. sddm scheint das seit Debian 12 nicht zu interessieren.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von smutbert » 27.11.2023 22:59:29

Dass es mit der »/etc/profile« und sddm und mit KDE nicht funktioniert, hätte noch die Ursache haben können, dass sddm oder KDE den Wert eigenmächtig setzen (das war in der Vergangenheit bei gdm/gnome schon einmal der Fall), aber das ist nicht hier wohl nicht das Problem. Dafür habe ich einen Hinweis auf die Ursache und eine Lösung gefunden [1]:

KDE/plasma wird als systemd user service gestartet und da hilft die »/etc/profile« nichts. Der vielversprechendste Ansatzpunkt wäre also wie dort in der ersten Antwort beschrieben eine Anpassung der systemd unit.
Dunkel habe ich auch noch eine Variante in Erinnerung, die sich auf alle systemd user units auswirkt, vielleicht finde ich das auch wieder...

Edit, gefunden [2] und zwar im arch-Wiki. Die Kurzfassung:
»/etc/systemd/system/user@.service.d/override.conf« anlegen mit dem Inhalt

Code: Alles auswählen

[Service]
UMask=0077
damit sollten auch alle anderen Anpassungen (z. B. an »/etc/profile« für die Textkonsole) überflüssig sein.


[1] https://superuser.com/questions/1795551 ... sk-for-kde
[2] https://wiki.archlinux.org/title/umask# ... E_/_Plasma

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Wo wird in Debian 12 die systemweite Konfiguration für die Dateizugriffsrechte neu angelegter Dateien konfiguriert?

Beitrag von Cordess » 28.11.2023 00:04:01

smutbert hat geschrieben: ↑ zum Beitrag ↑
27.11.2023 22:59:29
Edit, gefunden [2] und zwar im arch-Wiki. Die Kurzfassung:
»/etc/systemd/system/user@.service.d/override.conf« anlegen mit dem Inhalt

Code: Alles auswählen

[Service]
UMask=0077
Danke, das hat geklappt.
Dennoch musste ich noch einen umask Eintrag in /etc/pam.d/common-session lassen, denn:
damit sollten auch alle anderen Anpassungen (z. B. an »/etc/profile« für die Textkonsole) überflüssig sein.
Nicht ganz. Die reine Textkonsole braucht noch einen Eintrag in
~/profile
oder
/etc/profile.d/
oder
/etc/pam.d/common-session

So steht es auch in dem von dir verlinkten Arch Wiki Artikel und damit gibt es mit systemd jetzt noch einen weiteren Ort um umask zu setzen.

Es wundert mich auch, dass es in Debian 12 keine

Code: Alles auswählen

/etc/pam.d/login 
/etc/pam.d/systemd-user. 
Dateien wie im Arch Wiki Artikel beschrieben gibt. Ich schätze mal, dass das entweder erst in einer neueren Version standardisiert ist oder Arch spezifisch ist.

Was ich noch gerne wissen würde ist, warum die Datei in einem zu erstellenden Verzeichnis namens

Code: Alles auswählen

 /etc/systemd/system/user@.service.d/override.conf
in /etc/systemd/system/ und nicht in /etc/systemd/user/ erstellt werden muss und welche Rechte man dieser Datei und dem Verzeichnis geben soll. Bisher habe ich mir systemd nur oberflächlich angesehen, so dass es gerade reicht, die Tiefen von systemd kenne ich noch nicht, da sich in den letzten Jahren da noch viel geändert hat und ich das erst einmal reifen lassen wollte.

Momentan haben das Verzeichnis und die Datei folgende Rechte:

Code: Alles auswählen

drwx------ user@.service.d
-rw-------  override.conf
und damit funktioniert es.
Bei den anderen systemd Dateien im Ordner /etc/systemd/system haben die Verzeichnisse und Dateien allerdings die Rechte:

Code: Alles auswählen

drwxr-xr-x   # Ordner
-rw-r--r--    # Dateien

Antworten