Sua suposição de que /dev/log
é um arquivo que pode ser compartilhado via bind-mounting /dev
é incorreto para a maioria das distribuições de Linux modernas usando systemd . Portanto, montar seus sistemas /dev
em seu chroot tem pouco valor.
$ file /dev/log
/dev/log: symbolic link to /run/systemd/journal/dev-log
Como / run não está disponível como no chroot ( e não deve ser ), o sftp-server tentando gravar em /dev/log
considerará um link simbólico quebrado.
Em vez disso, use input(type="imuxsock" Socket="/opt/bindmount/dev/log")
para criar um soquete adicional (que você pode vincular a montar, de modo que todos os chroots o vejam em /dev/log
).
Você geralmente não deve compartilhar o acesso /dev
completo ao chroot de qualquer maneira, o ponto inteiro do chroot é limitar a superfície de ataque.
Bônus: Você pode escrever sua configuração /etc/rsyslog.d/10-sftp.conf
como esta (filtrar por "nome do host", que você pode escolher arbitrariamente)
input(type="imuxsock" Socket="/opt/bindmount/dev/log", HostName="sftp")
if $hostname == 'sftp' then /var/log/sftp.log
&stop
Isso significa que, se você implantar outros chroots, limitados a outros comandos (como git-shell
), ainda poderá ter todas as mensagens do chroot no mesmo local, mesmo que outros programas gravem em /dev/log
.