Intereting Posts
Написание сценария оболочки, чтобы предупредить меня о Mac OS X Использование памяти в Linux Поддерживает ли systemd перезапуск при отказе для демона forking? Является ли моя задача администратором Linux удалять привилегии приложений или работу разработчиков приложений? Так как Ubuntu persistent USB разбился, он не загружается с черным экраном перед входом в систему, что делать? Добавить ;; вверху и внизу каждого файла в списке Postfix / Dovecot Mail появляется в журналах, но не в соответствующей папке Как я могу настроить `anybody` для запуска X в однострочном? Ошибка авторизации SSL с несколькими серверами Apache Fedora 23 – не может повторно войти в систему после выхода из системы Горячая запись EOF в файл, чтобы остановить любые процессы хвоста Как ПОЛНОСТЬЮ отключить системные звуковые сигналы навсегда для хорошего по-настоящему Linux ext4 раздел продолжает конвертировать все файлы в режиме только для чтения Создание папки с удалением Невозможно восстановить Невозможно запустить сценарий tmux при загрузке

Как обнаружить USB-вставку и зарегистрировать текущего пользователя

Мне нужно написать скрипт, который регистрирует, какой пользователь вставил какой USB, и отправляет информацию на сервер. Я создал правило udev, которое запускает скрипт python, когда обнаруживает вставку USB. Сценарий записывает в файл журнала информацию о вставленном USB и отправляет эту информацию на сервер. Проблема, кажется, что скрипт запускается как root, а не как текущий пользователь, так как команда id возвращает uid = 0 (root). Можно ли в настоящее время войти в систему пользователя из сценария udev-run, и если нет, есть ли альтернативы, которые могут это сделать?

Функционально вы не можете сделать это каким-либо вменяемым способом, потому что:

  • Вы можете одновременно войти в систему нескольких пользователей. Затем вы можете войти в систему всех, но это все еще не надежно из-за второй проблемы.
  • Имена пользователей надежно не соответствуют тому, кто на самом деле физически присутствует в системе.

Если вы действительно настроены на это, запишите выходные данные команды who вместе с информацией USB. Это даст вам список тех, у кого все есть активные логины, на каком терминале, откуда и когда они вошли. Это работает для первой проблемы, но не для второй (и вы не можете обойти вторую без какое-то оборудование задействовано.

В качестве альтернативы, посмотрите на usbguard , настройте его, чтобы требовать авторизацию для всего, и затем зарегистрируйте, кто авторизует устройство (это должен быть человек, который подключил его, но нет способа гарантировать это).