Есть ли способ установить php под Apache для создания папок с папкой, принадлежащей владельцу программы, которая создает его вместо того, чтобы быть владельцем apache?
Используя слово press, он создает новые папки для загрузки, но они принадлежат apache.apache, а не сайту, на котором они запущены. Это также происходит с использованием прошивок. На данный момент мы имеем SSH на сервере и chmod в папке, но казалось бы, что есть где-то переопределить право собственности за пределами любой программы, которая это делает.
Safe_mode
включается на вашем сервере. Функция mkdir()
создает папку с владельцем («apache», «none», ..), которая отличается от текущего владельца скрипта. И скрипты не могли загружать (перемещать, копировать) файлы в эту папку с другим владельцем (это не похоже на владельца текущего скрипта).
Отключите safe_mode
и это будет работать.
Подробнее см. http://php.net/manual/en/features.safe-mode.php .
PS С помощью safe_mode
вы не можете использовать функцию chmod()
в php.
Другой способ – поместить пользователя apache и пользователей-клиентов в новую группу. Дополнительно каталог должен использовать SGI с липким битом, чтобы каждый новый файл получил групповое присвоение этой новой группе. Таким образом, веб-сервер и «пользователи пользователей» могут без проблем работать с файлами
[17:57] progman@proglap /tmp/test $ ls -al /tmp/test total 9 drwxrwsr-x 2 root users 48 Apr 1 17:55 . drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Как вы видите, каталог получил бит SGID
а владелец – группа пользователей, в которой я ( progman
). Нет, если другой пользователь добавляет файл, группа автоматически получает эту группу
[17:55] proglap ~ # touch /tmp/test/x
Это выполняется от root. Теперь мы получаем:
[17:57] progman@proglap /tmp/test $ ls -la /tmp/test total 9 drwxrwsr-x 2 root users 72 Apr 1 17:59 . drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. -rw-r--r-- 1 root users 0 Apr 1 17:59 x
Как видите, добавленный файл от root, но группа настроена на users
и таким образом я могу удалить его
[18:00] progman@proglap /tmp/test $ rm x rm: remove write-protected regular empty file `x'? y [18:01] progman@proglap /tmp/test $ ls -la /tmp/test total 9 drwxrwsr-x 2 root users 48 Apr 1 18:01 . drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Имейте в виду, что вам все равно нужно изменить chmod
если вы хотите отредактировать файл, так как rw-r--r--
– это просто доступ к группе для чтения . Но изменение chmod
, возможно, даже работа с umask
, лучше, чем использование root-доступа и использования chown
.
Не прямо, нет. Вы не можете «отдать» владение файлом другому пользователю, если только вы не root. Вы можете исследовать с помощью директивы apache « AssignUserID », чтобы заставить этого конкретного vhost работать как конкретный пользователь / группа. При этом Apache / PHP создаст любые файлы с соответствующим правом собственности
Проверьте функцию PHP chown ()