Хотя / ftp / home / john /./ test
является допустимым запись passwd
, точка .
здесь не предполагает никакого смысла
-bash-4.1$ echo $HOME
/home/testuser/./test
-bash-4.1$ pwd
/home/testuser/./test
-bash-4.1$ cd ..
-bash-4.1$ pwd
/home/testuser
-bash-4.1$ cd test
-bash-4.1$ pwd
/home/testuser/test
Итак, домашний каталог пользователя john
- это / ftp / home / john / test
, а не / ftp / home / john
как вы предполагаете. Чтобы разрешить пользователю john
доступ к / ftp / home / john
, вам необходимо установить его домашнюю папку на / ftp / home / john
(или выше). . В vsftpd
(и в большинстве случаев) пользователи chrooted не могут подняться выше, чем их дома.
вместо этого вы можете использовать эту функцию
TRAPALRM() {
case "$WIDGET" in
expand-or-complete|self-insert|up-line-or-beginning-search|down-line-or-beginning-search|backward-delete-char|.history-incremental-search-backward|.history-incremental-search-forward)
:
;;
*)
zle reset-prompt
;;
esac
}
В основном, это работает zle reset-prompt
только тогда, когда WIDGET
не находится внутри корпуса. Вы можете добавить туда список виджетов для игнорирования reset-prompt
, разделив их|
Проблема в том, что TMOUT
на самом деле указывает время ожидания оболочки. После тайм-аута оболочки он выдаст сигнал SIGALRM
и выйдет из оболочки. Функция TRAPALRM()
будет ловить сигналы SIGALRM
и перехватывать выход, вместо этого выполняя определенную функцию.
Стрелки вверх/вниз не ведут себя по-другому, вместо этого они срабатывают при сбросе подсказки, поэтому ведут себя странно. Приведенная выше функция не будет запускаться zle reset-prompt
, когда вы печатаете или прокручиваете историю, и устраняет задержку. Единственным недостатком является то, что подсказка не сможет обновляться после ввода, пока вы не сделаете что-то, что находится за пределами виджетов (, например, нажатие ENTER
, которое запускает виджеты accept-line
).