Хорошо, давайте попробуем так или иначе с информацией Вы, если моя ставка - Вы, поражает проблему политики SELinux.
Как проверить, включен ли SELinux?
[root@ragnarok ~]# getenforce
Enforcing
Если осуществление возвратов команды, Ваша система работает с включенным SELinux, если это так, давайте попытаемся поместить его на режим Permissive и видеть, уходит ли Ваша проблема.
Как изменить режим SELinux на Разрешающий?
[root@ragnarok ~]# setenforce 0
[root@ragnarok ~]# getenforce
Permissive
Это будет работать, пока Вы не перезагрузите, поэтому теперь пора попытаться запустить Ваш провальный сервис.
Если мы удачливы, и это добилось цели, Вы могли бы поражать следующую ошибку/опечатки:
https://bugzilla.redhat.com/show_bug.cgi? id=809746
Вы могли свериться с командами, обеспеченными генератором отчетов ошибки, и видеть, является ли результатами то же. Если это имело бы место, кажется, что это было зафиксировано в восходящем направлении с июня, и Вы, возможно, должны были бы обновить свою систему или ожидать, пока CentOS не применяет фиксацию.
Возвратитесь к нам со своими результатами.
Насколько я могу судить, использование --
в качестве маркера конца опций начинается с sh
и getopt
в System III Unix (1980).
Согласно этой истории семейства Bourne Shell , Bourne Shell впервые появился в версии 7 Unix (1979). Но в ней не было возможности для установить
в отдельные опции из аргументов . Так оригинальный оболочка Борна могла сделать:
set -e
- включить режим exit-on-errorset arg1 arg2 ...
- устанавливает параметры позиционирования $1=arg1
, $2=arg2
и др. Но: - установка arg1 -e arg2
даст вам $1=arg1
, $2=arg2
, и включит выход-on-error. Упс.
Система III Unix (1980) исправила эту ошибку и ввела getopt
. Согласно getopt
man page:
NAME
getopt - parse command options
SYNOPSIS
set -- `getopt optstring $∗`
DESCRIPTION
Getopt is used to break up options in command lines for easy parsing by
shell procedures, and to check for legal options. Optstring is a
string of recognized option letters (see getopt(3C)); if a letter is
followed by a colon, the option is expected to have an argument which
may or may not be separated from it by white space. The special option
-- is used to delimit the end of the options. Getopt will place -- in
the arguments at the end of the options, or recognize it if used
explicitly. The shell arguments ($1 $2 . . .) are reset so that each
option is preceded by a - and in its own shell argument; each option
argument is also in its own shell argument.
Насколько я могу судить, это первое место, где оно появляется.
Отсюда кажется, что другие команды приняли конвенцию --
для разрешения неоднозначности при разборе аргументов (например, примеры с touch
и rm
, которые вы цитируете выше) на протяжении всех диких, без исключения, дней 1980-х годов.
Некоторые из этих фрагментарных усыновлений были кодифицированы в POSIX.1 (1988), откуда взялся комментарий в changelog о "POSIX-required kludge".
Но только после POSIX.2 (1992) были приняты Utility Syntax Guidelines, в котором содержится знаменитый руководящий принцип 10:
Guideline 10: The argument "--" should be accepted as a delimiter
indicating the end of options. Any following
arguments should be treated as operands, even if they
begin with the '-' character. The "--" argument
should not be used as an option or as an operand.
, и именно здесь он переходит от "kludge" к универсальной рекомендации.