sudo-u имя пользователя-s “cmd аргумент” возвращает команду, не найденную

Я рекомендовал бы читать Усовершенствованное Программирование в Среде Unix 2e для приобретения знаний много о Единственном стандарте Unix (SUS) API и POSIX, который даст Вам общее представление о том, что делает Unix Unix и как компоненты работают и сотрудничают.

Однако это очень C тяжелая книга и больше справочника. Если у Вас есть проблема с бессонницей, просто укладывают его в кровать с Вами. То, что в стороне, если Вы - Unix C программист, это - необходимая вещь.

10
15.01.2017, 00:53
1 ответ

Необходимо удалить двойные кавычки. Это пытается выполнить команду, названную "ulimit-Hn" как единственная команда, пробелы и так далее. -s потребности быть последним sudo опция на sudo командная строка и весь после аргументов передаются $SHELL -c выполниться.

sudo -u elasticsearch -s ulimit -Hn

Я предполагаю путь -s обрабатывается изменился, поскольку текущий путь позволяет Вам передавать споры с пробелами к $SHELL путем выхода из них на командной строке:

$ touch '/tmp/foo bar'
$ sudo -s rm '/tmp/foo bar'

Старый метод обработки аргумента разделил бы это '/tmp/foo bar' аргумент в два, повреждая команду.

16
27.01.2020, 20:01
  • 1
    , где Вы протестировали это, это не разделит команду? –  Zarathustra 19.08.2016, 16:53
  • 2
    @Zarathustra, Который был пять лет назад - я не могу помнить назад настолько далеко. Я предложил бы рыть через sudo историю исходного кода - необходимо смочь найти когда поведение измененный. –  camh 20.08.2016, 01:44

Теги

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