Существует ли способ установить php, работающий под апачем для создания папок с папкой, принадлежавшей владельцу программы, которая создает его вместо того, чтобы принадлежать апачу?
Используя нажатие слова это создает новые папки для загрузки в, но они принадлежат apache.apache а не сайту, в котором они работают. Это также происходит с помощью ostickets. На данный момент у нас есть к SSH в сервер и chmod папка, но казалось бы, что будет установка где-нибудь для переопределения владения за пределами любой программы, которая делает это.
Safe_mode
включен на вашем сервере. Функция mkdir ()
создает папку с владельцем («apache», «none», ..), который отличается от текущего владельца скрипта. И скрипты не могли загружать (перемещать, копировать) файлы в эту папку с другим владельцем (это не похоже на текущего владельца скрипта).
Отключите safe_mode
, и это будет работать.
Подробнее см. http://php.net/manual/en/features.safe-mode.php .
P.S. С включением safe_mode
вы не можете использовать функцию chmod ()
в php.
Не напрямую, нет. Вы не можете «передать» право собственности на файл другому пользователю, если вы не являетесь пользователем root. Вы можете исследовать использование директивы apache « AssignUserID », чтобы заставить этот конкретный виртуальный хост запускаться от имени определенного пользователя / группы. При этом Apache / PHP будет создавать любые файлы с соответствующими правами собственности
Другой способ - поместить пользователя apache и «пользователей-клиентов» в новую группу. Дополнительно каталог должен использовать липкий бит SGID
, чтобы каждый новый файл получил групповое назначение для этой новой группы. Таким образом, веб-сервер и «пользователи-клиенты» могут работать с файлами без каких-либо проблем
[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
, а владельцем является группа «пользователи», в которой я ( прогман
) утра. Нет, если другой пользователь добавляет файл, группа автоматически попадает в эту группу
[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, но группа настроена на пользователей
, и таким образом я могу удалить его
[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
.