Удаление - это операция записи, поэтому вам необходимо удалить доступ для записи из каталога, который содержит файл (используя файл ~ / foo / bar.txt
в качестве примера):
chmod a-w ~/foo/
или
chmod 666 ~/foo/
Это, однако, все еще разрешает root, чтобы удалить файл. Если даже не хочу, чтобы все стало более сложным. Насколько я знаю , лучший способ (и это легко обходятся на обращении команды) - это установить его на «неизменяемое»:
sudo chattr +i ~/foo/bar.txt
, которые остановят root от удаления файла, но они всегда могут Просто запустите Chattr -i ~ / foo / bar.txt
еще раз, чтобы отменить его, чтобы он больше похож на препятствие, чем полный блок. Это, однако, прекращает пользователей без root от удаления его, и они не будут иметь право запустить Chattr -i
на нем, так что это самый простой способ, поскольку оно не влияет на все файлы в каталоге Отказ
-121--120270-
Перенаправляйте весь вывод как блок.
(
yum -y update
service restart nginx
yum install atop
cat /var/log/somelog.log > /home/cron/php/script
) > /dev/null 2>&1
Да, вы можете сделать это в Bash, но я понятия не имею, почему вы хотели бы Отказ Вот чистое решение Bash:
$ while read -r mon day time host threat date time crit count sugg out exip \
in inip tcp port export cat vuln; do
printf "%s | " "$mon $day $time" "$host" "$threat" "$date $time" \
"$crit $count $sugg" "$out $exip" "$in $inip" "$tcp \
$port" "$export" "$cat" "$vuln"
done < file; printf "\n"
Jan 21 11:10:44 | hostname.internal.nl | THREAT | 2015/01/21 11:10:44 | critical 5 reset-both | outside 10.10.10.10 | inside 10.16.61.4 | tcp 39898 | 80 | web-browsing | any Bash Remote Code Execution Vulnerability(36731) |
Я мог бы дать вам лучшие способы Perl или awk, но они будут зависеть от того, как именно вы определяете свои поля. Если вы обновите свой вопрос с более подробной информацией (например, будут ли всегда 3 слова в критическом поле? Нам нужно знать, что всегда будет одинаково на вашем входе и что может измениться), я могу дать вам лучшее решение.
Если ваши входные строки являются одинаковым типом, вы можете поделать это:
#!/bin/bash
LOG="/root/1.txt"
echo "Date | Hostname | Threat | DATE+time | Critical/High | Count | --- | External IP | Internal IP | TCP/UDP | Port | External Port | Category | Vulnerability" > 1.csv
< $LOG awk '{print $1" "$2" "$3 " | " $4 " | " $5 " | " $6" "$7 " | " $8" "$9" "$10 " | " $11" "$12 " | " $13" "$14 " | " $15" "$16 " | " $17 " | " $18 " | " $19" "$20" "$21" "$22" "$23" "$24}' >> 1.csv
Вход:
Jan 21 11:10:45 hostname.internal.nl THREAT 2015/01/21 11:10:44 critical 5 reset-both outside 10.10.10.10 inside 10.16.61.4 tcp 39898 80 web-browsing any Bash Remote Code Execution Vulnerability(36731)
Jan 22 11:12:45 hostname2.internal.nl THREAT2 2015/01/22 12:10:44 critical2 52 reset-both2 outside2 10.10.10.12 inside2 10.16.61.42 udp 39899 82 web-browsing2 any2 Bash Remote Code Execution Vulnerability(36731)2
Вывод:
Date | Hostname | Threat | DATE+time | Critical/High | Count | --- | External IP | Internal IP | TCP/UDP | Port | External Port | Category | Vulnerability
Jan 21 11:10:45 | hostname.internal.nl | THREAT | 2015/01/21 11:10:44 | critical 5 reset-both | outside 10.10.10.10 | inside 10.16.61.4 | tcp 39898 | 80 | web-browsing | any Bash Remote Code Execution Vulnerability(36731)
Jan 22 11:12:45 | hostname2.internal.nl | THREAT2 | 2015/01/22 12:10:44 | critical2 52 reset-both2 | outside2 10.10.10.12 | inside2 10.16.61.42 | udp 39899 | 82 | web-browsing2 | any2 Bash Remote Code Execution Vulnerability(36731)2
Я нашел это очень полезно для сбора файлов журналов из S3 Cloudfront и загрузки их в Google Drive.
Я использовал awscli на Mac-Os после его установки с помощью homebrew awscli. Я выполнил команду:
aws s3 sync s3://bucketname/domain/ .
Корзина была заполнена журналами облачного интерфейса (я включаю это при редактировании облачного интерфейса) и всеми файлами, которые были загружены на мой локальный компьютер. Я запустил разархивированные файлы .gz и получил текстовые файлы.
После этого в той же папке я использовал команду find + exec для создания одного большого файла журнала, как описано ниже. После этого я разбил журнал на формат журнала Cloudfront и сгенерировал файл CSV, используя запятые в качестве разделения в awk. Этот CSV был загружен на Google диск для некоторого сводного анализа и помог мне найти плохие края и отсутствующие файлы.
Это сценарий bash, который я использовал для этого:
`#!bash/bin
#Join Logs into one Big File using cat , if there are any default headers on your files . you need to remove them
FILE_NAMES_START = 'E1I*'
find . -type f -name FILE_NAMES_START -exec cat {} + >> big_log_file.txt
#Output Log File
LOG="big_log_file.txt"
echo "DATE , TIME , X-Edge-Location , SC-Bytes , Client-IP , Method , Cs-Host , File-URI , HTTP Status , Referer , User Agent , URI Query , Cookie-Id , Edge-Result , Edge-Request-ID , Host Header , Protocol , Bytes , Time Taken , X-Forwader , SSL Protocol , SSL Cipher , CDN-Result-Type" >> csv_data.csv
< $LOG awk '{print $1 " , " $2" , " $3 " , " $4 " , " $5 " , " $6 " , " $7 " , " $8 " , " $9 " , " $10 " , " $11 " , " $12 " , " $13 " , " $14 " , " $15 " , " $16 " , " $17 " , " $18 " , " $19 " , " $20 " , " $21 " , " $22 " , " $23 " , " $24}' >> big_csv_file.csv`
Убедитесь, что файлы txt и этот код bash находятся в одной библиотеке, или добавьте необходимый / в сценарий.
csv> 100 МБ не так хорошо работает в таблицах Google.