Как я передаю свой пароль gksu?

Ты не делаешь ничего плохого: это то, чего мы должны ожидать.

Первый cat <&0 потребляет все содержимое стандартного входа, потому что именно это и делает cat: он считывает все свои входные данные до конца.

Когда запускается второй cat <&0, на стандартном входе ничего не остаётся: конец файла уже был достигнут раньше.

Если в скрипте оболочки вам нужно сделать 2 или более проходов через стандартный вход, вы должны сбросить его в временный файл, а затем обрабатывать временный файл столько раз, сколько вам нужно.

Безопасное создание временных файлов в /tmp и обеспечение их правильной утилизации, когда ваш скрипт завершается или умирает, является для вас упражнением :-)

Кстати, <&0 является ненужным и ничего не делает. Его функция заключается в том, чтобы направить стандартный ввод на файловый дескриптор 0... который является стандартным вводом... который по определению является тем, где стандартный ввод уже указывает! Вместо этого можно просто выполнить эту команду cat.

0
29.08.2014, 21:11
1 ответ

Оба ГККУ и Gksudo проходят ваш пароль на sudo . Попробуйте запустить их в терминале с вариантом - Debug :

gksu --debug gedit

Вы заметите, что они запускают Sudo с опцией -H (а также Как -U и -P -P для имени пользователя / пароля и -S , чтобы избежать терминала).

Следовательно, вам действительно нужно использовать Sudo -H вместо ГККСУ или ГКККУДО .

3
28.01.2020, 02:28

Теги

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