2012-01-05 5 views
1

Обновление: оказывается проблема сложнее, чем я изначально думал. Я одновременно пытался устранить неполадку, почему мой mkdir перестала работать, и это произошло потому, что я вручную изменил разрешения родительского каталога для тестирования, затем переключил их обратно и добавил сценарий chmod к сценарию, который не работает, поскольку тот выполняется в apache а не я. Я буду задавать новый вопрос с большей проблемой, так как я думаю, что добавление всего этого в это станет запутанным.chown in scripts


Я лаборант в моем университете, и я переписывал сценарий они предоставляют для загрузки заданий, потому что у них есть одна старые и глючный. Вместо того, чтобы модифицировать существующий скрипт (написанный на python), я писал его с нуля в php.

Я столкнулся с проблемой, когда кажется, что chown не работает. Скрипты php запускаются под пользователем apache. Я не уверен, что этот пользователь «priveleged» или нет, но оригинальный скрипт используется chown.

Могу ли я предположить, что поэтому apache должен обладать необходимыми полномочиями и что моя проблема лежит в другом месте или это ошибочная логика?


Этот сервер является университетом, и они не позволят мне внести какие-либо изменения в конфигурацию. Я верю, что это CentOS, что они работают. Нет сообщения об ошибке. Я только заметил, что могу сделать файл chmod и изменить разрешения, но команда chown на следующей строке, похоже, не имеет никакого эффекта.

ls -al на старых сценариев показывают:

-rwxr-xr-x 1 mattw labstaff 5067 Sep 1 17:52 File_Upload.cgi 

Не похоже на УИП немного дальше.

Стефан упомянул «У пользователя apache, скорее всего, недостаточно прав для хранения файла/папки, в котором он не принадлежит». Каталог, в котором я пытаюсь установить chown, был создан только с mkdir, поэтому он должен принадлежать apache. Должно ли chown работать независимо от привилегии, если у вас уже есть файл?

ответ

2

Apache, вероятно, не имеет привилегий для этого. Это зависит от того, в какой среде он работает. Вы сказали, что apache работает под пользователем apache, поэтому я просто предполагаю, что это RHEL или вариант RHEL, такой как Centos.

Вы можете отредактировать файл sudoers (с visudo) и предоставить apache возможность sudo без пароля в определенном каталоге. Имейте в виду, что это не рекомендуется, если вы очень осведомлены о безопасности.

Добавление что-то вроде

апача ALL = NOPASSWD:/bin/Чаун 1 [1-9] [0-9] [0-9] \: 1 [1-9] [0-9] [ 0-9]/var/www/[a-zA-Z0-9] *

Возможно, вы сможете добавить apache в другую группу или другого пользователя в группу apache или что-то вроде этого и chmodding it вместо 0775 или 0664.

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

1

Если старый скрипт запускается на апача пользователя, но в состоянии выполнить chown может иметь setuid немного на, чтобы позволить ему работать с повышенными привилегиями. В этом случае ваше предположение было бы неправильным.

Пожалуйста, напишите вывод ls -al /path/to/script, чтобы подтвердить это. Он должен показать root своим владельцем и s в своем режиме.

Чтобы включить режим setuid для нового скрипта, chmod u+s. Помните, что это может иметь серьезные последствия для безопасности. В частности, никогда не оставляйте скрипт setuid или двоичную запись.

1

У пользователя apache, скорее всего, недостаточно прав для хранения файла/папки, в котором он не принадлежит, вы можете предоставить apache больше прав, однако это может стать проблемой безопасности.