Случайно отключен /usr/lib/libcrypt.a. Есть ли способ исправить это?

Я обновлял OpenSSH и OpenSSL, и я случайно удалил файл /usr/lib/libcrypt.a и теперь большинство функций в AIX просто не работает. Является ли резервное копирование / восстановление единственным способом восстановления после этого?

1
задан 29 July 2019 в 12:14
3 ответа

Окончательным решением было восстановление системы из резервной копии, так как все пользователи были практически заблокированы из системы...

Во всяком случае, я должен повторить libcrypt.a - это НЕ libcrypto.a. Несчастный случай с предыдущим файлом означает полное восстановление системы. Другое - это просто раздражение.

.
0
ответ дан 4 December 2019 в 02:48

Выберите одно из:


Рассмотрите возможность использования двоичных пакетов сторонних производителей. (формат rpm или installp) для программного обеспечения, не поставляемого с AIX. Более воспроизводимый, чем при сборке из исходного кода, и более простой в управлении. Некоторые из них могут быть установлены параллельно с пакетами ОС.

0
ответ дан 4 December 2019 в 02:48

Если сеанс все еще открыт, но команды не работают, то есть есть ошибки вроде

bash-4.4# ls
Could not load program ls:
Could not load module /usr/lib/libc.a(shr_64.o).
        Dependent module libcrypt.a(shr_64.o) could not be loaded.
Could not load module libcrypt.a(shr_64.o).
System error: No such file or directory
Could not load module ls.
        Dependent module /usr/lib/libc.a(shr_64.o) could not be loaded.
Could not load module .

, то вы можете попытаться восстановить его с помощью встроенного echo bash. in, например:

echo -n -e '\x3c\x62\x69\x67\x61\x66\x3e\x0a\x31\x30\x33\x33\x30\x20\x20\x20\x20\x20\x20\x20' > /usr/lib/libcrypt.a
echo -n -e '\x20\x20\x20\x20\x20\x20\x20\x20\x31\x30\x35\x32\x30\x20\x20\x20\x20\x20\x20\x20' >> /usr/lib/libcrypt.a
...

Для создания такого эхо-файла вы можете использовать следующую программу на c (в другой системе, где вы можете получить копию из libcrypt.a):

#include <stdio.h>

int main(int argc, char** argv)
{

    int c; // a single byte buffer

    FILE* fp = fopen("./libcrypt.a", "rb"); // open the file in 'read' mode

    int i;

    while (!feof(fp)) { // while not end of file

        printf("echo -n -e '");
        for (i = 0; i < 20; i++) {
            c = fgetc(fp); // get a character/byte from the file
            if (!feof(fp)) {
                printf("\\x%02x", c); // and show it in hex format
            }
        }
        printf("' >> /usr/lib/libcrypt.a\n"); // and show it in hex format
    }
    fclose(fp); // close the file
}
0
ответ дан 4 December 2019 в 02:48

Теги

Похожие вопросы