Категории

вторник, 17 сентября 2013 г.

Решение проблем во FreeBSD < 9.x c bsd tar.

При обновлении портов на FreeBSD ниже 9.x возникают подобные проблемы с xz архивами:
# cd usr/ports/misc/mc 
# make 
===>  License GPLv3 accepted by the user 
===>  Found saved configuration for mc-4.8.1.6 
===> Fetching all distfiles required by mc-4.8.1.7 for building 
===>  Extracting for mc-4.8.1.7 
=> SHA256 Checksum OK for mc-4.8.1.7.tar.xz. 
===>   mc-4.8.1.7 depends on file: /usr/local/bin/xz - found 
===>   mc-4.8.1.7 depends on file: /usr/local/bin/perl5.14.2 - found 
tar: Unrecognized archive format: Inappropriate file type or format 
tar: Error exit delayed from previous errors. 
*** Error code 1 

Stop in /usr/ports/misc/mc. 
*** Error code 1 

Stop in /usr/ports/misc/mc.
Лечится довольно просто, установкой libarchive и 1 строчкой в /etc/make.conf:
#cd /usr/ports/archivers/libarchive
#make install clean
#echo 'TAR=/usr/local/bin/bsdtar' >> /etc/make.conf

Ссылки по теме:
1. 2. Обновление портов и tar.Xz
3. Исправление ошибки во freebsd tar xz.

Чтение файлов журнала .jnl bind, named named-journalprint

Для чтения файлов журнала .jnl DNS сервера Named (bind), существует утилита named-journalprint.
FreeBSD# named-journalprint zone.local.jnl

1. Working with a journal-ized bind zone

понедельник, 16 сентября 2013 г.

Ubuntu 12.04 - transmission и samba

Для успешной с файлами по samba, скаченными при помощи свежеустановленного transmission нужно изменить umask для вновь создаваемых файлов и каталогов демоном transmission и для этого первым делом останавливаем демона:
Ubuntu$ sudo service transmission-daemon stop
 * Stopping bittorrent daemon transmission-daemon      [ OK ]
Если демона не остановить, то все изменения в конфиге не сохранятся, т.к. при перезапуске transmission перезапишет свой файл из памяти и все изменения пропадут.
Убедившись, что демон transmission не запущен - открываем файл настроек:
Ubuntu$ sudo nano /etc/transmission-daemon/settings.json
Находим там параметр "umask": 18, и изменяем значение на "umask": 2,, затем сохраняем файл.

С таким значением umask демон transmission будет создавать:
Каталоги с маской 775 - читать, писать, исполнять (заходить в каталог) владельцу и группе, остальным только читать и исполнять(заходить в каталог).
Файлы с маской 664 - читать, писать владельцу и группе, остальным только читать.

Теперь добавляем пользователя, под которым подключаемся к samba шарам, в группу debian-transmission:
Ubuntu$ sudo id metajiji
uid=1000(metajiji) gid=1000(metajiji) группы=1000(metajiji),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),104(fuse),108(lpadmin),109(sambashare)
Ubuntu$ sudo usermod metajiji -aG debian-transmission
Ubuntu$ sudo id metajiji
uid=1000(metajiji) gid=1000(metajiji) группы=1000(metajiji),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),104(fuse),108(lpadmin),109(sambashare),111(debian-transmission)
Как видим, командой id можно проверить список групп, а так же увидеть uid/gid в которых состоит пользователь.
Запускаем демона transmission:
sudo service transmission-daemon start
 * Starting bittorrent daemon transmission-daemon      [ OK ]

P.S. Если все сделано правильно, то transmission будет скачивать файлы с правильными правами, так, что их можно будет удалять, перемещать, редактировать через samba, не прибегая к редактированию системных файлов(/etc/init.d/transmission-daemon) и т.п. ухищрений - так делать не нужно, ведь после обновления есть большая вероятность, что этот файл обновится и вам придется заново редактировать его вручную, в то время, как можно было сделать все менее радикально :)

Ссылки по теме:
1. Wiki - Umask
2. Ubuntu server 12.04 Transmission-daemon error: Permission denied...

вторник, 10 сентября 2013 г.

Скрипт генерации сертификатов SSL для nginx.

Скрипт генерации ssl сертификатов и ключей для nginx:
#!/bin/sh

error() {
        echo 'ERROR detected! Exiting...'
        exit 1
}

#################################################
DOMAIN='domain.com'
EMAIL='admin@domain.com'
ORGANISATION='Organisation'
CITY='you city'
RSA_BIT=2048
DAYS=99365
#################################################

