Як говорили інші, тут неможливо захистити лише таку програму, як 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]
Якщо ви не знаєте, як виявити активний кейлоггер у вашій системі, див.
Ці методи, можливо, не найкращі рішення, але я сподіваюся дати вам уявлення про те, що ви можете зробити ...