Як говорили інші, тут неможливо захистити лише таку програму, як gnome-термінал чи інший термінал, від реєстрації ключів, лише якщо ви обмежите стандартних користувачів виконувати будь-який реєстратор ключів або якщо ви зупиняєте / призупиняєте будь-який процес реєстрації ключів.
Далі я покажу вам, як ви можете це робити у випадку xinputкомандування, але ті ж методи можна використовувати і для будь-якого іншого реєстратора ключів. Якщо реєстратор ключів використовує xinputкоманду, застосовувати метод до нього не потрібно, доки ви його застосуєте xinput.
1. Обмежте стандартних користувачів використовувати xinputкоманду
Ви можете обмежити стандартних користувачів використовувати xinputкоманду, використовуючи таку команду:
sudo chmod go-x /usr/bin/xinput
2. Обмежте стандартних користувачів використовувати xinputкоманду з test-xi2аргументом
Ви можете обмежити звичайних користувачів використовувати xinputкоманду з test-xi2аргументом , написавши обгортку для цієї команди. Для цього зайдіть в термінал і дотримуйтесь інструкцій, наведених нижче:
Отримайте привілеї root:
sudo -i
Перемістіть xinputфайл в інший каталог, який не є в PATH будь-якого користувача (наприклад /opt):
mv /usr/bin/xinput /new/path/to/xinput
Створіть свою обгортку для xinputкоманд у /usr/bin:
gedit /usr/bin/xinput
Додайте такий сценарій всередині:
#!/bin/bash
if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
echo "`basename $0` $@: Permission denied"
else
/new/path/to/xinput $@
fi
Збережіть файл і закрийте його.
Зробіть нову обгортку виконуваною:
chmod +x /usr/bin/xinput
Хоча перший метод - це безпека, використовуючи другий метод, користувач може все-таки обійти його, зателефонувавши оригіналу xinputбезпосередньо, якщо знає його нове місце.
3. Зупиніть / призупиніть будь-який xinputпроцес
Ви можете зупинити або призупинити будь-який xinputпроцес, перш ніж вводити пароль або що-небудь інше, що ви не хочете входити в систему. Для цього додайте наступну функцію bash в кінці ~/.bashrcфайлу:
processof () {
xinput_pids=" $(pidof $1) "
if [ "$xinput_pids" = " " ]; then
echo "Nothing to stop/pause/continue. $1: no such process!"
return
fi
for pid in $xinput_pids; do
case $2 in
"stop")
kill $pid
echo "$1: stopped"
;;
"pause")
kill -stop $pid
echo "$1: paused"
;;
"continue")
kill -cont $pid
echo "$1: continue"
;;
*)
echo "$1 is runnig"
;;
esac
done
}
Тепер, коли ви знову відкриєте свій термінал, у будь-який час, за допомогою цієї функції ви можете:
зупинити / вбити всі xinputпроцеси:
processof xinput stop
призупинити всі xinputпроцеси:
processof xinput pause
відновити всі xinputпроцеси:
processof xinput continue
Насправді, за допомогою цієї функції ви можете зупинити / призупинити будь-який процес, який хочете раніше, щоб зробити щось (наприклад, введення пароля):
processof [process_name] [stop|pause|continue]
Якщо ви не знаєте, як виявити активний кейлоггер у вашій системі, див.
Ці методи, можливо, не найкращі рішення, але я сподіваюся дати вам уявлення про те, що ви можете зробити ...