Чтобы исправить это, сначала проверьте, установив логическое значение динамически (еще не постоянным):
/usr/sbin/setsebool httpd_can_network_connect 1
Если это сработает, вы можете настроить его таким образом, чтобы политика по умолчанию изменялась, и этот параметр сохранялся при перезагрузке:
/usr/sbin/setsebool -P httpd_can_network_connect 1
В вашей первой команде($ grep 'root' /etc/passw
)вы передаете аргумент/ы для grep
, и он интерпретирует его как имя файла и ищет его. Это(grep
)терпит неудачу, поэтому сообщает вам, что произошло. Именно grep интерпретирует ваш ввод и действует на него.
Во второй команде(grep 'root' < /etc/passw
)вы делаете оболочку (здесь:bash
)для передачи /etc/passw
на стандартный ввод grep
. Он(bash
)не может его найти и сообщает вам об этом. Здесь именно bash интерпретирует ваш ввод и действует на него.
Вторая команда концептуально эквивалентна $ bash-cat /etc/passw | grep 'root'
, где bash-cat
будет работать как cat
, которая выводит заданный файл на стандартный вывод. Затем он будет перенаправлен на grep
.
$ bash-cat /etc/passw | grep 'root'
bash-cat: /etc/passw: No such file or directory
--
Если вы читали о трубах, вы поймете.(Трубы :Краткое введение)
При использовании таких операторов перенаправления ввода-вывода оболочка сама открывает файл для ввода команды как стандартный ввод, но при передаче в качестве аргумента файл открывается -самой командой.
Итак, если у вас есть программа, скажем, awk
— и вы используете перенаправление <
для передачи имени файла, и вы пытаетесь напечатать FILENAME
, для какого файла она открыта, будет сообщено -
(, что означает, что ввод stdin ); см. следующий вывод:
awk '{ print FILENAME }' --infile
--infile
awk '{ print FILENAME }' <--infile
-
Еще одним преимуществом является то, что если имя файла начинается с дефиса, оболочка обработает его сама, но если вы передадите команду в качестве аргумента, скажем grep
, она будет жаловаться, потому что считает, что предоставлена недопустимая опция.
grep root --infile
grep: unrecognized option '--infile'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Стандартные, совместимые со стандартами -команды используют --
, чтобы избежать этой ошибки, сообщая команде, что это конец аргумента опции -. Вы также можете указать либо абсолютный путь к файлу, либо относительный путь с помощью ./--infle
, либо позволить оболочке открыть его для команды с помощью command <--infile
.
примечание :Использование <inputfile command
является тем же вариантом command <inputfile
.
Еще одним преимуществом является то, что если этот файл не существует или оболочка не может его открыть, то ваша команда не будет выполнена.
awk 'BEGIN{ print "ifrun" }' < non-existing_file
-bash: non-existing_file: No such file or directory
awk 'BEGIN{ print "ifrun" }' non-existing_file
ifrun