LINUX.ORG.RU
решено ФорумAdmin

sudo quiet output (incorrect password attempt)

 ,


0

1

Есть ли у sudo опция, подавляющая сообщения об ошибках?

$ echo|sudo -p '' -S echo 123
Sorry, try again.

sudo: 1 incorrect password attempt

$ yes 123|sudo -p '' -S echo 123
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts

$ (yes 123|sudo -p '' -S echo 123) 2>&1 > /dev/null
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts

man sudo не помог,

$ man -P cat sudo | grep -E -ie '(quiet|verbose)'
   host.  A longer list format is used if this option is specified multiple times and the security policy supports a verbose output format.
   the -V option will display the arguments passed to configure when sudo was built and plugins may display more verbose information such as default



Последнее исправление: Mirage1_ (всего исправлений: 1)

sudo echo 123 2> /dev/null
Password: направильный пароль
Password: правильный пароль
123


echo|sudo -p " -S echo 123
yes 123|sudo -p " -S echo 123

За такое сразу -10 в карму.
Никогда не свети пароли в скриптах.

(yes 123|sudo -p " -S echo 123) 2>&1 > /dev/null

Я так понимаю ты не совсем понимаешь что делает конструкция 2>&1

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 2)
Ответ на: комментарий от Kroz

Никогда не свети пароли в скриптах.

А там sudoers беспарольный.

Я так понимаю ты не совсем понимаешь что делает конструкция 2>&1

Перенаправление stderr в stdout?

man bash

it is shorthand for 2>&1 |.  This implicit redirection of the standard error to the standard output  is  performed  after  any  redirections specified by the command.
Mirage1_
() автор топика
Ответ на: комментарий от Mirage1_

Перенаправление stderr в stdout?

Видимо вам намекают вот на это 2>&1 > /dev/null
Сильно загрубленно, результат будет вывод stderr на stdout а stdout в /dev/null.
То чего вы видимо хотели достигнуть, >/dev/null 2>&1 или покороче &>/dev/null

anc ★★★★★
()
Ответ на: комментарий от anc

То чего вы видимо хотели достигнуть ... &>/dev/null

Всё, понял. Не усвоил этот момент, слишком бегло читал Кернигана-Пайка.

Mirage1_
() автор топика
Ответ на: комментарий от anc

Кстати, такой забавный момент, насчёт python'а:

$ python -c 'import os; os.system("(yes 123|sudo -p \"\" -S echo 123) 1> /dev/null 2>&1"); 
import time; time.sleep(7)'
$ python -c 'import os; os.system("(yes 123|sudo -p \"\" -S echo 123) &> /dev/null"); 
import time; time.sleep(7)'
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts
yes: standard output: Broken pipe

Второй вариант с &> отрабатывает некорректно.

time.sleep(7) тут для того, чтобы дождаться завершения os.system().

Mirage1_
() автор топика
Ответ на: комментарий от Mirage1_

Известная проблема, имхо возникает из-за слова «перенаправление» хотя на самом деле это не совсем так, точнее так, но само слово по другому воспринимают. Есть дескрипторы stdout 1 и stderr 2 например изначально они связаны с файлом /dev/tty1,
1 - /dev/tty1
2 - /dev/tty1
выполнив 2>&1, дескрптор 2 связывается с файлом указанным у дескриптора 1, т.е. табличка не меняется
1 - /dev/tty1
2 - /dev/tty1
далее вы выполняете 1>/dev/null, результат
1 - /dev/null
2 - /dev/tty1
или что бы нагляднее, изначально 1>/tmp/filename
1 - /tmp/filename
2 - /dev/tty1
после 2>&1
1 - /tmp/filename
2 - /tmp/filename
после 1>/dev/null
1 - /dev/null
2 - /tmp/filename

многие же это воспринимают по другому, типа после выполнения 2>&1 это становиться цепочкой 2 -> 1 -> /dev/tty1 что не верно.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Mirage1_

> Никогда не свети пароли в скриптах.
А там sudoers беспарольный.

Так зачем тебе тогда пайп с паролем?

Я так понимаю ты не совсем понимаешь что делает конструкция 2>&1

Перенаправление stderr в stdout?

Да. И зачем тебе это, если ты просишь скрыть только ошибки? Перенаправь stderr в /dev/null и делов-то.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Так зачем тебе тогда пайп с паролем?

Защита от дурака (чтобы сервис не завис, ожидая ввода с клавиатуры). И на случай отладки на другом хосте.

Перенаправь stderr в /dev/null и делов-то.

Хм. А supervisord не будет писать в /var/log/ - stdout процессов, если это явно не запретить в конфигах /etc/supervisor/conf.d/*.conf? Т.е., если не прописывать stdout_logfile_maxbytes=0

Mirage1_
() автор топика
Последнее исправление: Mirage1_ (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.