Wie lege ich Umask für einen Systembenutzer fest?

Wie lege ich Umask für einen Systembenutzer fest?

umaskIst es möglich , für einen Systembenutzer (erstellt mit ) festzulegen useradd --system username?

Antwort1

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

  1. Eingesetzt UMASKin/etc/login.defs
  2. Fügen Sie pam_umask.soIhrer PAM-Konfiguration hinzu in/etc/pam.d
  3. Setzen Sie es in den Shell-Startup-Dateien, zB/etc/profile

Dabei 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 werden ausgeführt, wenn sich ein Benutzer anmeldet. Wenn Sie einen Daemon ausführen, meldet er sich nie an. Er wird per Init gestartet und dann entweder als Root ausgeführt oder ruft auf, um setuidals der von Ihnen angegebene Systembenutzer ausgeführt zu werden.

Ihre Hauptoptionen sind:

  1. Fügen Sie umaskIhr Init-Skript ein (führen Sie grep umask /etc/init.d/*beispielsweise Folgendes aus)
  2. Konfigurieren Sie init so, dass das Programm mit einer benutzerdefinierten Umask gestartet wird (systemd.exec Emporkömmling umask)
  3. wenn Sie verwenden start-stop-daemon, übergeben Sie dieumask-Option
  4. Ändern Sie das Programm selbst, um denumaskFunktion oder Systemaufruf

Antwort2

Systembenutzer unterscheiden sich in dreierlei Hinsicht von „normalen“ Benutzern: Ablauf des Passworts, Home-Verzeichnis (Systembenutzer haben keins) und UID (Systembenutzer liegen normalerweise unter einem willkürlichen Schwellenwert).

Im Allgemeinen haben Sie fast überhaupt kein Glück. Sie können PAM verwenden, um die Umask festzulegen, aber PAM wählt Verhaltensweisen auf der Grundlage anderer Dinge als dieser drei Unterschiede aus.

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

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

  • Oder Sie schreiben hierfür Ihr eigenes PAM-Modul. Ich denke, viele Leute würden das begrüßen, da das Festlegen der Umask eine häufige Anfrage ist.

Bitte nehmen Sie diese Antwort mit einer gehörigen Portion Skepsis. Diese Art von Anfrage ist ziemlich verbreitet und es würde mich nicht überraschen, wenn es inzwischen eine bessere/richtigere Methode gäbe.

Antwort3

Wie @Mikel vorschlägt, versuchen Sie, den Daemon selbst zu konfigurieren, wenn Sie versuchen, ein Systemkonto zu konfigurieren, das ein Daemon ist.

Ich bin auf diese Frage gestoßen, als ich nach einer Möglichkeit suchte, die Umask für das _www-Konto unter MacOS festzulegen. Obwohl dies, wie die obigen Antworten vermuten lassen, schwierig ist, habe ich festgestellt, dass ich es lösen kann, indem ich den Apache-Dienst so konfiguriere, dass (in diesem Fall) der Benutzer == ein Daemon ist.

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/entdeckt, dass Apache sein eigenes spezifisches Umgebungsskript hat.

$ sudo vim /usr/sbin/envvars
    umask 002

Möglicherweise verfügen andere Daemons über ähnliche Methoden, die in bestimmten Fällen hilfreich sein könnten.

verwandte Informationen