Как вы уже догадались, разрешение на выполнение редко бывает полезным в качестве разрешения. Наличие его в качестве разрешения, а не атрибута файла, является исторической случайностью. Однако, поскольку он существует, он не собирается исчезать. Наличие разрешения на выполнение, отличного от разрешения на чтение, имеет значение в двух случаях.
chmod
или может иметь право только на запись в каталоги в файловой системе, смонтированной с помощью noexec
. Такой пользователь ограничен доступом к уже существующим исполняемым файлам. Добавление системного вызова exec из памяти позволяет учетным записям с ограниченным доступом выполнять произвольный код. Это эквивалентно наличию собственного интерпретатора кода, доступного отовсюду, даже для учетных записей с ограниченным доступом.Это не будет принято в основном ядре, поскольку нарушит ограничения безопасности. Вы можете развернуть его на своих собственных машинах, но вы должны помнить о последствиях.
Тем не менее, для уже существующей функции требуется много работы и много багажа безопасности. Код можно выполнять без записи на диск. Вам просто нужно записать код в файл на файловой системе, отличной от -диска, такой как tmpfs.
Вы не указываете конкретный порог принятия, так почему бы не ранжировать их по разнице
awk '{
if ($1 ~ /nonEtAk/) {ss=substr($1,1,length($1)-7); rank[ss]+=$2}
else rank[$1]-=$2
} END {
for (key in rank) { print key, "difference is", rank[key] }
}' <(sed -e '/^$/d' file) | sort -r -k4
Выход
http://1.avatar.yahoo.com/ difference is 214
http://0-0.latam.corp.yahoo.com/ difference is 14
Прохождение
Удалить все пустые строки и передать их вawk
awk '' <(sed -e '/^$/d' file)
Вawk
Если первое поле содержит «nonEtAk», то получить подстроку имени домена (, отрезав последние 7 символов )и добавить значение от $2 в ассоциативный массив (rank )с доменом имя в качестве ключа
if ($1 ~ /nonEtAk/) {ss=substr($1,1,length($1)-7); rank[ss]+=$2}
...иначе вычесть $2 из элемента массива с доменным именем в качестве ключа
else rank[$1]-=$2
...когда закончил чтение файла
`} END {`
...перебрать массив и вывести
for (key in rank) { print key, "difference is", rank[key] }
...наконец расположите их в порядке убывания в зависимости от разницы
| sort -r -k4