CDPATH - PATH для cd
О переменной окружения CDPATH многие знают, но недооценивают. А между тем эта переменная выполняет теже действия что и переменная PATH, но для команды cd.
Т.е. если CDPATH=".:~:~/all", то вводя cd help мы попадем в help если он существует в текущей директории, иначе проверяется следующее значение ~ (домашний каталог) и если в ней есть необходимый нам каталог то мы попадаем в него, и так далее по всем путям в переменной CDPATH. Работает как в bash так и в zsh, к тому же в zsh автодополнение определяет нужный нам путь сразу во всех директорях указанных в переменной (возможно при использовании bash-completion такое автодополнение и в bash).
TMOUT - время бездействия
О TMOUT знают почему-то не многие, но те кто знают ценят.
В общем установив переменной значение большее нуля вы заставите zsh(и bash тоже) завершить свою работу по истечении указанного количества секунд, если в течении этого времени не будет ничего введено.
Ради безопасности я внес ей в рутовый конфиг zsh, и устанавливаю на серверах куда захожу по ssh - на всякий случай.
Недооцененные CDPATH и TMOUT
За время игрищ с TMOUT на bash (Fedora12, bash-4.0.33-1.fc12.i686) обнаружил следующие забавные (но нерадостные для безопасника) моменты:
1. Если прописать в /etc/profile строки
TMOUT=60
readonly TMOUT
export TMOUT
то в принципе все работает, НО! особо хитрый юзер может спеть консольную мантру
exec sh -c 'unset TMOUT; bash'
и сбросить значение этой переменной.
Вместо readonly можно указать хоть "declare -r", хоть "typeset -r" - все равно не работает.
2. Пункт №1 аннигилируется, если админ пропишет те же строки не в /etc/profile, а в /etc/bashrc
3. Даже если выполняем п.№2, то все равно выполняющаяся команда (top, vmstat 1, while true; do date; sleep 30; date, да все что угодно) не позволяет шеллу выкинуть юзера из системы.
Вопрос - можно ли как-то заставить шелл принудительно обрывать выполняющиеся команды, если время бездействия пользователя превысило допустимое значение ?
ну или в том же скрине блокировать экран по истечению какого-то времени