Сравните две строки, используя второй столбец

Как вы уже догадались, разрешение на выполнение редко бывает полезным в качестве разрешения. Наличие его в качестве разрешения, а не атрибута файла, является исторической случайностью. Однако, поскольку он существует, он не собирается исчезать. Наличие разрешения на выполнение, отличного от разрешения на чтение, имеет значение в двух случаях.

  • Если выполнение файла предоставляет дополнительные привилегии, то имеет значение, кто может выполнять этот конкретный файл. Исполняемый файл setuid, setgid или setcap может быть доступным для чтения во всем мире -, но не исполняемым -во всем мире (многие дистрибутивы делают файлы setxid доступными для чтения во всем мире -, даже если они не являются исполняемыми во всем мире -, потому что они не являются конфиденциально — любой может скачать файл из архивов дистрибутива ).
  • Некоторые учетные записи могут быть ограничены таким образом, что им не разрешается записывать содержимое в исполняемый файл. Например, учетная запись может иметь доступ только к ограниченной оболочке без chmodили может иметь право только на запись в каталоги в файловой системе, смонтированной с помощью noexec. Такой пользователь ограничен доступом к уже существующим исполняемым файлам.

Добавление системного вызова exec из памяти позволяет учетным записям с ограниченным доступом выполнять произвольный код. Это эквивалентно наличию собственного интерпретатора кода, доступного отовсюду, даже для учетных записей с ограниченным доступом.Это не будет принято в основном ядре, поскольку нарушит ограничения безопасности. Вы можете развернуть его на своих собственных машинах, но вы должны помнить о последствиях.

Тем не менее, для уже существующей функции требуется много работы и много багажа безопасности. Код можно выполнять без записи на диск. Вам просто нужно записать код в файл на файловой системе, отличной от -диска, такой как tmpfs.

0
30.10.2019, 17:42
1 ответ

Вы не указываете конкретный порог принятия, так почему бы не ранжировать их по разнице

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
0
28.01.2020, 03:09

Теги

Похожие вопросы