Вопрос или проблема
Я пытаюсь в данный момент объединить всю историю пользователей в корневую, это должно повысить безопасность.
Нам нужно увидеть, что последний пользователь выполнил или какой файл пользователь изменил.
Я пробовал многое; символьные ссылки; настраивать файл bashrc, но ничего не работает.
У кого-то есть идеи по этому поводу?
ОС: Linux CLI (интерфейс командной строки) без рабочего стола
Текущий вывод через команду history:
[root] 153 16.10.2024 13:49:55 перезагрузка
[root] 154 16.10.2024 13:51:04 history
Что мне нужно для вывода через команду history
[root] 153 16.10.2024 13:50:55 перезагрузка
[root] 154 16.10.2024 13:52:04 history
[user1] 155 16.10.2024 13:53:55 перезагрузка
[user1] 156 16.10.2024 13:54:04 history
[user2] 157 16.10.2024 13:55:55 rm file.txt
[dev2] 158 16.10.2024 13:56:04 nano /var/log/server.log
Мне нужно объединить это в обычный bashrc для root. Как я уже сказал, я пробовал создать символьную ссылку и настраивать bashrc, но ничего не дает правильного вывода. Я не могу объединить пользователей системы.
Символьная ссылка
[root] 50 16.10.2024 12:52:41 ln -s /home/user1/.bash_history /root/.bash_history
Ответ или решение
Для решения вашей задачи по объединению истории команд всех пользователей в одну, доступную через root, необходимо учесть несколько важных моментов. Ниже представлено пошаговое руководство, которое поможет вам добиться желаемого результата.
1. Основные параметры настройки
Linux использует файл .bash_history
для каждого пользователя, чтобы вести историю команд. По умолчанию отображается только история текущего пользователя. Для того чтобы в одной истории отображались команды всех пользователей, можно использовать централизованный подход для хранения истории.
2. Конфигурация Bash для всех пользователей
Вы можете изменить настройки истории Bash для каждого пользователя следующим образом:
-
Создайте центральный файл для истории (например,
/root/all_users_history
):touch /root/all_users_history chmod 600 /root/all_users_history
-
Настройте
.bashrc
для каждого пользователя так, чтобы он записывал команды в созданный файл. Откройте файл.bashrc
каждого пользователя и добавьте следующие строки:export HISTFILE=/root/all_users_history export HISTSIZE=2000 export HISTFILESIZE=2000 export PROMPT_COMMAND="history -a; history -n"
- HISTFILE – указывает на общий файл для истории.
- HISTSIZE и HISTFILESIZE – устанавливают размеры истории.
- PROMPT_COMMAND – гарантирует, что команды будут записываться и обновляться корректно.
-
Примените изменения. Каждый пользователь должен перезапустить свою сессию или выполнить:
source ~/.bashrc
3. Использование синхронизации истории
Чтобы убедиться, что история всех пользователей обновляется и синхронизируется, настройте их конфигурацию так, чтобы они писали в общий файл истории после выполнения каждой команды:
echo "export HISTFILE=/root/all_users_history" >> ~/.bashrc
echo "export PROMPT_COMMAND='history -a; history -n'" >> ~/.bashrc
4. Проверка результатов
После выполнения вышеуказанных шагов, выполните несколько команд от имени различных пользователей, а затем выполните команду history
от имени root:
sudo su -
history
Вы должны увидеть историю команд всех пользователей.
5. Обеспечение безопасности и доступа
Так как файл с историей будет находиться в /root
, убедитесь, что только root имеет доступ к этому файлу. Также будет полезно установить регулярные резервные копии данного файла.
6. Выводы
Настройка централизованной истории команд потребует некоторого административного вмешательства и предварительных настроек для каждого пользователя. Это полезный шаг для организации контроля за действиями пользователей и повышения безопасности.
Следите за изменениями в этом файле и проводите регулярный аудит, чтобы обеспечить безопасность и контроль доступа к важной информации.