На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с корня.
Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и применить на сервер1. Хочется сделать без лишнего гемора, а именно взять права в виде цифр типа 0755. Но каким образом взять в цисловом формате я так и ненашел.
Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
SuSE 9.3
>На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с
>корня.
>Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и
>применить на сервер1. Хочется сделать без лишнего гемора, а именно взять
>права в виде цифр типа 0755. Но каким образом взять в
>цисловом формате я так и ненашел.
>Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше
>востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
>
>SuSE 9.3chmod 755 от корня - это круто!
Сохрани конфиги и сноси систему!
>На сервер1 ставился софт. Был неправильно сконфигурирован, поставил везде rwxrwxr-x начиная с
>корня.
>Есть сервер2 похожего конфига. Можно с него взять список файлов, прав и
>применить на сервер1. Хочется сделать без лишнего гемора, а именно взять
>права в виде цифр типа 0755. Но каким образом взять в
>цисловом формате я так и ненашел.
>Может при таком _перетаскивании_ прав кому видны подводные камни? Посоветуйте как лучьше
>востановиться. Сервер пока не перезагружался, но уже были проблемы со службами.
>
>SuSE 9.3
Проще переустановить систему, чем исправить :-)
Мда не первый раз встречаю такую проблему.
От ошибок, уважаемый, ни кто не застрахован.
Думаю еще просто в голову никому не приходило написать скрипт для каждой в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
Думаю этим должны заниматься сами разработчики.
Поправьте если не прав.
>Мда не первый раз встречаю такую проблему.
>От ошибок, уважаемый, ни кто не застрахован.
>Думаю еще просто в голову никому не приходило написать скрипт для каждой
>в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
>Думаю этим должны заниматься сами разработчики.
>Поправьте если не прав.
В BSD есть mtree... Про linux не знаю...
>Мда не первый раз встречаю такую проблему.
>От ошибок, уважаемый, ни кто не застрахован.
>Думаю еще просто в голову никому не приходило написать скрипт для каждой
>в отдельности системы (linux, BSD, Solaris) для решения данной проблемы.
>Думаю этим должны заниматься сами разработчики.
>Поправьте если не прав.не прав.
В ряде систем, существует mtree и дерево с данными для chmod & chown, НО актуально
это только для САМОЙ СИСТЕМЫ, те РОВНО для дистрибутива и НЕ БОЛЕЕ ТОГО.
Далее администратор начинает ставить пакеты - это уже НЕ DISTRIBUTIVE и chmod/chown взять
можно только из системы пакетов, если таковое поддерживается пакетным менеджером.
А если администратор ставит что-то из SOURCES - тут и вовсе надеется только на себя
или третичный софт для chmod/chown.
Собственно какой тут третичный софт? Ночью find с сохранением дерева chown-chmod или
что-то подобное.
fsbackup (resp Max ;) делает листинг филаф с пермами при быкупи
тады 1) креати на близнице 2) рестори с ниго левы на инвалиде
>На сервер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);
mtree -с > /tmp/mtree_; mtree -Uef /tmp/mtree_ помогло. После перезагрузки на первый взгляд все хорошо. Далее понаблюдаем :)
Паралельно тема: http://forum.sysadmins.ru/viewtopic.php?p=7104855#7104855
Всем спасибо.