Skip to content


tinyproxy: Could not allocate memory for child counting

tinyproxy - это маленький и не требовательный к ресурсам HTTP/SSL-прокси-сервер. Его целесообразно применять там, где не хочется ставить что-то более навороченное, типа squid-а.

Заметил я однажды на одном из серверов, что tinyproxy не взлетает, ругаясь в свой лог-файл /var/log/tinyproxy/tinyproxy.log таким вот образом:

INFO   Feb 16 10:40:57 [25015]: Now running as group "tinyproxy".
INFO   Feb 16 10:40:57 [25015]: Now running as user "tinyproxy".
ERROR  Feb 16 10:40:57 [25015]: Could not allocate memory for child counting.

Само собой, сразу полез проверять что с памятью, но свободной памяти оказалось предостаточно. На всякий случай остановил даже тяжелые по памяти процессы, съедающие обычно по нескольку гигабайт RSS --- безрезультатно, ошибка никуда не делась.

Запустив tinyproxy через strace, я увидел следующее:

munmap(0x2b2ae6a30000, 4096)            = 0
umask(0177)                             = 0177
gettimeofday({1329484731, 868249}, NULL) = 0
getpid()                                = 13041
open("/tmp/tinyproxy.shared.P0QttN", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
unlink("/tmp/tinyproxy.shared.P0QttN")  = 0
ftruncate(3, 40)                        = 0
mmap(NULL, 40, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0x2b2ae6a30000
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b2ae6a3ce40) = 13042
--- SIGCHLD (Child exited) @ 0 (0) ---
exit_group(0)                           = ?

Эта попытка создать файл в директории /tmp навела меня на мысль проверить права доступа к ней. Оказалось, что права там нестандартные:

[avz@ds1 /tmp]# ls -ld /tmp
lrwxrwxrwx 1 root root 24 Апр 10  2009 /tmp -> /mnt/disk2/tmp/
[avz@ds1 /tmp]# ls -ld /mnt/disk2/tmp
drwxrwxr-x 4 root www 4096 Фев 17 13:18 /mnt/disk2/tmp/

Как видно, отсутствует права на запись для пользователей, не входящих в группу www. А сам tinyproxy как раз должен работать от имени пользователя tinyproxy, который в группу www не входит. После комнады chmod o+w /mnt/disk2/tmp tinyproxy успешно запустился :)

Posted in *nix.

Tagged with .


Создание шифрованного бекапа с помощью fsbackup

