Chmod на субдиректории.

Тема в разделе "Тех. вопросы", создана пользователем elcaste, 12 янв 2008.

Статус темы:
Закрыта.
  1. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Возможно ли одной коммандой поменять права сразу на все дерево или на папку с находящимися в ней папками/файлами?

    Спасибо.
     
  2. Yuryus

    Yuryus

    Регистр.:
    3 апр 2007
    Сообщения:
    383
    Симпатии:
    145
    В Никсах да - CHMOD


    В Тотал Коммандире - нет.
    Меняем права на папку. Если нужно на файлы, то выделяем файлы и меняем права.
    Телепаты уже отдыхают.
    Напиши в какой проге или ОСи, ты хочешь менять права.
     
  3. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    ОС FreeBSD. Просто если пишу chmod папка1 666, то 666 ставится только на папку1, а на папка1/папка3 права остаются те же, что и были до комманды :nezn: Сервак сейчас лежит, как запустится попробую -R.
     
  4. Wiltner

    Wiltner Постоялец

    Регистр.:
    4 дек 2007
    Сообщения:
    126
    Симпатии:
    27
    elcaste
    Опция -R тебе поможет для рекурсивного чмoда на папку и все что внутри.
    Надо писать chmod 666 папка1, а не chmod папка1 666. Иначе чмoд воспринимает параметр "папка1" как свой собственный аргумент.

    Yuryus
    А какая разница-то? :) В винде нету чмoда, а во всех *никс-осях везде одно и то же, потому что posix-стандарт един для всех.
     
    elcaste нравится это.
  5. andragor

    andragor Писатель

    Заблокирован
    Регистр.:
    12 янв 2008
    Сообщения:
    2
    Симпатии:
    0
    Вот видел такой скрипт для *никсов, автор может тебе пригодится.

    Создаешь файл chmod.php, вставляешь код, запускаешь .../chmod.php? и далее название директории. Какие нужны chmodы меняешь в самом скрипте.

    <?php
    function chmod_R($path, $perm) {

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

    $path = $_SERVER["QUERY_STRING"];

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

    chmod_R($path, 0777);
    chmod($path, 0777);
    echo $path;
    ?>
     
  6. Wiltner

    Wiltner Постоялец

    Регистр.:
    4 дек 2007
    Сообщения:
    126
    Симпатии:
    27
    Жесть. Такое может понадобиться только при полном отсутствии нормального шелла с условиями чрута веб-сервера и недоступности нормального бинарника chmod :).
     
  7. itex

    itex

    Регистр.:
    15 ноя 2007
    Сообщения:
    274
    Симпатии:
    64
    chmod -R 777 /tmp в тмп будет доступ у всех
     
  8. Wiltner

    Wiltner Постоялец

    Регистр.:
    4 дек 2007
    Сообщения:
    126
    Симпатии:
    27
    Во-первых, в /tmp по-дефолту итак права на запись всем. Для того эта папка и нужна. А если делать рекурсивный чмoд когда там уже что-то есть, вполне вероятно компрометирование информации и, как следствие, раскрытие конфиденциальных данных. Ведь, как известно, многие софтины хранят временные данные в /tmp с правильными правами (доступными только юзеру, запустившему приложение). И если софт запущен от рута и в /tmp есть какая-то важная инфа (раскрытие связки юзер/пасс, важные конфиги, etc.), тот, кому понадобится, может с легкостью просмотреть всю эту информацию. Поэтому не вздумайте вообще такое запускать. Головой думать надо.
     
Статус темы:
Закрыта.