zle reset-prompt предотвращает просмотр истории с помощью клавиш со стрелками

Хотя / 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 не могут подняться выше, чем их дома.

3
13.04.2017, 15:22
1 ответ

вместо этого вы можете использовать эту функцию

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).

1
27.01.2020, 21:36

Теги

Похожие вопросы