Antworten:
Es gibt drei normale Möglichkeiten, um die umask eines Benutzers festzulegen.
UMASK
ein/etc/login.defs
pam_umask.so
Ihrer PAM-Konfiguration in/etc/pam.d
/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 setuid
als der von Ihnen angegebene Systembenutzer aufgerufen .
Ihre Hauptoptionen sind:
umask
dein Init-Skript ein (mache grep umask /etc/init.d/*
ein Beispiel)start-stop-daemon
die Option umaskSystembenutzer 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.
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.
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.