Я хотел бы изменить это так, мой пароль никогда не видим. Метод должен был бы работать автономный и в сценариях.
echo fake | sudo -S thunar
От Вашего вопроса не ясно, под чем Вы подразумеваете "никогда не видимый". Где-нибудь пароль должен быть сохранен, если Вы не хотите вводить его. Но можно сделать это невидимым для командной строки.
Создайте файл со своим паролем: ~/.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
(Измените имя пользователя на свое фактическое имя пользователя),
Ответ @RoVo уже ответил на Ваш вопрос о том, как передать пароль sudo -S
но я хотел бы сфокусироваться на чистом sudo
решение.
Это имеет некоторые преимущества, по-моему:
~/.userpass
соответственно.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
.