1

Можно ли использовать cp для копирования файла .bash_history каждого пользователя в одну и ту же папку (с добавленным именем пользователя)?

Или, по крайней мере, можно скопировать их в параллельный набор папок? Я не могу понять это.

У меня есть root-доступ.

3 ответа3

3

ТЛ; др; for a in /home/* ; do cp $a/.bash_history /tmp/$a.bash_history ; done

Более длинная версия:

для шаблона in проходит по всем элементам шаблона.
Сам шаблон хранится в переменной с именем a.

Примеры:
for a in * ; do echo $a ; done эхо все имена файлов.
for a in /home/* ; do echo $a ; done эхо это имена всех homedirs в /home.

Вместо эха мы используем команду копирования. (Ф)

А поскольку мы не хотим перезаписывать все файлы, нам нужно либо изменить имя назначения, либо объединить их все в один файл.

.bash_history

Для копирования мы используем cp $ a /tmp /$ a_file (все файлы теперь называются по-разному.

Для объединения мы можем использовать cat с append для перенаправления.
for a in /home/* ; do cat $a/.bash_history >> /tmp/all-users_bash_history ; done

2

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

Также, будучи пользователем root, шпионит за файлом других пользователей, если для этого нет особых и веских причин. Здесь не хватает честности, если вы заранее не скажете им, что собираетесь это сделать.

0

Если вы ищете что-то конкретное, вы можете использовать:

grep -e "stuff goes here" /home/*/.bash_history

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .