Mysql запрашивают набор результатов в сценарии удара

Возможности файловой системы в Linux были добавлены для разрешения более мелкомодульного управления, чем setuid один, позволит. С setuid это - полная эскалация эффективных полномочий пользователю (обычно корень). Возможности (7) страница справочника предоставляют следующее описание:

В целях выполнения проверок разрешения традиционные реализации Unix отличают две категории про ‐ налогов: привилегированные процессы (чей эффективный идентификатор пользователя 0, называем суперпользователем или корнем), и непривилегированные про ‐ налоги (чей эффективный UID является ненулевым). Привилегированные процессы обходят все проверки разрешения ядра, в то время как unprivi ‐ процессы на ножках подвергаются проверке полных полномочий на основе учетных данных процесса (обычно: эффективный UID, эффективный GID и дополнительный список группы).

Начиная с ядра 2.2, Linux делит полномочия, традиционно связанные с суперпользователем в отличные единицы, известные как возможности, которые могут быть независимо включены и отключены. Возможности являются атрибутом на поток.

Если для приложения нужна способность назвать chroot (), который обычно только допускается корень, CAP_SYS_CHROOT может быть установлен на двоичном файле, а не setuid. Это может быть сделано с помощью команды setcap:

setcap CAP_SYS_CHROOT /bin/mybin

С версии 4.7.0 об/мин возможности могут быть установлены на упакованном использовании файлов %caps.

Fedora 15 имел цель выпуска удаления всех setuid двоичных файлов, прослеженных в этом отчете об ошибках. Согласно отчету об ошибках, была выполнена эта цель.

Статья Википедии об Основанной на возможности безопасности является хорошим чтением для любого заинтересованного.

4
30.01.2014, 00:03
2 ответа

mysql кажется, производит результаты к переменной оболочки в одной строке. Один окольный путь это должно записать содержание во временный файл, затем обработать в некоторое время цикле.

РЕДАКТИРОВАНИЕ В моей системе IFS = "\n" перед командой mysql (когда результаты присвоены переменной оболочки) дает корректный многострочный вывод. например.

 IFS="\n"
 Total_results=$(mysql.....)

=============== Конец редактирования ==========================

#!/bin/bash
mysql --silent -h server-name -P 3306 -u username-ppassword -D dbname<<<"select URL  from Experiment where URL_Exists = 1" > tmp_results

while read URL
do 
   echo $URL
   var=$(curl -s --head $URL | head -n 1 | grep "HTTP/1.[01] [23]..")
   echo "$var"
   if [ -z "$var" ]
   then
     echo "Ok we do not have a valid link and the value needs to be updated as -1 here"
   else
     echo "we will update the value as 1 from here"
   fi
done < tmp_results
4
27.01.2020, 20:50
  • 1
    Вы не можете просто проанализировать его непосредственно? Как mysqlcommand | while read URL; do ... ; done ? Почему использование временный файл? –  terdon♦ 30.01.2014, 00:18
  • 2
    Да я уверен, что существует более легкий путь - но при присвоении переменной оболочки вывод является одной строкой. –  suspectus 30.01.2014, 00:21
  • 3
    я получаю ошибку как/tmp_results никакой такой файл или каталог. Однако файл становится сгенерированным как ожидалось. –  Ramesh 30.01.2014, 00:24
  • 4
    жаль опечатка - удалил/. фейспалм –  suspectus 30.01.2014, 00:26

Вы не нуждаетесь в переменной или временном файле для этого, просто анализируете mysql управляйте непосредственно путем передачи по каналу к while цикл:

#!/bin/bash
mysql <<<"select URL from Experiment where URL_Exists = 1" |

while IFS='\n' read URL
do
  echo $URL
  var=$(curl -s --head $URL | head -n 1 | grep "HTTP/1.[01] [23]..")
  echo "$var"
  if [ -z "$var" ]
  then
    echo "Ok we do not have a valid link and the value needs to be updated as -1 here"
  else
    echo "we will update the value as 1 from here"
  fi
done
4
27.01.2020, 20:50
  • 1
    @suspectus! Конечно, в выводе будут пробелы.Спасибо. –  terdon♦ 30.01.2014, 00:30
  • 2
    @terdon - хорошее решение. –  suspectus 30.01.2014, 00:38

Теги

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