Вам необходимо проверить принадлежность группы к этому каталогу, убедитесь, что ваш username
добавлен в эту группу, которая имеет права на запись для всех файлов в пути:
chmod -R g+w /var/www/
Что касается второгоВ ответ на ваш вопрос, sudo
может прочитать пароль из стандартного ввода, используя флаг -S
, который может быть включен в ваш скрипт.Вот пример:
$ echo "password" | sudo -S <command>
Быстрый просмотр страницы man sudo
:
-S, --stdin
Запишите подсказку к стандартной ошибке и прочитайте пароль из стандартного ввода вместо использования терминального устройства.За паролем должен следовать символ новой строки.
Другой способ сделать это (который также должен быть добавлен в ваш скрипт):
sudo -S <<< "password" command
Другой подход заключается вотключите запрос пароля, отредактировав файл sudoers
с помощью команды visudo
и добавив следующую строку:
username ALL=(ALL) NOPASSWD: ALL
Приведенная выше строка позволит username
выполнять все команды (последняя ALL
)под любым пользователем без запроса пароля.
Безопасный и более ограниченный способ сделать это - использовать:
username ALL=(ALL) NOPASSWD: /usr/bin/python myscript.py
На этот раз мы ограничили username
для этого типавыполнения, но для одной команды /usr/bin/python myscript.py
.
Я также предпочел бы тщательно проверить разрешения и протестировать эти команды непосредственно из оболочки, прежде чем использовать их в скрипте Python.Это может сэкономить вам много времени на устранение неисправностей.