Ich habe nach einer Möglichkeit gesucht , OpenSSHs umask für 0027alle 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/profileInformationen 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/profilejetzt beinhaltet umask 0027.
Punkt für Punkt gehen:
- SFTP - Einstellung
-u 0027insshd_configwie 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 0027auf sshd_configder 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/profilestandardmäßig liest, wasumask 0027im aktuellen Setup bedeutet.SSH Hostname Programm - gleiche Situation wie SCP .
Zusammenfassend lässt sich sagen, dass das Setzen von umask sftpdas Ergebnis ändert, aber nicht so, wie es sollte. Es ssh hostnamefunktioniert wie erwartet /etc/profileund beides scpund ssh hostname programscheint umask 0022irgendwo 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 opensshPaketen 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/profileoder 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/profilekeine 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 yesin deiner sshd_config?
/etc/profile. So etwas wiealias umask=/bin/true