Ich habe nach einer Möglichkeit gesucht , OpenSSHs umask für 0027
alle Verbindungstypen einheitlich einzurichten .
Nach Verbindungstypen beziehe ich mich auf:
- sftp
- scp
- SSH- Hostname
- SSH- Hostname- Programm
Der Unterschied zwischen 3. und 4. besteht darin, dass ersteres eine Shell startet, die normalerweise die /etc/profile
Informationen liest, während letztere dies nicht tut.
Beim Lesen dieses Beitrags wurde ich außerdem auf die Option -u aufmerksam, die in neueren Versionen von OpenSSH verfügbar ist. Dies funktioniert jedoch nicht.
Ich muss auch hinzufügen, dass das /etc/profile
jetzt beinhaltet umask 0027
.
Punkt für Punkt gehen:
- SFTP - Einstellung
-u 0027
insshd_config
wie erwähnt hier , ist nicht genug.
Wenn ich diesen Parameter nicht einstelle, verwendet sftp standardmäßig umask 0022
. Das bedeutet, wenn ich die beiden Dateien habe:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Wenn ich sftp verwende, um sie auf dem Zielcomputer abzulegen, erhalte ich tatsächlich:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
Allerdings , wenn ich festgelegt -u 0027
auf sshd_config
der Zielmaschine ich wirklich:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
was nicht zu erwarten ist, da es eigentlich sein sollte:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
Versteht jemand, warum das passiert?
scp - Unabhängig von den Einstellungen für sftp sind die Berechtigungen immer gültig
umask 0022
. Ich habe derzeit keine Ahnung, wie ich das ändern soll.SSH- Hostname - hier kein Problem, da die Shell
/etc/profile
standardmäßig liest, wasumask 0027
im aktuellen Setup bedeutet.SSH Hostname Programm - gleiche Situation wie SCP .
Zusammenfassend lässt sich sagen, dass das Setzen von umask sftp
das Ergebnis ändert, aber nicht so, wie es sollte. Es ssh hostname
funktioniert wie erwartet /etc/profile
und beides scp
und ssh hostname program
scheint umask 0022
irgendwo fest codiert zu sein.
Jeder Einblick in einen der oben genannten Punkte ist willkommen.
BEARBEITEN: Ich möchte Patches vermeiden, die das manuelle Kompilieren von openssh erfordern. Auf dem System läuft Ubuntu Server 10.04.01 (lucid) LTS mit openssh
Paketen von maverick.
Antwort: Wie durch poige angegeben, hat die Verwendung von pam_umask den Trick getan.
Die genauen Änderungen waren:
Zeilen hinzugefügt zu /etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
Um alle Login-Shells zu beeinflussen, unabhängig davon, ob sie stammen /etc/profile
oder nicht, wurden dieselben Zeilen ebenfalls hinzugefügt /etc/pam.d/login
.
EDIT : Nach einigen Kommentaren habe ich dieses Problem erneut getestet.
Zumindest in Ubuntu (wo ich getestet habe) scheint es, dass, wenn der Benutzer eine andere Umask in den Init-Dateien seiner Shell festgelegt hat (.bashrc, .zshrc, ...), die PAM-Umask ignoriert und stattdessen die benutzerdefinierte Umask verwendet wird. Änderungen in hatten /etc/profile
keine Auswirkungen auf das Ergebnis, es sei denn, der Benutzer bezieht diese Änderungen ausdrücklich in die Init-Dateien.
Es ist derzeit unklar, ob dieses Verhalten in allen Distributionen auftritt.
UsePAM yes
in deiner sshd_config?
/etc/profile
. So etwas wiealias umask=/bin/true