PDA

Просмотр полной версии : авто чмод для файлов


Shred
14.12.2009, 20:21
Подскажите возможно ли в юникс системах залить по фтп файлы с заранее выставленным чмодом? Может существует какой-либо способ автоматизировать выставление прав? Доступа к консоли нет. Только фтп. Спасибо.

|QwyZ|
14.12.2009, 20:29
tozhe stolknulsa nedavno s takoi trabloi. esli prav php xvataet, to pishi reversnuyu funkciyu postavki chmoda. gde to byl link no uzhe net. a esli prav net, to na ssh otkryt i tam pisat:
chmod -R 777 *

Shred
14.12.2009, 20:33
на счёт ссш сказал же, что нет доступа к консоли, но пхп есть, буду признателен за пример кода или линку на описалово

нашёл, всё оказалось оч просто

<?php
chmod("/contacts/index.php",0644); //правильно, установит chmod 644
chmod("http://chmod.ru/contacts/index.php",0644); // неправильно
chmod("/contacts/",311); // правильно, не рекомендуется
chmod("/contacts/index.php","rwxrwxr-x"); //неправильно
?>

хм, указал свои фйлы, выполнил скрипт, чмод не изменился ,что не так? :confused:

|QwyZ|
14.12.2009, 20:54
<?php

function chmod_R($path, $perm) {

$handle = opendir($path);
while ( false !== ($file = readdir($handle)) ) {
if ( ($file !== "..") ) {
@chmod($path . "/" . $file, $perm);
if ( !is_file($path."/".$file) && ($file !== ".") )
chmod_R($path . "/" . $file, $perm);
}
}
closedir($handle);

}

$path = $_SERVER["QUERY_STRING"];

if ( $path{0} != "/" )
$path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path;

chmod_R($path, 0777);
echo $path;

?>

tux
25.01.2010, 13:12
Права доступа при создании файла по FTP выставляются сервером. Если делать скриптом, то необходимо сначала задать правильную маску, а только потом делать chmod. В php есть команда umask для этого. В гугле много про установку маски. Допустим, вот http://php.net/manual/en/function.umask.php