GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie setze ich umask für einen Systembenutzer?

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

  1. Setze UMASK in /etc/login.defs
  2. Fügen Sie pam_umask.so hinzu zu Ihrer PAM-Konfiguration in /etc/pam.d
  3. Stellen Sie es in den Startdateien der Shell ein, z. /etc/profile

Diesbezüglich gibt es keinen Unterschied zwischen Systembenutzern und normalen Benutzern.

Aber ich nehme an, 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 von init gestartet, läuft dann entweder als root oder ruft setuid auf als der von Ihnen angegebene Systembenutzer auszuführen.

Ihre Hauptoptionen sind:

  1. geben Sie umask ein in Ihrem Init-Skript (machen Sie eine grep umask /etc/init.d/* als Beispiel)
  2. init so konfigurieren, dass das Programm mit einer benutzerdefinierten umask gestartet wird (systemd.exec upstart umask)
  3. bei Verwendung von start-stop-daemon , übergeben Sie die umask-Option
  4. Ändern Sie das Programm selbst, um die umask-Funktion oder den Systemaufruf aufzurufen

Systembenutzer unterscheiden sich von „normalen“ Benutzern in dreierlei Hinsicht:Ablauf des Passworts, Home-Verzeichnis (Systembenutzer haben keins) und UID (Systembenutzer sind normalerweise unterhalb einer willkürlichen Schwelle).

Im allgemeinen Fall haben Sie fast kein Glück. Sie können PAM verwenden, um die umask festzulegen, aber PAM wählt Verhaltensweisen 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. Damit haben Sie zwei Möglichkeiten:

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

  • Oder Sie schreiben dafür Ihr eigenes PAM-Modul. Ich denke, dies würde von vielen Leuten begrüßt werden, da das Setzen der umask eine häufige Anfrage ist.

Bitte nehmen Sie diese Antwort mit einer großzügigen Prise Salz. Diese Art von Anfrage ist ziemlich häufig und ich wäre nicht überrascht, wenn es jetzt einen besseren/richtigeren Weg gibt.


Linux
  1. So richten Sie SPF für zusätzliche E-Mail-Authentifizierung ein

  2. Umask für Sshfs-gemountetes Dateisystem festlegen?

  3. Wie werden Pfadvariablen für alle Benutzer auf einem Server festgelegt?

  4. So richten Sie Desktop-Verknüpfungen für cPanel ein

  5. CentOS / RHEL :So legen Sie das Chroot-Gefängnis für vsftp nur für bestimmte Benutzer fest

So richten Sie die Zwei-Faktor-Authentifizierung für cPanel ein

So richten Sie den PXE-Start für UEFI-Hardware ein

Wie richte ich Tls für Postfix unter Ubuntu ein?

So richten Sie einen Linux-Killswitch für VPNs ein

Wie setze ich die Standard-Umask für das Tomcat-Webdav-Servlet?

Wie setze ich PATH für alle Benutzer in Debian?