# Генерируем пароль для ключей.
PASS=$(tr -cd A-Za-z < /dev/urandom | head -c8)
echo 'Generated Password: '${PASS}

# Проверим, если не существует каталог для домена, то создаем его.
[ ! -d ${DOMAIN} ] && mkdir ${DOMAIN} && echo 'Create directory: '${DOMAIN}

#http://linuxcmd.ru/openssl-genrsa-sozdanie-fayla-klyuchey
echo "Now create the server private key, you'll be asked for a passphrase:"
openssl genrsa -des3 -out ${DOMAIN}/${DOMAIN}.key -passout pass:${PASS} ${RSA_BIT}
[ $? -eq 1 ] && error

#http://linuxcmd.ru/openssl-req-sozdanie-csr-zaprosa
#В пункте Common Name (eg, YOUR name) []: надо указать именно имя домена (без http, https, /): имя.домена
echo 'Create the Certificate Signing Request (CSR):'
openssl req -out ${DOMAIN}/${DOMAIN}.csr -new -newkey rsa:${RSA_BIT} \
        -subj /C=RU/ST=${CITY}/L=${CITY}/O=${ORGANISATION}/OU=${ORGANISATION}/CN=*.${DOMAIN}/emailAddress=${EMAIL} \
        -nodes -keyout ${DOMAIN}/${DOMAIN}.key -passout pass:${PASS}
[ $? -eq 1 ] && error

# Starting up nginx with SSL using the above private key:
echo 'Remove the necessity of entering a passphrase for:'
cp ${DOMAIN}/${DOMAIN}.key ${DOMAIN}/${DOMAIN}.key.org
openssl rsa -in ${DOMAIN}/${DOMAIN}.key.org -out ${DOMAIN}/${DOMAIN}.key
[ $? -eq 1 ] && error

echo 'Finally sign the certificate using the above private key and CSR:'
openssl x509 -req -days ${DAYS} -in ${DOMAIN}/${DOMAIN}.csr -signkey ${DOMAIN}/${DOMAIN}.key -out ${DOMAIN}/${DOMAIN}.crt
[ $? -eq 1 ] && error


#http://wiki.nginx.org/HttpSslModule
cat <<_EOF
Update Nginx configuration by including the newly signed certificate and private key:
server {
    server_name YOUR_DOMAINNAME_HERE;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}
_EOF

#Убедиться в том, что сервер присылает полную цепочку сертификатов,
#можно при помощи утилиты командной строки openssl, например:
#openssl s_client -connect www.godaddy.com:443

Ссылки по теме:
1. openssl req - создание CSR-запроса
2. openssl genrsa - создание файла ключей

среда, 4 сентября 2013 г.

Создание ярлыка .url в Windows из cmd\bat.

Для создания ярлыка в Windows на сетевую папку использую такой bat скрипт:
@ECHO OFF

SET "PATH_TO_URL=Server.url"

(
    ECHO.[InternetShortcut]
    ECHO.URL=file://server/
    ECHO.IconFile=%windir%\system32\SHELL32.dll
    ECHO.IconIndex=17
)>%PATH_TO_URL%

1. forum.oszone.net: CMD/BAT - создать ярлык

Ротация логов named Bind

Ротация логов bind средствами самого bind, создаем конфиг:
logging {
        channel update_debug {
                file "/var/log/named-update.log" versions 6 size 512K;
                severity        debug 3;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };
        channel security_info {
                file "/var/log/named-auth.log" versions 6 size 512K;
                severity        info;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };
#       channel queries {
#               file "/var/log/queries" versions 6 size 10m;
#               print-time      yes;
#               print-category  yes;
#               print-severity  yes;
#       };

#       category queries { queries; };
        category update { update_debug; };
        category security { security_info; };
};
Обратите внимание на опцию:
file "/var/log/named-update.log" versions 6 size 512K;
Директива file указывает на файл, куда нужно писать логи, а опция versions задает количество лог-файлов, size задает размер лог файла, при достижении которого нужно произвести ротацию. И подключаем в named.conf
include "/etc/namedb/log.conf";
! ! ВАЖНО ! ! !
Не используйте newsyslog для ротации логов bind, т.к. он не поддерживает переоткрытие лог-файла, а после того как newsyslog произведет ротацию и создаст новый файл bind потеряет дескриптор прежнего лог-файла и перестанет писать логи, мало того bind перестанет еще и обновлять ddns зону! Поэтому разумнее использовать либо встроенные средства ротации логов, либо перенаправить логи в syslog.

Ссылки по теме:
1. BIND Configuration File Guide - logging Statement
2. Bog BOS: DNS сервер BIND