пятница, 17 января 2014 г.

Как узнать в Linux, кто включил компьютер?

Via: http://www.sakryukin.ru/?module=articles&c=articles&b=8&a=17

Как узнать в Linux, кто включил компьютер?

   На домашнем компьютере (ОС Debian GNU/Linux) несколько учётных записей - моя, жены, двух дочерей (у каждой своя учётка).
Сейчас лето и дети находятся дома. Каникулы штука хорошая, но делу время, а потехе час, а потому доступ к компьютеру для дочек  я ограничил по времени. Однако они его включают пока взрослых нет дома - о том мне логи говорят. И вот, чтобы у меня были неоспоримые доказательсва внепланового запуска ПК я решил использовать WEB-камеру и делать снимки при логине пользователя в систему.

Что понадобится?


WEB-камера и установленное приложение ffmpeg.

Как сделать фотографию запустившего компьютер?


1) Запускаем терминал и получаем права root.
2) Создаём скрытый каталог для хранения изображений в каталоге пользователя.
mkdir ~/.login_photo

Раздаём права:
chmod 777 ~/.login_photo

3) Правим файл .profile у пользователя, за которым "следим".
Пробиваем в консоли вот такую команду (одной строкой):
echo "ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -r 1 -vcodec png ~/.login_photo/`date +%d.%m.%y_%H.%M.%S`.png -b 2000k -t 5;" >> ~/.profile

Только не забудьте заменить /dev/video0 на путь к своей WEB-камере - это может быть /dev/video1 или дальше по порядку.

Теперь при каждом логине пользователя в каталоге /home/учётная_запись/.login_photo будет сохранён снимок в имени, которого будет присутствовать дата и время.


Второй вариант снимка заходящего (используем PAM)

   Чтобы камера снимала любые попытки авторизации, нужно переходить на уроверь pam. Т.е. фото будет сделано сразу после ввода имени пользователя в консоли или выбора пользователя в GDM/KDM или, что там ещё будет установлено.

Для реализации такой задумки нужно создать bash-скрипт со строкой запускающей ffmpeg и положить его в /usr/sbin с любым свободным именем.
Для примера делам так (от root):

touch /usr/sbin/auth-cam
mkdir /var/log/auth-cam

echo "#! /bin/bash
cd /var/log/pics
/usr/bin/ffmpeg -an -f video4linux2 -s 320x240 -i /dev/video0 -r 1 -vcodec png /var/log/auth-cam/`date +%d.%m.%y_%H.%M.%S`.png -b 2000k -t 5" > /usr/sbin/auth-cam

Раздаём права:

chmod 755 /usr/sbin/auth-cam
chmod 755 /var/log/auth-cam

И последнее, в начало файла /etc/pam.d/common-auth вписываем запуск нашего скрипта. Можно вот так:

sed -i -e '1 s/^/auth optional pam_exec.so seteuid \/usr\/sbin\/auth-cam\n/;' /etc/pam.d/common-auth

Всё! Покидаем режим root.

Теперь при любой попытке авторизации будет сделано фото и сохранено в каталоге /var/log/auth-cam

ЗЫ: а чтобы было понятно от какого пользователя заходили и к кому, то можно поиграться с именем формируемого снимка, включив в него переменные $PAM_USER, $PAM_SERVICE, $PAM_RHOST, $PAM_RUSER

Опубликовано: Константин, Автор/источник: Сакрюкин К.В. 29 Июнь 2012 12:13:08