когда нам нужно использовать sudo python xxx.py или просто python xxx.py или xxx.py - PullRequest
1 голос
/ 26 сентября 2010

Я написал сайт, что меня смутило, когда я запускаю сайт, сначала мне нужно запустить приложение, поэтому есть 3 способа:

  1. sudo python xxx.py
  2. python xxx.py
  3. xxx.py

Я не понял, как использовать каждый из них, метод NO.3, в настоящее время используемый на моем компьютере, нехорошо работать

1 Ответ

4 голосов
/ 26 сентября 2010

sudo запустит приложение с правами суперпользователя. Учитывая, что вы имеете в виду веб-сайт, это, безусловно, , а не , что вы хотите сделать. (Для веб-приложения, если для него требуются разрешения суперпользователя, оно не работает. Это слишком большая угроза безопасности, чтобы рассматривать ее на самом деле.)

При других обстоятельствах у вас может быть программа на python, которая выполняет какое-то обслуживание системы и требует запуска от имени пользователя root. В этом случае вы бы использовали sudo, но вы бы никогда не захотели бы сделать это для чего-то общедоступного и потенциально может быть использовано. На самом деле, для чего-либо, кроме тестирования, вы, вероятно, должны запускать веб-приложение как отдельный пользователь с очень ограниченным доступом (например, с установленной на /dev/null оболочкой, без доступа для чтения или записи к тому, что им не нужно, и т. Д.). ..).

Два других фактически идентичны (в терминах того, что они делают), но последний вариант (выполнение сценария напрямую) потребует:

  1. исполняемый бит, который нужно установить (включен unix-y системы) (например, chmod +x whatever.py)
  2. a shebang в первой строке (например, #! /usr/bin/python), указывающей на исполняемый Python, который вы хотите запускать вещи с помощью (опять же, это относится только к unix-y системам)

Вызов python для запуска кода (python whatever.py) и выполнение описанных выше действий (в результате получается скрипт, который можно вызвать напрямую с помощью whatever.py) сделать то же самое (при условии, что shebang в файле python указывает на тот же исполняемый файл python, что и "python", в любом случае ...)

...