Это лаконично и надежно:
# Read common vars from common.vars
# the incantation here ensures (by env) that only key=value pairs are present
# then declare-ing the result puts those vars in our environment
declare $(env -i `cat common.vars`)
-i
гарантирует, что вы получите только переменные изcommon.vars
Обновление :Иллюстрацией безопасности является то, что
env -i 'touch evil1 foo=omg boo=$(touch evil2)'
Файлы с измененными данными не создаются. Протестировано на Mac с bash, т.е. с использованием bsd env.
Я думаю, вы не являетесь администратором этого сервера, и администратор настроил это для повышения безопасности. Если вы являетесь администратором, вы можете выполнить следующие шаги, иначе вы можете напрямую попросить администратора внести изменения.
Так что же делать?:
Если вас попросят ввести ПАРОЛЬ пользователя:
1 -Получите ваше имя пользователя и идентификатор группы (gid):
id
2 -Проверить файл конфигурации sudo:
grep <username> /etc/sudoers
grep <gid> /etc/sudoers
Вы должны увидеть запись для группы, если строка начинается с % ; иначе запись для вашего имени пользователя без символа %:
%<gid> ALL=(ALL) ALL
Запустите visudo для редактирования /etc/sudoers:
visudo
Теперь вы должны добавить(NOPASSWD :), чтобы sudo не запрашивал ваш пароль пользователя:
%<gid> ALL=(ALL) NOPASSWD: ALL
Если вас попросят ввести ПАРОЛЬ root:Запустите visudo для редактирования /etc/sudoers:
visudo
Удалите указанную выше строку, чтобы отключить флаг rootpw в файле /etc/sudoers, чтобы вам не предлагалось вводить пароль root:
Defaults rootpw