Apache запускает сценарии php от имени пользователя nobody, cron запускает сценарии php от имени пользователя

Моя настройка cpanel по умолчанию запускает apache от имени пользователя «никто». Поэтому, когда я запускаю php-скрипт через браузер, который выводит файл, этот файл не принадлежит никому: никто. Когда я запускаю сценарий из задания cron, зарегистрированного как пользователь «fred», выходные файлы принадлежат fred: fred. Мне нужно, чтобы браузер и cron перезаписали один и тот же файл. У меня проблема в том, что если один «пользователь» создает файл, другой не может его перезаписать. Не могли бы вы сообщить мне, в чем заключается основная проблема и каково ее возможное решение. Разрешения на файлы - 0775.

  • Нужно ли мне создавать группы - добавлять пользователя в одну группу с никем? Если да, то как?
  • Как мне запустить задание cron от имени пользователя nobody?

Большое спасибо, Ллойд


person hfuhruhurr    schedule 08.03.2013    source источник
comment
superuser.com/questions/170866/   -  person AmazingDreams    schedule 08.03.2013


Ответы (2)


Попробуйте ввести код после изменения разрешения файла на 0777. Но это создает угрозу безопасности, так как любой может редактировать ваш файл.

У меня есть логика, которую вам нужно реализовать, чтобы:

  1. Создайте сценарий оболочки, который копирует содержимое временного файла в ваш фактический файл.
  2. Из PHP вам нужно обновить только временный файл, и Shell сможет его прочитать, поскольку временный файл будет иметь разрешение на чтение для всех.
  3. Используйте команду ssh2_exec для выполнения сценария оболочки с вашим именем пользователя и паролем Linux.

Для руководства по ssh2_exec перейдите по этой ссылке: http://php.net/manual/en/function.ssh2-exec.php

Надеюсь, это решит вашу проблему.

person Nitesh Gupta    schedule 08.03.2013
comment
Спасибо, но разве это не создает проблем с безопасностью, поскольку я буду создавать файл с разрешением на запись для всех? - person hfuhruhurr; 08.03.2013
comment
Привет, Нитеш, я не думаю, что хочу помещать пароль root для моего сервера в сценарий оболочки - это не подходит для меня. Я все еще ищу ответ - есть ли способ запустить задание cron как никто? - person hfuhruhurr; 11.03.2013

Хорошо, моим решением было создать crontab для пользователя «nobody». У меня есть стандартная установка cpanel, поэтому я пошел в / var / spool / cron создал запись для никого. Запустите crontab -e, чтобы отредактировать и установить. Теперь php работает как никто в задании cron точно так же, как если бы через браузер. Все записанные файлы никому не принадлежат только с правами rw никому.

person hfuhruhurr    schedule 13.03.2013