За последние 24 часа нас посетили 22811 программистов и 1258 роботов. Сейчас ищут 702 программиста ...

Выполнение команд Linux на сервере...

Тема в разделе "Вопросы от блондинок", создана пользователем mvictorl, 12 окт 2007.

  1. mvictorl

    mvictorl Активный пользователь

    С нами с:
    12 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Я хотел бы написать страничку для управления парой сервисов на сервере под Linux.
    Мне для этого необходимо выполнять команды shell (естественно, НЕ от пользователя apache) и обрабатывать/отображать их вывод.

    Подскажите, пожалуйста, что посмотреть из документации или еще лучше -- какой-нибудь небольшой примерчик.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  4. mvictorl

    mvictorl Активный пользователь

    С нами с:
    12 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Кому интересно -- нашел хороший пример: программа PHPShell (http://mgeisler.net/php-shell), которая практически эмулирует консоль.

    Остался один нерешенный вопрос, как мне выполнить команды системы от root'а или же любого другого пользователя отличного от пользователя apache (я так понял, что php-скрипты выполняются с его правами)

    P.S. научившихся пользоваться командой "man" заранее благодарю и попрошу свой интеллект проявить в соседней ветке...
     
  5. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    mvictorl
    А почему бы не добавить пользователя в группу, которой разрешено выполнение нужных вам программ?
     
  6. mvictorl

    mvictorl Активный пользователь

    С нами с:
    12 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    С большой радостью,.. только какого пользователя?!
    И про какие группы мы говорим? -- Если про sudo'шные, то я просто этой программой никогда не пользовался (не было необходимости).
     
  7. mvictorl

    mvictorl Активный пользователь

    С нами с:
    12 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Вообще-то я ожидал чего-то большего от этого форума... :-(

    Я не хочу показаться наглым, но кусок такого элементарного кода (конечно же для того, кто это реально сам писал) выложить-то и некому!.. мда...
     
  8. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Того пользователя, от которого запускается Apache в вашей системе.

    Про стандартные группы в unix-системах.

    Никаких sudo'шных групп не существует. Все группы прописаны в /etc/groups. Пользователи в /etc/passwd. В /etc/passwd же лежит список групп для каждого пользователя, в которые он входит.

    Вообще, странно, все программы в /bin и /usr/bin доступны для выполнения вообще всем. Поэтому, почему
    я не понимаю.

    Если эти программы должны запускаться только от рута, то лучше создать специальную группу, в которую надо будет добавить пользователя, от которого запускается apache, а самим запускаемым программам сделать chgrp на новую группу.

    Это существенно лучше, чем давать права рута, поскольку таким образом вы не даете доступ ко всей, системе, а только к тем программам, что необходимо выполнять.

    Возможно, никто не решал этот вопрос через задницу.
     
  9. mvictorl

    mvictorl Активный пользователь

    С нами с:
    12 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Была мысль дать такой же рассширенный ответ, но понял, что смысла нет

    Через задницу давать пользователю, от которого запускается apache, какие-либо дополнительные права для решения прикладных задач (проще вообще от root'а уже запускать, но почему-то так никто не делает, правда? Не знаете -- почему?..)

    Пользователи и группы в sudo есть!.. (достаточно взглянуть на его конфигуратор)

    А лично я пришёл к мнению, что чем вытягивать что-то вразумительное из таких же чайников, как я, проще перенести все на IIS, полистать MSDN и спокойненько написать на ASP'е используя "человеческий" язык (C++/C#)...
    На www.gotdotnet.ru, например, дурацких советов не дают, людям не в лом помочь другому, даже если он только начинающий.

    Скорее всего благодаря именно такой "дружественной" поддержке "открытого" сообщества MS вас и уделает!
     
  10. Gamelot

    Gamelot Гость

    С нами с:
    8 мар 2020
    Сообщения:
    1
    Симпатии:
    0
    Билл Гейтс останется доволен таким исходом. mvictory, если включить мозги, почитать что делает команда sudo, и выключить детские обиды, раздражительность и максимализм, то решение найдется само собой. Язык php прекрасно работает под Линукс. Это как хлеб и масло. Час разработчика стоит 750р, вам никто ничего не обязан давать на халяву в этой жизни.


     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Самый здоровый подход в безопасности - пессимистический. То есть, запрещено всё, что не разрешено явно.

    Я не знаю деталей почему вам необходим shell, но в общем абстрактном случае я бы запретил shell пользователю вебсервера, вместо этого в веб-скрипте создавал бы какие-то задания для "консольного" воркера - из предопределенного списка классов-заданий. Аккаунт для консольного воркера может в shell, естественно. Его можно добавить в ту же группу, в которой трудится веб-сервер (www-data) чтобы проще было давать разрешение на запись обоим двум.

    Думаю это разумный компромисс между усложнением и безопасностью.
    --- Добавлено ---
    Гуглить сочетания слов PHP queue job permission

    Придумать простой и наглядный пример та ещё задачка :)

    Приходит на ум деплой из git по web hook. Там где я сам это настраиваю, я делаю обработчик хука максимально простым: он только делает touch() чтобы просигналить потребность в деплое. Веб скрипт сам не выполняет команд. В то же время есть консольный скрипт по расписанию, который при обнаружении файла-флажка начинает git pull и всё прочее. Аккаунт входит в группу www-data и везде настроен umask чтобы члены группы могли писать.