URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 67015
[ Назад ]

Исходное сообщение
"Слетели права на /*"

Отправлено calculator , 19-Июн-06 14:17 
На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с корня.
Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и применить на сервер1. Хочется сделать без лишнего гемора, а именно взять права в виде цифр типа 0755. Но каким образом взять в цисловом формате я так и ненашел.
Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
SuSE 9.3

Содержание

Сообщения в этом обсуждении
"Слетели права на /*"
Отправлено Hammer , 20-Июн-06 18:57 
>На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с
>корня.
>Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и
>применить на сервер1. Хочется сделать без лишнего гемора, а именно взять
>права в виде цифр типа 0755. Но каким образом взять в
>цисловом формате я так и ненашел.
>Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше
>востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
>
>SuSE 9.3

chmod 755 от корня - это круто!
Сохрани конфиги и сноси систему!


"Слетели права на /*"
Отправлено Михаил , 20-Июн-06 19:27 
>На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с
>корня.
>Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и
>применить на сервер1. Хочется сделать без лишнего гемора, а именно взять
>права в виде цифр типа 0755. Но каким образом взять в
>цисловом формате я так и ненашел.
>Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше
>востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
>
>SuSE 9.3


Проще переустановить систему, чем исправить :-)


"Слетели права на /*"
Отправлено TR , 21-Июн-06 02:44 
Мда не первый раз встречаю такую проблему.
От ошибок, уважаемый, ни кто не застрахован.
Думаю еще просто в голову никому не приходило написать скрипт для каждой в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
Думаю этим должны заниматься сами разработчики.
Поправьте если не прав.



"Слетели права на /*"
Отправлено newser , 21-Июн-06 09:29 
>Мда не первый раз встречаю такую проблему.
>От ошибок, уважаемый, ни кто не застрахован.
>Думаю еще просто в голову никому не приходило написать скрипт для каждой
>в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
>Думаю этим должны заниматься сами разработчики.
>Поправьте если не прав.


В BSD есть mtree... Про linux не знаю...


"Слетели права на /*"
Отправлено lavr , 21-Июн-06 11:49 
>Мда не первый раз встречаю такую проблему.
>От ошибок, уважаемый, ни кто не застрахован.
>Думаю еще просто в голову никому не приходило написать скрипт для каждой
>в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
>Думаю этим должны заниматься сами разработчики.
>Поправьте если не прав.

не прав.
В ряде систем, существует mtree и дерево с данными для chmod & chown, НО актуально
это только для САМОЙ СИСТЕМЫ, те РОВНО для дистрибутива и НЕ БОЛЕЕ ТОГО.
Далее администратор начинает ставить пакеты - это уже НЕ DISTRIBUTIVE и chmod/chown взять
можно только из системы пакетов, если таковое поддерживается пакетным менеджером.
А если администратор ставит что-то из SOURCES - тут и вовсе надеется только на себя
или третичный софт для chmod/chown.
Собственно какой тут третичный софт? Ночью find с сохранением дерева chown-chmod или
что-то подобное.


"Слетели права на /*"
Отправлено шыпахлйаг , 21-Июн-06 06:29 
fsbackup (resp Max ;) делает листинг филаф с пермами при быкупи
тады 1) креати на близнице 2) рестори с ниго левы на инвалиде

"Слетели права на /*"
Отправлено xkw , 21-Июн-06 11:05 
>На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с
>корня.
>Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и
>применить на сервер1. Хочется сделать без лишнего гемора, а именно взять
>права в виде цифр типа 0755. Но каким образом взять в
>цисловом формате я так и ненашел.
>Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше
>востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
>
>SuSE 9.3


Незнаю поможет ли тебе - но я написал скриптик на перле который выставит нужные вермишшены в сответствии с шаблоном.

должен работать...

на исправной машине делаешь
ls -alR / (или ls -alR /usr - в зависимости от того что попортил) в файл, например:
ls -alR / >root.ls

Далее копируешь на неисправную машину в рут и на ней выполняешь ниде приложеный скрипт примерно так:

# pwd
/

# ls | grep root.ls
root.ls

# perl chmoder root.ls /
....
Оно должно выставить все пермишшены не совпадущие а так же и группы и овнеров.
Первый параметр - имя слепка
Второй - имя каталога от которого ты всё делаешь.

ПРилагаю скрипт:

#!/usr/bin/perl
use strict;

my $wd = $ARGV[1];

open (FL, "<", $ARGV[0]);
while (<FL>) {
    s/\n//g;
    next unless $_;
    next if (/^total/);

    my @a = split /\s+/;

    if (!$a[8] && /^(.*):$/) {
        $wd = $1;
     #   print "New Dir: $wd\n";
        next;
    }

    next unless $a[8];

    next if ($a[8] =~ /^(\.|\.\.)$/);
    my $perm = $a[0];
    my $own  = $a[2];
    my $grp  = $a[3];
    my $file = $wd."/".$a[8];

    my $flstat = `ls -al $file`;

    # For dirs:
    if ($perm =~ /^d/i) {
        my @at = '';
        while ($flstat =~ s/^(.*?)\n//) {
            my @s = split /\s+/, $1;
            if ($s[8] eq ".") { # Current dir
                @at = @s;
                $flstat = '';
            }
        }

        if (scalar @at) {
            # Permission check:
            if ($at[0] ne $perm) {
                $perm =~ s/^\d/-/g;
                system ("chmod $perm $file");
            }

            # Owner check:
            if ($at[2] ne $own) {
                system ("chmod $own $file");
            }

            # Group check:
            if ($at[3] ne $grp) {
                system ("chmod $grp $file");
            }


        }

    # For file processing:
    } else {
        my @at = split /\s+/;

        # If needed file:
        if ($at[8] eq $a[8]) {

            # Permission check:
            if ($at[0] ne $perm) {
                system ("chmod $perm $file");
            }

            # Owner check:
            if ($at[2] ne $own) {
                system ("chmod $own $file");
            }

            # Group check:
            if ($at[3] ne $grp) {
                system ("chmod $grp $file");
            }
        }
    }

}

close (FL);

exit(0);


"Слетели права на /*"
Отправлено calculator , 23-Июн-06 15:01 
mtree -с > /tmp/mtree_; mtree -Uef /tmp/mtree_ помогло. После перезагрузки на первый взгляд все хорошо. Далее понаблюдаем :)
Паралельно тема: http://forum.sysadmins.ru/viewtopic.php?p=7104855#7104855
Всем спасибо.