Я знаю, что это старый пост, но более быстрый способ удаления областей - это команда:
apt-get remove unity-scope-* unity-scope-home+
Удаляет все те, которые не требуются для Ubuntu, и оставляет одно то есть (проверено с 16.04).
Альтернативой подходу Rinzwind является следующее:
Напишите сценарий, который обертывает привилегированную команду, например. g.,#!/bin/sh
set -eu
input="$1"
output="$2"
exec /path/to/data-analysis-program [OPTIONS...] "$input" "$output"
Сохраните его как, скажем, /other/path/to-data-analysis-wrapper.sh и сделайте его исполняемым: chmod +x /other/path/to-data-analysis-wrapper.sh
Проверьте, что сценарий оболочки выполняет то, что вы хотите: sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
Передайте право собственности на файл пользователю, который делает его неприемлемым пользователю, владеющему процессом веб-сервера, e. г. root: sudo chown root /other/path/to-data-analysis-wrapper.sh
Настроить sudoers, чтобы разрешить выполнение скрипта пользователем, которому принадлежит процесс веб-сервера, с повышенными привилегиями. См. Как выполнять определенные команды sudo без пароля? как это сделать в целом и использовать следующее правило (или настроить его по своему усмотрению): www-data ALL = (root) NOPASSWD: /other/path/to-data-analysis-wrapper.sh *
Теперь вы можете выполнить sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE> из сценариев CGI, работающих от имени веб-сервера. Еще лучший подход - это настроить процессы анализа данных таким образом, чтобы не требовать привилегий суперпользователя. Если это касается только числа хруста, а не о привилегированном доступе к системе или оборудованию, тогда это должно быть относительно простым способом. Пожалуйста, откройте новый вопрос и более подробно расскажите о ситуации, если вы хотите спуститься по этой дороге.
Нет, это неправильный подход. Я бы примерно сделал это следующим образом:
Храните данные с веб-сайта на сервере в базе данных или в виде текстового файла. Используйте сценарий (службу или наблюдатель каталога в /etc/crontab) на сервере, где вы заполняете файл в базе данных или создаете текстовый файл с данными из этого текстового файла, чтобы веб-страница забирала эти новые данные после того, как вы манипулировали данные для получения желаемых результатов.Подход базы данных лучше, но немного больше. Хорошо спроектированная база данных заставляет вас проверять данные и упрощает манипуляции с данными. Вы можете использовать «процедуру» в MySQL для управления данными. Сбрасывание текстового файла проще, но проверка и манипулирование текстовым файлом может быть сложной задачей.
Альтернативой подходу Rinzwind является следующее:
Напишите сценарий, который обертывает привилегированную команду, например. g.,#!/bin/sh
set -eu
input="$1"
output="$2"
exec /path/to/data-analysis-program [OPTIONS...] "$input" "$output"
Сохраните его как, скажем, /other/path/to-data-analysis-wrapper.sh и сделайте его исполняемым: chmod +x /other/path/to-data-analysis-wrapper.sh
Проверьте, что сценарий оболочки выполняет то, что вы хотите: sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
Передайте право собственности на файл пользователю, который делает его неприемлемым пользователю, владеющему процессом веб-сервера, e. г. root: sudo chown root /other/path/to-data-analysis-wrapper.sh
Настроить sudoers, чтобы разрешить выполнение скрипта пользователем, которому принадлежит процесс веб-сервера, с повышенными привилегиями. См. Как выполнять определенные команды sudo без пароля? как это сделать в целом и использовать следующее правило (или настроить его по своему усмотрению): www-data ALL = (root) NOPASSWD: /other/path/to-data-analysis-wrapper.sh *
Теперь вы можете выполнить sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE> из сценариев CGI, работающих от имени веб-сервера. Еще лучший подход - это настроить процессы анализа данных таким образом, чтобы не требовать привилегий суперпользователя. Если это касается только числа хруста, а не о привилегированном доступе к системе или оборудованию, тогда это должно быть относительно простым способом. Пожалуйста, откройте новый вопрос и более подробно расскажите о ситуации, если вы хотите спуститься по этой дороге.
Нет, это неправильный подход. Я бы примерно сделал это следующим образом:
Храните данные с веб-сайта на сервере в базе данных или в виде текстового файла. Используйте сценарий (службу или наблюдатель каталога в /etc/crontab) на сервере, где вы заполняете файл в базе данных или создаете текстовый файл с данными из этого текстового файла, чтобы веб-страница забирала эти новые данные после того, как вы манипулировали данные для получения желаемых результатов.Подход базы данных лучше, но немного больше. Хорошо спроектированная база данных заставляет вас проверять данные и упрощает манипуляции с данными. Вы можете использовать «процедуру» в MySQL для управления данными. Сбрасывание текстового файла проще, но проверка и манипулирование текстовым файлом может быть сложной задачей.