При переносе данных, в частности сайтов, с хостинга на хостинг или между серверами может возникнуть необходимость сменить права доступа к файлам и/или папкам, а также, возможно, и владельца файлов. Не каждая панель управления, если она конечно есть, позволит это сделать.
В случае, если у Вас есть доступ к SSH на сервере, можно выполнить это простыми командами.
Для смены владельца:
chown -R userName:userGroup /путь/*
Для смены прав доступа к папкам:
find /path/to/files/ -type d -exec chmod 755 {} \;
и к файлам:
find /path/to/dirs/ -type f -exec chmod 644 {} \;
Но что делать, если доступа к ssh нет?
В этом случае можно использовать функции PHP exec или system — обе предназначены для выполнения команд, но нам больше подойдет exec в данном случае, так как мы не ожидаем возврата какого-то результата.
Скрипты будут выглядеть следующим образом:
<? exec("chown -R userName:userGroup /path/*"); ?>
По аналогии и для прав доступа (можно объединить в один)
<?
exec("find /path/ -type d -exec chmod 755 {} \;");
exec("find /path/ -type f -exec chmod 644 {} \;");
?>