- передать пароль в терминал linux из скрипта
- 2 ответа 2
- Понимание, почему терминал не позволяет вводить пароль
- Пароли терминала не отображаются при вводе в качестве меры безопасности, все равно введите пароль, когда его запросят, и нажмите return.
- Решение проблем со вводом пароля в «Терминале» Ubuntu
- Решаем проблему со вводом пароля в «Терминале» Ubuntu
- Пример ввода пароля sudo в терминале Ubuntu
- Добавление учетной записи в группу root
- Изменение настроек отображения пароля в «Терминале»
передать пароль в терминал linux из скрипта
как можно сделать так, чтобы пароль вводился автоматом из скрипта. P.S.: Данный код написан мной и для меня проблема безопасности не стоит.
Используйте expect , но можно разрешить безпарольный вызов из конфигурации sudo (почти как в ответе, но я бы ограничил только определённый набор команд, а не всё подряд).
2 ответа 2
Если вопрос стоит в том, чтобы не вводить пароль sudo , тогда нужно просто его настроить, для этого добавляется в файл /etc/sudoers строка:
Пароль больше не будет запрашиваться.
#!/bin/bash echo mYsuperPassWorD|sudo -S iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
Читайте хелпы и маны, они рулез!
$ sudo --help . Параметры: -A, --askpass использовать вспомогательную программу для ввода пароля -b, --background выполнить команду в фоновом режиме -B, --bell ring bell when prompting -C, --close-from=num закрыть все дескрипторы файлов >= num -E, --preserve-env сохранить пользовательское окружение при выполнении команды --preserve-env=list preserve specific environment variables -e, --edit редактировать файлы вместо выполнения команды -g, --group=group выполнить команду от имени или ID указанной группы -H, --set-home установить для переменной HOME домашний каталог указанного пользователя -h, --help показать справку и выйти -h, --host=host выполнить команду на узле (если поддерживается модулем) -i, --login запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду -K, --remove-timestamp полностью удалить файл timestamp -k, --reset-timestamp объявить недействительным файл timestamp -l, --list показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды -n, --non-interactive автономный режим без не вывода запросов пользователю -P, --preserve-groups сохранить вектор группы вместо установки целевой группы -p, --prompt=prompt использовать указанный запрос пароля -S, --stdin читать пароль из стандартного ввода .
Но лучше сразу запускать скрипт от рутового пользователя. Например из cron или юнита/таймера systemd.
Понимание, почему терминал не позволяет вводить пароль
Иногда вам нужно ввести пароль в терминал, обычно для команд sudo или su, что позволяет пользователям выполнять команду с привилегиями суперпользователя. Это довольно типично для разрешения доступа на чтение или изменение чего-либо, что в противном случае было бы невозможно со стандартной учетной записью пользователя. Обычно вы увидите, что sudo префикс другой команды, что-то вроде «sudo nano / etc / hosts». Хотя большая часть командной строки и sudo обычно подходит только для опытных пользователей, иногда более случайным пользователям компьютеров может потребоваться обратиться к Терминалу, возможно, для включения функции, изменения системного файла или даже для устранения неполадок. Для начинающих пользователей, которые попадают в командную строку, очень часто возникает вопрос о вводе паролей в Терминал, почти всегда связанный с sudo и очевидная невозможность ввести пароль в командную строку из Mac OS X (или Linux, если на то пошло).
Но вот в чем дело; Терминал делает позвольте вам ввести свой пароль, это просто не похоже. Курсор на экране не двигается, и нет индикатора, что пароль вообще вводится. Это сделано намеренно и служит механизмом безопасности, в отличие от ввода пароля в веб-форму или на стандартный экран входа в систему с графическим интерфейсом пользователя, который обычно маскируется звездочками, например ********, или маркерами, например ••••••• ••••••, отсутствие каких-либо индикаций является полностью преднамеренным, и нет такой индикации ввода паролей в командной строке. Причина довольно проста, она не дает указания на длину пароля, предлагая дальнейшую обфускацию ввода пароля.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Если это звучит запутанно, это совсем не так, вот как это работает на практике. Допустим, вы выполняете команду, требующую доступа sudo, в результате чего появляется знакомая запись «Пароль:».
% sudo cat /etc/secret.conf
Password:
Когда появится запрос Пароль:, все равно введите пароль, даже если ничего не отображается затем нажмите Return, когда закончите. Опять же, нет никаких указаний на то, что вводится пароль, и это сделано намеренно.
Итак, давайте снова пройдемся по предыдущему примеру команды, представив, что пароль администратора на этой конкретной машине — «Monkey123», вы должны ввести этот пароль в соответствии с его запросом, несмотря на то, что он вообще не отображается, что означает, что последовательность будет примерно такой:
% sudo cat /etc/secret.conf
Password: Monkey123 (hit Return key)
Это выполнит команду. И нет, Monkey123 (или какой-либо другой пароль администратора) не будет отображаться на экране, также как и звездочки или маркеры.
Чтобы быть на 100% абсолютно ясным:
Пароли терминала не отображаются при вводе в качестве меры безопасности, все равно введите пароль, когда его запросят, и нажмите return.
Ввод пароля и нажатие клавиши возврата отправит пароль для аутентификации, и, если пароль был введен правильно, команда будет выполняться должным образом.
Обычно пользователю достаточно испытать это один или два раза, чтобы понять, как это работает, но это остается большим вопросом для пользователей, которые только начинают знакомиться с командной строкой. А как только вы узнаете, вы можете передать знания другим, поэтому, если кто-то спросит вас: «Почему Терминал не позволяет мне ввести пароль?», Вы можете ответить и объяснить им это.
Для тех, кому интересно, да, это поведение по умолчанию можно изменить, чтобы отображать звездочки для каждого символа, введенного в качестве пароля в командной строке, для sudo, su или чего-то еще, что вы делаете. Тем не менее, вносить это изменение не рекомендуется, и мы не собираемся описывать это в этой конкретной статье… возможно, в будущем, если в этом появится интерес.
Что вы думаете об этой мере безопасности, которая скрывает длину пароля и ввод в Терминале? Долгое время это было стандартной практикой для мира unix, но считаете ли вы это полезным и на Mac? Сообщите нам свои мысли в комментариях ниже.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Решение проблем со вводом пароля в «Терминале» Ubuntu
Начинающие пользователи, только знакомящиеся с операционной системой Ubuntu, часто сталкиваются с возникновением самых разнообразных сложностей, о решении которых они никогда не слышали. Одной из них является ситуация, когда пароль в «Терминале» не вводится. В рамках сегодняшнего материала мы детально разберем эту тему и объясним, почему эта проблема заключается лишь в невнимательности юзеров.
Решаем проблему со вводом пароля в «Терминале» Ubuntu
Вся суть этой неполадки заключается в том, что при вводе ключа доступа для активации прав суперпользователя на экране не отображаются символы или звездочки, которые для многих являются показателем того, что символы действительно набираются. Это вызывает недоумение и заставляет обращаться к интернету, чтобы найти ответ на этот вопрос.
Сразу уточним, что по умолчанию в Ubuntu и других дистрибутивах Linux выставлены настройки безопасности, которые и отвечают за то, что при наборе пароля символы вводятся, но на экране не отображаются. То есть юзеру следует лишь набрать комбинацию и нажать на Enter, игнорируя пустоту в строке. Далее мы покажем пример выполнения этого, а также расскажем о полезных нюансах.
Пример ввода пароля sudo в терминале Ubuntu
Начнем разбор сегодняшней проблемы с демонстрации банального примера ввода пароля в консоли при выполнении определенных действий. Вы сможете ознакомиться с представленной инструкцией и скриншотами, чтобы убедиться в том, что подобное положение вещей — нормальное рабочее состояние операционной системы.
- Все начинается с запуска «Терминала». Сделать это можно, например, через меню приложений, кликнув левой кнопкой мыши по соответствующему значку.
- Здесь обычно вводится команда, в начале которой имеется опция sudo. Именно она отвечает за то, что осуществляться эта команда будет от имени суперпользователя, а значит, придется подтвердить подлинность путем ввода пароля. После написания команды нажмите на Enter.
Как видите, отсутствие отображения символов или звездочек — стандартное положение вещей, которое не является проблемой, а было разработано создателями в целях безопасности. Если же вы столкнулись с другой неполадкой или желаете изменить ситуацию, заставив выводиться символы в виде звездочек, изучите два следующих раздела сегодняшнего материала.
Добавление учетной записи в группу root
Некоторые юзеры при попытке выполнить команду с атрибутом sudo получают уведомление о том, что они не могут использовать учетную запись суперпользователя. Это значит, что администратор при создании нового профиля не учел этого или специально не внес учетную запись в группу root. Исправить данную ситуацию можно, но для этого потребуется зайти от имени пользователя, обладающего соответствующими привилегиями.
- Откройте список приложений и перейдите в «Параметры».
- Здесь вас интересует последняя строка «Сведения о системе».
- Воспользуйтесь панелью слева, чтобы выбрать раздел «Пользователи».
- Теперь вы можете быстро изучить список всех добавленных учетных записей, чтобы разобраться с тем, какие именно из них требуется внести в группу root.
- После запустите консоль и введите sudo usermod -a -G root user_name , где user_name — имя определенной ранее учетной записи.
- Подтвердите свои намерения, указав пароль от профиля суперпользователя.
После этого все изменения будут применены, а это значит, что вы в любой момент можете переключить учетную запись пользователя и смело задействовать команды, которые для подтверждения требуют ввода пароля root.
Изменение настроек отображения пароля в «Терминале»
Напоследок поговорим о том, как сделать так, чтобы при вводе пароля в консоли отображались звездочки. Это позволит быть начинающим пользователям более спокойными, убедившись в том, что символы набираются. Для осуществления подобных изменений вам также потребуется обладать правами привилегированной учетной записи.
- Откройте «Терминал» и напишите там sudo visudo .
- При появлении новой строки с просьбой ввести пароль сделайте это и нажмите на Enter.
- В отобразившемся документе отыщите Defaults env_reset и опуститесь к этой строке.
- Удалите содержимое строки или сделайте из него комментарий, поставив в начале знак решетки, а затем добавьте Defaults env_reset,pwfeedback .
- Сохраните изменения, используя горячую клавишу Ctrl + O.
- Изменять имя файла при этом не нужно, просто нажмите на Enter для подтверждения.
- По завершении можно выйти из текстового редактора, зажав Ctrl + X.
- Теперь убедитесь в том, что в строке появляются звездочки, запустив любую операцию с аргументом sudo.
Это все, что мы хотели рассказать о трудностях с вводом пароля в «Терминале» Ubuntu. Как видите, это не является проблемой, а возможные неприятности решаются путем банального изменения конфигурационных файлов. Используйте приведенные инструкции, чтобы создать оптимальную настройку и добавить все необходимые учетные записи в группу root.