Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проверка лишних прав доступа к файлам и директориям


Recommended Posts

Этот скрипт поможет Вам найти директории и файлы, которым выставлены ненадлежащие права доступа.

<?php
error_reporting(E_ERROR | E_PARSE);
 $dir = '/usr/home/ВАШ_САЙТ/data/www/ВАШ_САЙТ.ru/';   // проверяемая директория сайта. меняем у кого свои пути!
class check_perms {
    function check_perms($curpath){
        if($curpath){
            if($dir = @dir($curpath)){
                while ($file = $dir-> read()){
                    if($file != "." && $file != ".."){
                        
                        $perms = substr(decoct(fileperms($curpath.$file)), 2);
                        
                        if(is_dir($curpath.$file)){// если есть поддиректории то продолжаем рекурсию
                            $this-> check_perms($curpath.$file."/");
                            
                            if($perms>775 || $perms<775){
                                if(!@chmod($curpath.$file, 0775)){
                                    $this->perms_d775 .= $curpath.$file."\n";
                                }
                            }
                        }else{// файл
                            
                            $ext = array_reverse(explode('.', $file));
                            
                            if($ext['0']=='php' && ($perms>775 || $perms<775)){
                                if(!@chmod($curpath.$file, 0775)){
                                    $this->perms_f775 .= $curpath.$file."\n";
                                }
                            }else if($ext['0']!='php' && ($perms>664 || $perms<664)){
                                if(!@chmod($curpath.$file, 0664)){
                                    $this->perms_f664 .= $curpath.$file."\n";
                                }
                            }
                        }
                        // пытаемся сменить группу
                        /*if($GLOBALS['group']){
                            $group = filegroup ($curpath.$file);
                            if($group!=$GLOBALS['group'] && !@chgrp($curpath.$file, $GLOBALS['group'])){
                                $this->group .= $curpath.$file."\n";
                            }
                        }
                        // пытаемся сменить владельца
                        if($GLOBALS['owner']){
                            $owner = fileowner ($curpath.$file);
                            if($owner!=$GLOBALS['owner'] && !@chown($curpath.$file, $GLOBALS['owner'])){
                                $this->owner .= $curpath.$file."\n";
                            }
                        }*/
                    }
                }
                $dir->close();
            }
        }
    }
}
$files_map = new check_perms($dir);
if($files_map->perms_d775){ echo 'Следующим директориям нужно выставить права доступа 0775:<pre>'.$files_map->perms_d775.'</pre>'; }
if($files_map->perms_f775){ echo 'Следующим файлам нужно выставить права доступа 0775:<pre>'.$files_map->perms_f775.'</pre>'; }
if($files_map->perms_f664){ echo 'Следующим файлам нужно выставить права доступа 0664:<pre>'.$files_map->perms_f664.'</pre>'; }
//if($files_map->group){ echo 'Следующим файлам нужно выставить права доступа 0664:<pre>'.$files_map->group.'</pre>'; }
//if($files_map->owner){ echo 'Следующим файлам нужно выставить права доступа 0664:<pre>'.$files_map->owner.'</pre>'; }
?>
Надіслати
Поділитися на інших сайтах

а я в интернете как-то нашел такой список папок на которые нужно выставить права 777,так и ставлю всегда,возможно он не правильный?На что вообще влияют эти права?

/config.php

/admin/config.php

/system/cache/

/system/logs/

/image/

/image/cache/

/image/data/

/download/

а как скриптом пользоваться,просто скопировать например в файл script.php и запустить на сайте вот так site.com/script.php ?

Надіслати
Поділитися на інших сайтах


...а как скриптом пользоваться,просто скопировать например в файл script.php и запустить на сайте вот так site.com/script.php ?

Да.
Надіслати
Поділитися на інших сайтах

В третье строке один раз пишу свой сайт без .ru заним уже свой сайт.ru., больше не чего не менял

Далее всё в оболочку script.php и загружаю в папку WWW.

В браузере ввожу - мой сайт.ru/script.php.

В итоге появляется просто белый пустой экран, это и есть результат, или что-то не так делаю.

Надіслати
Поділитися на інших сайтах


А ваш сайт действительно имеет окончание .ru?

Понятие "ВАШ_САЙТ.ru" не значит, что надо писать site.com.ua.ru, если ваш сайт - site.com.ua... :)

