Вы можете сделать это переносимо (или, по крайней мере, переносимо на оболочки, которые поддерживают этот синтаксис массива )с помощьюprintf
:
$ items=(foo bar baz)
$ printf -- "--file %s " "${items[@]}"
--file foo --file bar --file baz $
Однако, в отличие от команды print
, она не добавляет завершающую новую строку (, поэтому у вас есть $
в той же строке, что и вывод, над ). Если это нарушает условия сделки, вы можете:
$ printf -- "--file %s " "${items[@]}"; echo ""
--file foo --file bar --file baz
Пожалуйста, прочтите man sftp-server
. На этой странице руководства вы можете прочитать о директиве log_level
, которая по умолчанию имеет значение ERROR. Если вы установите log_level
в INFO или VERBOSE, транзакции будут регистрироваться.
Таким образом, по умолчанию такие сообщения не регистрируются.
Чтобы включить ведение журнала, отредактируйте файл /etc/ssh/sshd_config
и найдите:
Subsystem sftp /usr/lib/openssh/sftp-server
Добавить -l INFO
к строке, сохранить и выйти. Затем перезапустите sshd, используяsystemctl restart ssh
Попробуйте действие sftp и посмотрите /var/log/auth.log
на наличие сообщений типа:
Dec 6 15:11:47 myhost sftp-server[4674]: open "/home/myuser/testfile" flags READ mode 0666
Dec 6 15:11:47 myhost sftp-server[4674]: close "/home/myuser/testfile" bytes read 8 written 0
При использовании sftp-server
в средеchroot
-ed также применимо следующее:
On some systems, sftp-server must be able to access /dev/log for logging to work, and use of sftp-server in a chroot configuration therefore requires that syslogd(8) establish a logging socket inside the chroot directory.
По умолчанию сервер sftp -использует AUTH
в качестве средства ведения журнала. Проверьте конфигурацию ведения журнала, чтобы убедиться, что ведение журнала для AUTH
настроено. Например, дляrsyslog
:
$ grep auth /etc/rsyslog.d/50-default.conf
auth,authpriv.* /var/log/auth.log