Иногда бывают ситуации, когда требуется создание резервной копии на носителе, к которому есть доступ не только у вас. Если есть желание уберечь свои данные от посторонних глаз, то тут, конечно же, потребуется шифрование. Один из быстрых и простых способов добиться этого – использование связки fsbackup и gnupg. Далее пошаговое руководство.

  1. Устанавливаем fsbackup, правим конфиг.
  2. Создаём ключи:
    $ gpg --gen-key
    gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1
    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048)
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
          <n>  = key expires in n days
          <n>w = key expires in n weeks
          <n>m = key expires in n months
          <n>y = key expires in n years
    Key is valid for? (0)
    Key does not expire at all
    Is this correct? (y/N) y
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <[email protected]>"
    Real name: SysAdmin
    Email address: mymbox@avz.org.ua
    Comment: 
    You selected this USER-ID:
        "SysAdmin <[email protected]>"
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
    You need a Passphrase to protect your secret key.
    Repeat passphrase:
  3. Копируем ключи на сервер бекапов:
    $ scp ~/.gnupg/*.gpg backupuser@backupserver.some.where:~/.gnupg
  4. Проверяем, что в конфиг-файле fsbackup-а правильно установлены следующие переменные:
    $prog_pgp = "/usr/bin/gpg";
    # должно соответствовать имени пользователя при создании ключей
    $cfg_pgp_userid = "mymbox";
  5. Запускаем процесс создания бекапа:
    # /usr/local/fsbackup/create_backup.sh
    OS: linux
    Creating system config archive...
    Creating package list...
    Creating remote_ssh backup: s1
    PGP: enabled
    Current increment number: 1
    Adding /usr/local/fsbackup....
    done
    Adding /usr/src/linux/.config....
    done
    Adding /root....
    done
    Adding /etc....
    done
    Storing remote ssh backup...
    gpg: using PGP trust model
    gpg: using subkey 656FA34 instead of primary key 0F36EF13
    gpg: This key belongs to us
    gpg: reading from `[stdin]'
    gpg: writing to stdout
    gpg: RSA/AES256 encrypted for: "656FA34 SysAdmin <[email protected]>"
    ***** Backup successful complete.
  6. При необходимости извлечь файлы из бекапа на сервере бекапов делаем так:
    $ ls -l
    total 50048
    -rw-rw-r--. 1 avz avz 50814369 Фев 15 16:15 s1-2012.02.15.16.15.17-0.tar
    -rw-rw-r--. 1 avz avz        0 Фев 15 16:15 s1-2012.02.15.16.15.17.del
    -rw-rw-r--. 1 avz avz    91076 Фев 15 16:15 s1-2012.02.15.16.15.17.dir
    -rw-rw-r--. 1 avz avz   335872 Фев 15 16:15 s1-2012.02.15.16.15.17.hash
    -rw-rw-r--. 1 avz avz      373 Фев 15 16:15 s1-2012.02.15.16.15.17.list
    -rw-rw-r--. 1 avz avz        0 Фев 15 16:15 s1-2012.02.15.16.15.17.lsize
     
    $ file s1-2012.02.15.16.15.17-0.tar
    s1-2012.02.15.16.15.17-0.tar: data
     
    $ mv s1-2012.02.15.16.15.17-0.tar s1-2012.02.15.16.15.17-0.tar.gpg
     
    $ gpg -d s1-2012.02.15.16.15.17-0.tar.gpg > s1-2012.02.15.16.15.17-0.tar
    You need a passphrase to unlock the secret key for
    user: "SysAdmin <[email protected]>"
    2048-bit RSA key, ID 656FA34, created 2012-02-15 (main key ID 0F36EF13)
    ┌───────────────────────────────────────────────────────────────────────┐
    │ Please enter the passphrase to unlock the secret key for certificate: │ 
    │ "SysAdmin <[email protected]>"                                        │ 
    │ 2048-bit RSA key, ID 656FA34,                                         │ 
    │ created 2012-02-15 (main key ID 0F36EF13).                            │ 
    │                                                                       │ 
    │                                                                       │ 
    │ Passphrase ********__________________________________________________ │ 
    │                                                                       │ 
    │            <OK>                           <Cancel>                    │ 
    └───────────────────────────────────────────────────────────────────────┘
    gpg: encrypted with 2048-bit RSA key, ID 656FA34, created 2012-02-15
          "SysAdmin <[email protected]>"
     
    $ file s1-2012.02.15.16.15.17-0.tar
    s1-2012.02.15.16.15.17-0.tar: POSIX tar archive (GNU)
     
    $ tar -xf s1-2012.02.15.16.15.17-0.tar

Что касается быстродействия при расшифровке, то могу сообщить следующее:

$ ls -l s1-2012.02.15.23.02.34.tar.gpg
-rw-rw-r--. 1 avz avz 4164349204 Фев 15 23:23 s1-2012.02.15.23.02.34.tar.gpg
 
$ time gpg -d s1-2012.02.15.23.02.34.tar.gpg > s1-2012.02.15.23.02.34.tar
You need a passphrase to unlock the secret key for
user: "SysAdmin <[email protected]>"
2048-bit RSA key, ID 656FA34, created 2012-02-15 (main key ID 0F36EF13)
real    3m19.129s
user    2m4.648s
sys     0m6.255s
 
$ ls -l s1-2012.02.15.23.02.34.tar
-rw-rw-r--. 1 avz avz 5637232640 Фев 16 14:31 s1-2012.02.15.23.02.34.tar
 
$ cat /proc/cpuinfo | grep 'model name' | head -n 1
model name      : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
 
$ cat /proc/meminfo | grep MemTotal:
MemTotal:        3835144 kB

Posted in *nix, Howto.

Tagged with .


Что общего у skype и chrome?

Скачал я сегодня по ссылочке http://download-akm.skype.com/SkypeSetupFull.exe инсталлятор Skype, запустил exe-шник и очень удивился:

инсталлер skype предлагает установить google chrome

Microsoft и Google - партнёры?

Всем известно, что недавно Майкрософт купила Skype. Зачем майкрософту понадобилось пиарить Google Chrome - продукт своего давнего конкурента, компании Google, посредством Skype?

Posted in Misc.


Как установить linux с флешки

Далее по тексту я буду обращаться к своей флешке как к устройству /dev/sdb1. Во избежание потери данных убедитесь, что Вы не просто копируете приведённые тут команды, а адаптируете их к своему окружению.

  1. Скачать образ установочного диска. Я ставил KUbuntu по ссылке http://www.kubuntu.org/getkubuntu/download
  2. Создать на флешке раздел размером около 1ГБ (например, с помощью fdisk). Может, размер раздела можно делать и больше, я просто выбрал такой, потому что читал на help.ubuntu.com об именно таком рекомендуемом размере.
  3. system id in fdisk for bootable flash driveУстановить тип файловой системы раздела флешки FAT16 (код 6 в таблице fdisk-а).
    Я пробовал сначала выбирать "W95 FAT32" для раздела рамером 4ГБ, так в этом случае комп с такой флешки вообще не загрузился, выдавая в начале загрузки сообщение "Disk Error". Не знаю точно в чём именно было тут дело - в размере созданного раздела или в типе системы, но факт остаётся фактом.
  4. Создать файловую систему командой
    mkfs.vfat /dev/sdb1
  5. Примонтировать файловую систему флешки, например, командой
    mount -t vfat /dev/sdb1 /mnt/flashdisk
  6. Установить программу unetbootin (существует как windows- так и linux-версия, и даже входит в состав репозиториев Fedora Project)
  7. Запустить unetbootin от имени пользователя root, указать путь к образу диска (iso-файлу), выбрать имя устройства, соответствующего флешке. ПРЕДУПРЕЖДЕНИЕ: если в выпадающем списке "Носитель" Вы не видите своей флешки, то это плохой симптом и может означать, что флешка подготовлена неправильно. Если установить галочку "Показать все носители", то флешку Вы, скорей всего, таки увидите, но вероятность дальнейшей успешной установки ОС с неё весьма невелика.
    Создание загрузочной флешки с помощью unetbootin

    Как создать загрузочную флешку

  8. Нажать кнопку "OK", подождать пока unetbootin перенесёт на флешку нужные файлы и установит загрузчик.
  9. Вставить подготовленную флешку в компьютер, на который требуется установить ОС, выбрать в его BIOS-е первым загрузочным устройством флешку, далее как обычно следовать указаниям мастера установки.

Если возникли проблемы с установкой с флешки по вышеописанному алгоритму, то советую почитать раздел "Creating bootable USB manually" на help.ubuntu.com.Там же описаны причины возможных проблем.

UPDATE от 2020-06-03. Unetbootin в Fedora 29 у меня работать отказался, показывая просто белое пустое окно. Поэтому было был нагуглен заменитель - open-source приложение Etcher. С ним всё прошло четко, на 2GB-флешку образ Fedora Workstation 32 записался нормально и потом с этой же флешки установка на ноутбук прошла успешно.
Создание загрузочной флешки из linux

Также видел упоминания о похожей софтинке gnome-multi-writer, но потестить пока не довелось, поскольку Etcher со своей задачей справился отлично.

Posted in *nix, Howto.

Tagged with , .