Передайте дешифрованный пароль по каналу для управления

Я хотел бы изменить это так, мой пароль никогда не видим. Метод должен был бы работать автономный и в сценариях.

echo fake | sudo -S thunar
0
задан 20 August 2018 в 22:34

2 ответа

От Вашего вопроса не ясно, под чем Вы подразумеваете "никогда не видимый". Где-нибудь пароль должен быть сохранен, если Вы не хотите вводить его. Но можно сделать это невидимым для командной строки.

Создайте файл со своим паролем: ~/.userpass

userpass="fake"

Сделайте его только видимым Вам:

chmod 600 ~/.userpass
#or 400 to make it readonly

Затем можно выполнить команды как это:

source ~/.userpass # once per session
echo "$userpass" | sudo -S thunar

С другой стороны, можно отредактировать Ваш sudoers файл для предоставления доступа без пароля через sudo ко всем или определенным командам.

sudo visudo    

и добавьте следующую строку в конец файла:

username ALL = (ALL) NOPASSWD:ALL

или

username ALL = NOPASSWD: /usr/bin/thunar

(Измените имя пользователя на свое фактическое имя пользователя),

3
ответ дан 28 October 2019 в 02:53

Ответ @RoVo уже ответил на Ваш вопрос о том, как передать пароль sudo -S но я хотел бы сфокусироваться на чистом sudo решение.

Это имеет некоторые преимущества, по-моему:

  1. Вы не должны поддерживать файл со своим паролем в виде открытого текста. В случае, если Вы изменяете свой пароль, необходимо было бы также изменить файл ~/.userpass соответственно.
  2. Пользователь root видьте свой пароль или в Вашей среде или простым изданием cat ~fixit/.userpass. Хотя root не будет нуждаться в Вашем пароле, чтобы сделать что-то от Вашего имени (как он может всегда делать su - fixit или sudo -u fixit -i), это не могло бы быть желательно это root знает это. Это зависит от Вашего пароля, но если это - что-то как ubuntu-Ak5"l,$7sH затем он мог бы предположить Ваш Amazon или пароль онлайна - банкинга.

Однако я предлагаю то, что уже было предложено: запись для sudo – но немного отличающийся:

Я предлагаю поместить файл в каталог /etc/sudoers.d/ вместо того, чтобы непосредственно управлять файлом /etc/sudoers. Последняя строка в /etc/sudoers чтения

#includedir /etc/sudoers.d

Хотя это похоже на комментарий из-за продвижения #, это не. Это - исключение к обычным комментариям. Эта директива означает что все файлы ниже /etc/sudoers.d будет также рассмотрен когда sudo делает его работу. Посмотрите /etc/sudoers.d/README для получения дальнейшей информации.

Чтобы быть полностью пуленепробиваемыми, Вам нужны два окна терминала: Один как пользователь root и один как пользователь fixit (Я просто предполагаю, что это - Ваше имя пользователя). Откройте два окна терминала. В первом типе окна

sudo -i

и введите свой пароль. Теперь у Вас есть корневая оболочка, чтобы отредактировать материал sudoers и откатывать в случае, если что-то идет не так, как надо.

В первом типе окна

cd /etc/sudoers.d
visudo -f fixit

Это откроет редактора (часто nano) с файлом fixit. Имя не имеет значения, пока оно не содержит точку (так не используйте, например. fixit.sudo). Добавьте строку

fixit ALL = NOPASSWD: /usr/bin/thunar

в тот файл и сохраняют его. Преимущество использования visudo вместо постоянного редактора это visudo проверит файл на синтаксис и откажется сохранить уродливый файл. Кроме того, это установит полномочия файла правильно. Сохраните это первое окно открытым!

Теперь перейдите к своему второму окну и попытке (как пользователь fixit)

sudo thunar

Это должно работать, не прося пароль. В противном случае переключитесь назад на первое окно (который Вы сохранили открытыми с корневой оболочкой для точно этой цели), и любая фиксация файл /etc/sudoers.d/fixit или просто удалите файл и начните заново.

Если Вы хотите добавить больше команд к /etc/sudoers.d/fixit, просто добавьте больше строк (или разделенный запятыми список команд):

fixit ALL = NOPASSWD: /usr/bin/thunar
fixit ALL = NOPASSWD: /usr/bin/othercommand
fixit ALL = NOPASSWD: /usr/bin/3rd_command, /usr/bin/4th_command, \
                      /usr/bin/5th_command_in_another_line

Этот подход имеет некоторые преимущества, по-моему:

  • Вы не должны даже касаться заводских настроек в /etc/sudoers (так никакие проблемы, когда обновление ОС происходит).
  • Можно нести Ваш /etc/sudoers.d/fixit файл к различным компьютерам путем простого копирования его там.
  • Можно легко отменить изменения путем удаления файла. Или переименуйте его так, чтобы это содержало точку, потому что файлы с точками в их имени файла проигнорированы include механизм, например, к fixit.bak или fixit.disabled.
0
ответ дан 28 October 2019 в 02:53

Другие вопросы по тегам:

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