Wie setze ich umask für einen Systembenutzer?

14

Ist es möglich das umaskfür einen Systembenutzer einzustellen (erstellt mit useradd --system username)?

sid_com
quelle

Antworten:

14

Es gibt drei normale Möglichkeiten, um die umask eines Benutzers festzulegen.

  1. Setzen Sie UMASKein/etc/login.defs
  2. Fügen Sie pam_umask.soIhrer PAM-Konfiguration in/etc/pam.d
  3. Stellen Sie es in den Shell-Startdateien ein, z /etc/profile

In dieser Hinsicht gibt es keinen Unterschied zwischen Systembenutzern und normalen Benutzern.

Aber ich gehe davon aus, dass Sie versuchen, einen Daemon mit einer benutzerdefinierten Umask zu starten?

Das Problem ist: Alle oben genannten Optionen treten auf, wenn sich ein Benutzer anmeldet. Wenn Sie einen Daemon ausführen, wird dieser niemals angemeldet. Er wird von init gestartet und dann entweder als root ausgeführt oder setuidals der von Ihnen angegebene Systembenutzer aufgerufen .

Ihre Hauptoptionen sind:

  1. Gib umaskdein Init-Skript ein (mache grep umask /etc/init.d/*ein Beispiel)
  2. Konfigurieren Sie init so, dass das Programm mit einer benutzerdefinierten Umask gestartet wird ( systemd.exec upstart umask ).
  3. Übergeben Sie bei Verwendung start-stop-daemondie Option umask
  4. Ändern Sie das Programm selbst, um die umask- Funktion oder den Systemaufruf aufzurufen
Mikel
quelle
Wissen Sie, wie Sie eine umask für SSHFS (sftp-server) unter Arch Linux (das systemd verwendet) einrichten? Wie Sie bereits betont haben, haben die ersten drei aufgeführten Optionen keine Auswirkungen.
MountainX für Monica Cellio
2

Systembenutzer unterscheiden sich in drei Punkten von "normalen" Benutzern: Ablauf des Kennworts, Basisverzeichnis (Systembenutzer haben kein Kennwort) und UID (Systembenutzer liegen normalerweise unter einem willkürlichen Schwellenwert).

Im Allgemeinen haben Sie fast kein Glück. Sie können PAM verwenden, um die umask festzulegen, aber PAM wählt Verhalten basierend auf anderen Dingen als diesen drei Unterschieden aus.

Mit anderen Worten, Sie können PAM nicht dazu bringen, zwischen "System" - und "Nicht-System" -Benutzern zu unterscheiden. So haben Sie zwei Möglichkeiten:

  • Entweder legen Sie mit PAM die Umask für alle fest (z. B. Einchecken /etc/login.defs), und legen dann die Umask für Nicht-Systembenutzer in /etc/bash.bashrc(oder ähnlich) explizit fest .

  • Oder Sie schreiben ein eigenes PAM-Modul, um dies zu tun. Ich denke, dass dies von vielen Menschen begrüßt wird, da das Setzen der Umask eine häufige Anforderung ist.

Bitte nehmen Sie diese Antwort mit einer großzügigen Prise Salz. Diese Art von Anfrage ist ziemlich verbreitet und ich würde mich nicht wundern, wenn es jetzt einen besseren / richtigen Weg gibt.

Alexios
quelle
1
Es gibt bereits ein PAM-Modul namens pam_umask . Das Problem ist, dass es nur bei der Anmeldung funktioniert.
Mikel
Ah, ich glaube du wusstest davon pam_umask, aber vielleicht nicht darüber pam_succeed_if. Mit pam_succeed_if können Sie jedes andere Modul nur auf einen bestimmten Benutzer oder eine bestimmte Gruppe anwenden lassen. Aber ich denke immer noch nicht, dass PAM hier helfen wird.
Mikel
1

Wenn Sie versuchen, ein Systemkonto zu konfigurieren, bei dem es sich um einen Dämon handelt, sollten Sie, wie von @Mikel vorgeschlagen, den Dämon selbst konfigurieren.

Ich bin auf diese Frage gekommen, um herauszufinden, wie man die umask für den _www-Account unter MacOS einstellt. Obwohl dies schwierig ist, wie die obigen Antworten nahelegen, konnte ich es lösen, indem ich den Apache-Dienst als (in diesem Fall) den Benutzer == einen Daemon konfigurierte.

Ich konnte das Startskript seltsamerweise nicht finden (normalerweise in /etc/init.d/, aber auf einem Mac in Library / LaunchDaemons /), aber mit Hilfe von: http://krypted.com/mac-security/apache2-umasks / entdeckte, dass Apache sein eigenes spezifisches Umgebungsskript hat.

$ sudo vim /usr/sbin/envvars
    umask 002

Möglicherweise haben andere Dämonen ähnliche Methoden, die in bestimmten Fällen hilfreich sein können.

scipilot
quelle
Aber wie konnten Sie "umask 002" in diese Datei schreiben?!?!? Ich erhalte einen Fehler, dem die Erlaubnis verweigert wurde, auch wenn root / sudo und laut apple sogar root nichts im Verzeichnis / usr / sbin schreiben / ändern dürfen. Support.apple.com/de-de/HT204899
Schurik