Да и вообще надо прописывать свой путь. Он у вас не обязательно будет такой, как в примере...

У меня, например, путь такой:

/var/www/МОЙ ЛОГИН(ПОЛЬЗОВАТЕЛЬ)/data/www/МОЙ САЙТ/
Надіслати
Поділитися на інших сайтах


А ваш сайт действительно имеет окончание .ru?

Понятие "ВАШ_САЙТ.ru" не значит, что надо писать site.com.ua.ru, если ваш сайт - site.com.ua... :)

Да и вообще надо прописывать свой путь. Он у вас не обязательно будет такой, как в примере...

Можно прописать какой угодно путь...
Надіслати
Поділитися на інших сайтах

А ваш сайт действительно имеет окончание .ru?

Понятие "ВАШ_САЙТ.ru" не значит, что надо писать site.com.ua.ru, если ваш сайт - site.com.ua... :)

Да и вообще надо прописывать свой путь. Он у вас не обязательно будет такой, как в примере...

Окончанее 100 пудово.RU

...а вот про свои путь - ЭТО КАК?

Надіслати
Поділитися на інших сайтах


Что значит "какой угодно"???? Надо писать правильный путь, или можно любую глупость написать? :)

Ну, откуда мне знать в каком домене у Вас сайт? Можете прописать .com, .net, .ua, .info,... Вот, что означают слова - "всё, что угодно". :rolleyes:
Надіслати
Поділитися на інших сайтах

Ну, откуда мне знать в каком домене у Вас сайт? Можете прописать .com, .net, .ua, .info,... Вот, что означают слова - "всё, что угодно". :rolleyes:

:) да мне не надо. Я знаю свой путь... Это у gdi31 ваш скрипт не работает. Мне он вообще не нужен. :)

gdi31, добавьте в корень сайта вот этот файлик, запустите и увидите полный путь к файлу:

test.php

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

а я в интернете как-то нашел такой список папок на которые нужно выставить права 777,так и ставлю всегда,возможно он не правильный?На что вообще влияют эти права?

/config.php

/admin/config.php

...

на эти файлы права должны быть 644 (!) иначе двери админки вашего магазина открыты для всех желающих ))
Надіслати
Поділитися на інших сайтах


  • 2 months later...

Может, кто разъяснить?

Стоят права доступа к файлам :

Изображение

Всё гладко и шёлково

Ставлю права доступа к файлам:

Изображение

Вылазит так, шо на голову не оденешь!

Изображение

Так и задумано? или где-то очередные камни и рифы?

Надіслати
Поділитися на інших сайтах


gdi31: на папки system/cache и system/logs поставьте 775, если не поможет - тогда 777. Про папку smsgate ничего не могу сказать, а на остальные вроде можно оставить 655.
Надіслати
Поділитися на інших сайтах


gdi31: на папки system/cache и system/logs поставьте 775, если не поможет - тогда 777. Про папку smsgate ничего не могу сказать, а на остальные вроде можно оставить 655.

С этим более или мене понятно . . .

А алфавит, чё так плющит ?Изображение

- дак самое интересное, вражеский не трогает, а по нашему родному, всей массой.

Есть специалист, который совокупность знаков для письма на каком-то языке (в моём варианте русских букв), расположенных в определённом порядке - вылечит (ну или хотябы подлечит) ?Изображение

Надіслати
Поділитися на інших сайтах


  • 8 years later...

Хороший полезный скрипт.

Особенно после восстановления из бекапов.


Может есть смысл доработать его чтобы проверял правильность выставленных прав в версиях 2.1, 2.3 и 3.0х?

 

На 2.3.0.2 - не проверяет права на каталоги по причине изменившейся структуры.
 

Змінено користувачем VadimOd
синтаксис
Надіслати
Поділитися на інших сайтах


  • 8 months later...

если нужно выполнить проверку для каталогов от корня сайта

вместо $dir = '/usr/home/ВАШ_САЙТ/data/www/ВАШ_САЙТ.ru/';   // проверяемая директория сайта. меняем у кого свои пути!
можно указать $dir = __DIR__;

а вот когда для подкаталогов тогда $dir = __DIR__ . '/имя каталога от корня сайта';

Змінено користувачем Xronika
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.