1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Автоматический CHMOD

Тема в разделе "Web Coding", создана пользователем kauh, 29 мар 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. kauh

    kauh Создатель

    Регистр.:
    12 мар 2007
    Сообщения:
    39
    Симпатии:
    75
    Недавно сталкнулся с такой проблемой: на серваке дохренища файлов и папок, права доступа у всех разные.
    в фтп менеджере задолбаешься сам выставлять нужные права. надо чтобы какой нить скрипт или программа автоматически поставила в нужной директории разные права доступа для файлов и папок(они должны быть разные). Проблема в том что нет доступа по ssh!
    Может кто посоветует какой скрипт или программу для этого! а то уже горю по срокам, надо быстрее делать, а ручками это не реально!!!
    на серваке крутиться freebsd
     
  2. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Код:
    <?php
    $chmod = shell_exec("chmod 0755 *");
    $chuser = shell_exec("chown <имя юзера> *");
    $chgrp = shell_exec("chgrp <имя группы> *");
    ?>
    
    А вообще кури мануалы :
    http://ru.php.net/shell_exec
    http://ru.php.net/chown
     
    kauh нравится это.
  3. yakodzun

    yakodzun Прохожие

    вообще-то
    chmod -R 0755 folder
    сделает все рекурсивно
     
  4. mp3debuger

    mp3debuger

    Регистр.:
    27 дек 2006
    Сообщения:
    184
    Симпатии:
    105
    Только главное не переусердствовать с правами - ИМХО все-таки лучше ручками и только там где нужно, совсем не везде нужно ставить 755.
     
  5. kauh

    kauh Создатель

    Регистр.:
    12 мар 2007
    Сообщения:
    39
    Симпатии:
    75
    admLoki, senks :)
    а так будет работать? А как отдельно сделать для папок?
    Для файлов вроде как в коде внизу, а вот как права для папок поставить отдельно?
    Код:
    <?php
    $file_name= "*";
    $path = "/var/www/html/test/" . $file_name ;
    $chmod = shell_exec("chmod 0755");;
    chown($path, $chmod);
    ?>
     
  6. yakodzun

    yakodzun Прохожие

    php.net/chmod
    php.net/chown
    про chown думаю можно забыть, никто вам не даст менять владельца
     
  7. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Неа не будет работать. Вот так будет
    Код:
    <?php
    $file_name= "*";
    $path = "/var/www/html/test/" . $file_name ;
    chmod($path, 0755");
    $owner = 'vasya';
    chown($path, $owner);
    ?>
    Если нужно рекурсивно, для файлов
    shell_exec("find /path/to/dir -type f -exec chmod 0755 '{}' \;");

    для подкаталогов
    shell_exec("find /path/to/dir -type d -exec chmod 0755 '{}' \;");
     
    kauh нравится это.
  8. kauh

    kauh Создатель

    Регистр.:
    12 мар 2007
    Сообщения:
    39
    Симпатии:
    75
    товаресчи красавчеги нашел еще одно решение своей проблемы. это FlashFXP, там мона отдельно ставить права как для папок так и для файлов!
    Фсем спосиба :yahoo:
     
  9. r00t

    r00t

    Регистр.:
    30 июл 2006
    Сообщения:
    192
    Симпатии:
    65
    Могу предложить еще один вариант.
    Создаешь файлик script.sh
    Код:
    #!/bin/sh
    echo Changing perms to system sites:
    BASEDIR="/home/www"
    SITES="main-site main-ssl-site ts-site"
    chown pseudo:www-data $BASEDIR
    chmod 750 $BASEDIR
    
    for SITE in $SITES; do
    HOMEDIR=$BASEDIR/$SITE
    
    echo "$HOMEDIR"
    chown pseudo:www-data $HOMEDIR
    chmod 750 $HOMEDIR
    
    echo "$HOMEDIR/htdocs"
    chown pseudo:staff $HOMEDIR/htdocs
    chmod 775 $HOMEDIR/htdocs
    
    echo "$HOMEDIR/log"
    chown pseudo:www-data $HOMEDIR/log
    chmod 755 $HOMEDIR/log
    
    done;
    
    Тут только для папок но при желании можно подредактировать и для файлов.
     
    kauh нравится это.
Статус темы:
Закрыта.