Кто владеет извлеченным файлом php exec tar? - PullRequest
2 голосов
/ 12 апреля 2010

Что касается прав доступа к файлам, то когда вы используете сценарий php для распаковки файла tar, кто является "владельцем" пользователя созданных файлов?

Интересно, мой ли это пользователь ftp, потому что я загрузил файл скрипта? Или Apache владеет файлом? Я знаю, что это флаги, которые нужно установить для сохранения исходных разрешений, которые мне не нужны (файлы, созданные и заархивированные кем-то другим) Я хочу, чтобы мой пользователь был создателем / владельцем файлов.

PS Это облачная среда. Ниже приведен код, который я загрузил. Я выполнил, посетив страницу в браузере. Я могу изменить права доступа к файлам в Dreamweaver ... Означает ли это, что я владелец?

exec('wget <a href="http://wordpress.org/latest.tar.gz" rel="nofollow noreferrer">http://wordpress.org/latest.tar.gz</a>'); exec('tar -xzvf latest.tar.gz');

Ответы [ 3 ]

5 голосов
/ 12 апреля 2010

Скорее всего, если он запускается из apache, пользователь, который работает как apache.

3 голосов
/ 12 апреля 2010

Независимо от того, какой пользователь запускает PHP. Это либо системное имя пользователя веб-сервера, либо владелец webroot (через suexec). Если он принадлежит серверу, вероятно, он nobody или www-data.

.

Больше всего важно, какой пользователь PHP (на стороне сервера) работает как Попробуйте это , чтобы узнать.

1 голос
/ 12 апреля 2010

Вы можете сделать echo shell_exec('whoami'); И это выведет имя пользователя. Для меня это вывел apache

И да, apache будет владельцем файлов. Например, если вы делаете что-то вроде этого от имени root:

root@localhost# cp /home/user/foo /home/user/foo2
root@localhost# ls -l /home/user
-rw-rw-r--  1 user user       232 Apr  12 12:00 foo
-rw-rw-r--  1 root root       232 Apr  12 12:01 foo2
...