CHMOD каталог Linux с использованием PHP на сервере Apache - PullRequest
0 голосов
/ 10 марта 2010

Кто-нибудь когда-либо использовал PHP (проверенный и успешный) для CHMOD каталога через веб-браузер?

Мои контрольно-пропускные пункты: (а) PHP-скрипт запускается как «никто» из браузера (б) каталог выше того, который я хочу, чтобы CHMOD принадлежал пользователю ftp, и «никто» не имеет разрешения на запись в него

Поэтому, когда я пытаюсь chmod 0666 / usr / www / dirOwnedbyFTPuser / dirIamTringToCHMOD / , я получаю отказано в разрешении

Если вы когда-либо писали и успешно запускали скрипт для этого, можете поделиться со мной фрагментом кода? Спасибо ... занимаюсь этим уже несколько месяцев.

Ответы [ 3 ]

1 голос
/ 10 марта 2010

Да, это можно сделать через php. Обычные правила разрешений linux применяются, однако, так как вы ищете сценарии chmod, не принадлежащие пользователю apache (никто), а пользователь apache не имеет разрешений на запись, тогда один метод - дать разрешение apache на использование sudo

Будьте осторожны - это потенциально огромная дыра в безопасности !!!

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

sudo visudo

Затем вам нужно добавить строку для вашего пользователя "nobody". Вы можете ограничить разрешения sudo определенным сценарием или папкой, поэтому я бы порекомендовал написать сценарий оболочки для изменения разрешений, а затем поместить его в папку отдельно от любых других сценариев. В этом случае apache не имеет полных привилегий root в вашей системе (что довольно страшно). Вы также можете поместить некоторый код в сценарий оболочки, чтобы ограничить, какие файлы могут быть изменены.

Вам также нужно разрешить apache sudo без пароля, поскольку у вас нет возможности ввести пароль через php. Поэтому строка, которую вы бы добавили, выглядит примерно так:

nobody ALL=(ALL)NOPASSWD:/path/to/my/script

Тогда в php вы просто добавляете команду к команде sudo

passthru ("sudo /path/to/my/script ...");

(есть несколько других функций, которые вы можете использовать вместо passthru (), это было только первое, что пришло в голову)

Как я уже говорил, это потенциально очень опасно, и хотя вышеприведенное сработает, раньше я использовал его только в своей собственной частной системе, а не на общедоступном производственном сервере. Я уверен, что многие люди будут комментировать безопасность этого, поэтому мне было бы интересно услышать, какие другие потенциальные подводные камни и дыры в безопасности могут быть с этим методом. Я знаю, что подобное можно сделать с помощью SuExec, но я не очень знаком с ним, поэтому, если у кого-то есть плюсы или минусы SuExec по этому методу, мне было бы интересно их услышать.

Последнее замечание: я бы изменил пользователя apache с никем на что-то вроде «apache» или «www» - возможно, просто глупо, но мне не нравится идея давать права root пользователю, называемому никем !!!

Надеюсь, это поможет!

1 голос
/ 10 марта 2010

Да, вы можете chmod из php через веб-браузер. (да, мы все знаем, что это может быть плохой идеей) ..

Но - вы можете использовать только те chmod-файлы, которые есть у php-скрипта! если ваш веб-сервер работает под PHP, как никто, вы можете chmod любые файлы, принадлежащие "nobody" ...

0 голосов
/ 10 марта 2010

http://www.php.net/ftp Вы могли бы войти в систему как пользователь ftp и сделать это.

...