Wie können Sie umask-Einstellungen auf ein Konto anwenden, das sich nicht anmeldet?

4559
nfarrar

Auf meinem Ubuntu 11.04x64-Server sind Dienstkonten aktiv, die sich nicht anmelden und keine Home-Verzeichnisse haben. Diese Dienstkonten sind für die Ausführung von Prozessen verantwortlich, die als Dienste aufgerufen werden.

Wenn diese Dienste neue Dateien erstellt haben, muss ich sie mit den Berechtigungen 664 (UMASK 002) erstellen.

Ich habe die Einstellung / etc / profile umask bearbeitet, um dies zu berücksichtigen. Ich sehe, dass mein Benutzerkonto jetzt Dateien erstellt, die diese neue umask-Einstellung widerspiegeln, die Dienstkonten jedoch nicht, wenn ich Dateien manuell mit ihren Konten erstellt habe (sudo -u serviceaccount touch newfile).

Irgendwelche Vorschläge?

5
Ich habe auch die UMASK-Einstellung in /etc/login.defs bearbeitet - aber das funktioniert auch nicht. nfarrar vor 12 Jahren 1

1 Antwort auf die Frage

3
grawity

Wenn die Dienste über Upstart oder /etc/init.d gestartet werden, bearbeiten Sie die entsprechenden Initscripts.

  • init.d: umask 02am Anfang des Skripts (dies sind gewöhnliche shSkripts)
  • Upstart : umask 02überall

Linux hat keine strikte Definition von "login", und ein Konto ist lediglich eine UID, die einem Namen / homedir / etc zugeordnet werden kann (oder nicht) kann.

Wenn Sie sich an der Konsole / über SSH anmelden, verwendet das Anmeldeprogramm (oder der SSH-Dämon) PAM, um die Umgebung (möglicherweise pam_umask) einzurichten, und startet Ihre Shell mit dem Flag "login". Das /etc/profileSkript gehört zu den sh- und bash- Shells, die es nur für "login" -Aufrufe lesen.

Wenn Sie sudo touch ...oder verwenden sudo /etc/init.d/foo start, ruft sudo immer noch PAM für die Einrichtung von auth / account / session auf, startet jedoch die Shell überhaupt nicht, dh alle "profile" - oder "bashrc" -Dateien werden ignoriert. (Das heißt, es sei denn, Sie verwenden sudo -i ....)

Wenn Upstart einen Dienst ausführt, wird die UID einfach auf die Ihres Dienstes umgestellt, wobei "Profil" -Skripts oder die PAM-Konfiguration übersprungen werden. Die einzige gelesene Konfiguration ist die Datei des Dienstes, in /etc/initder Sie die umask-Einstellung vornehmen sollten.

Eigentlich ist es auch umask 002 für Emporkömmlinge, zeigen unsere Experimente. Die [Upstart-Dokumentation] (http://upstart.ubuntu.com/wiki/Stanzas#umask) hat ein irreführendes Beispiel. Bart Schuller vor 10 Jahren 3