Hungry Mind , Blog about everything in IT - C#, Java, C++, .NET, Windows, WinAPI, ...

Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

Hacking WL-500gP Part 2

Продолжаю мучить WL-500gP. В предыдущей части были разобраны такие пункты:

  1. SSH
  2. 4 Gb Flash
  3. Установка пакетов
  4. syslog-ng
  5. Создание пользователей

Эта часть коснется установки и настройки VSFTPD и Samba 3.

Поставить FTP сервер и Samba по отдельности - не проблема. Проблема в том, чтобы везде использовалась одинаковая кодировка и корректно отображалась кириллица. Единственное рабочее решение, которое было найдено - использовать UTF8 на файловой системе и FTP сервер, который позволяет выполнять перекодировку UTF8<->Windows-1251.

Установка и настройка Samba 3

Ставим:

ipkg install samba

Файл конфигурации по-умолчанию отсутствует, создаем:

vim /opt/etc/samba/smb.conf
[global]
workgroup = MYWORKGROUP
guest account = nobody

security = share

browseable = yes
guest ok = yes
guest only = no
log level = 0
log file = /opt/var/log/smbd.log
max log size = 100
encrypt passwords = yes
dns proxy = no
load printers = no
invalid users = root
netbios name = WL500gP
interfaces = br0
bind interfaces only = yes
server string = ASUS WL500g Premium
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_SNDBUF=8192
preserve case = yes
short preserve case = yes

dos charset = CP866
unix charset = UTF-8
display charset = UTF-8

wins support = no
#wins server = 192.168.1.1
time server = yes
os level = 255
local master = no

[PersonalShare]
path = /opt/home/SomeUser
writeable = yes
force user = SomeUser
force group = someuser
browseable = yes

[GroupShare]
path = /opt/home/GroupShare
writeable = yes
force user = SomeGroup
force group = somegroup
browseable = yes
create mode = 0664
directory mode = 0775

[FTP]
path = /opt/home/ftp
writeable = yes
force user = ftp
force group = ftp
browseable = yes
create mode = 0664
directory mode = 0775

Конфигурацию расшареных папок, конечно, поменять на свои. Обратите внимание на выделенные параметры. Безопасность настроена на уровне папок, а не пользователей. Выставлены кодировки.

Скрипт запуска - /opt/etc/init.d/S08samba. Его нужно отредактировать и, желательно, переименовать, чтобы Samba запускалась в самом конце:

sed 's/samba_active=0/samba_active=1/' /opt/etc/init.d/S08samba > /opt/etc/init.d/S95samba
rm -f /opt/etc/init.d/S08samba

Не забываем также про остановку системы, файл /usr/local/sbin/pre-shutdown:

if [ `pidof smbd` -ne "" ]; then
        $log 'Terminating smbd'
        /bin/kill `pidof smbd`
fi
if [ `pidof nmbd` -ne "" ]; then
        $log 'Terminating nmbd'
        /bin/kill `pidof nmbd`
fi

Установка и настройка VSFTPD

VSFTPD - единственный сервер, который удовлетворяет требованиям по кодировке. И то, прийдется поднатужиться для его сборки...

Сборка VSFTPD

С сайта http://vsftpd.devnet.ru/rus/ нужно скачать последний архив в исходниками и скомпилировать его.

Для этого нам понадобятся следующие "маленькие" пакеты:

ipkg install optware-devel
ipkg install buildroot
ipkg install openssl-dev

Можно смело пойти погулять полчасика.

Компилируем:

mkdir -p /opt/usr/src
cd /opt/usr/src
wget http://vsftpd.devnet.ru/files/2.0.5/ext.4/vsftpd-2.0.5.ext4.tar.gz
tar zxvf vsftpd-2.0.5.ext4.tar.gz vsftpd-2.0.5.ext4
cd vsftpd-2.0.5.ext4
cp defs.h defs.h.orig
sed 's/\/etc\/vsftpd\/vsftpd.conf/\/opt\/etc\/vsftpd.conf/' defs.h.orig > defs.h
mv builddefs.h builddefs.h.orig
echo "#ifndef VSF_BUILDDEFS_H"      >> builddefs.h
echo "#define VSF_BUILDDEFS_H"      >> builddefs.h
echo ""                             >> builddefs.h
echo "#undef VSF_BUILD_TCPWRAPPERS" >> builddefs.h
echo "#define VSF_BUILD_PAM"        >> builddefs.h
echo "#define VSF_BUILD_SSL"        >> builddefs.h
echo ""                             >> builddefs.h
echo "#endif /* VSF_BUILDDEFS_H */" >> builddefs.h

make

ipkg install vsftpd

cp vsftpd /opt/sbin/
cp vsftpd.8 /opt/share/man/man8/
cp vsftpd.conf.5  /opt/share/man/man5/

UPD: 05/04/2009

Последняя сборка 2.1.0 (ext.1). Чтобы ее собрать необходимо скачать и поставить свежую версию openssl.

cd /opt/usr/src/
wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz
tar zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config --prefix=/opt --openssldir=/opt shared
make install

Перед выполнением этой команды нужно убить все несистемные процессы - для сборки просто не хватает памяти. Также неплохо, чтобы образовалась следующая картинка:

[root@WL500gP lib]$ ls /opt/lib/*libssl* -al
-rw-r--r-- 1 root root 480756 Apr  5 17:52 /opt/lib/libssl.a
lrwxrwxrwx 1 root root     15 Apr  5 17:52 /opt/lib/libssl.so -> libssl.so.0.9.8
lrwxrwxrwx 1 root root     15 Apr  5 18:13 /opt/lib/libssl.so.0 -> libssl.so.0.9.8
-r-xr-xr-x 1 root root 351912 Apr  5 17:52 /opt/lib/libssl.so.0.9.8

Также нужно поправить файл vsf_findlibs.sh (-lcrypt вместо -lcrypto):

if find_func SSL_library_init ssl.o; then
  echo "-lssl -lcrypto";
fi

Настройка VSFTPD

Создаем пользователей и правильно выставляем права (важно):

echo "ftp:x:2:ftp" >> /etc/group
echo "ftp:x:1000:2:Anonymous FTP user:/opt/home/ftp:/sbin/nologin" >> /etc/passwd

mkdir -p /opt/home/nobody
mkdir -p /opt/home/ftp
mkdir -p /opt/home/ftp/incoming

chown nobody:nobody /opt/home/nobody
chown -R ftp:ftp /opt/home/ftp

chmod 555 /opt/home/nobody
chmod 555 /opt/home/ftp
chmod 775 /opt/home/ftp/incoming

Конфигурация /opt/etc/vsftpd.conf:

# Example config file /opt/etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
listen=YES
check_shell=NO
chroot_local_user=YES
secure_chroot_dir=/opt/home/nobody
anon_root=/opt/home/ftp
convert_charset_enable=1
local_charset=UTF-8
remote_charset=WIN1251
syslog_enable=YES
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
vsftpd_log_file=/opt/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=nobody
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/opt/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/opt/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES

Запускаем:

/opt/sbin/vsftpd >/dev/null 2>&1 &

Пробуем логинится как anonymous. Если сервер отвечает 500 OOPS: child died, то, вероятно, что-то неправильно с правами доступа или путями.

Добавляем в автозапуск:

echo "/opt/sbin/vsftpd /opt/etc/vsftpd.conf >/dev/null 2>&1 &" > /opt/etc/init.d/S60vsftpd
chmod +x /opt/etc/init.d/S60vsftpd

Последний штрих - остановка системы, файл /usr/local/sbin/pre-shutdown:

if [ `pidof vsftpd` -ne "" ]; then
        $log 'Terminating vsftpd'
        /bin/kill `pidof vsftpd`
fi

Не забываю сделать

flashfs save && flashfs commit && flashfs enable

WL-500gP HP 2015 problems

Нудавно я писал про подключение HP LaserJet 2015 к WL-500gP. Ну, вот и нашлись проблемы:

  1. Печать PostScript не работает.

    При печати через драйвер PostScript рутер пишеть в лог такие строчки:

    [lpr.notice] p9100d[88]: Connection from 192.168.1.4 port 51240 accepted
    [kern.warning] kernel: printer.c: usblp0: nonzero read/write bulk status received: -71
    [kern.err] kernel: printer.c: usblp0: error -71 reading printer status
    
  2. Печать больших документов не работает. Даже через PCL 5/6.

    В логе анологичные строки и я подозреваю, что это, как и в первом случае, связанно с нехваткой оперативной памяти устройства.

Что тут еще говорить? Попытаюсь еще через CUPS и HPLIP, но последний не удалось скомпилировать. Да, все из-за той же нехватки оперативной памяти.

Я уже себе с трудом представляю, как рутер способен работать при 1-2 Mb свободной памяти. Это конкретно сужает область его задач.

Hacking WL-500gP Part 1

Ну, вот я и добрался до своего ненаглядного рутера WL500gP. За последние пару дней на плечи ему свалилось немало:

  1. SSH
  2. 4 Gb Flash
  3. Установка пакетов
  4. syslog-ng
  5. Создание пользователей
  6. VSFTPD
  7. Samba 3
  8. Cron
  9. Firewall

Все это поверх прошивки от Олега. Рекомендую глянуть на инструкцию по установке. Итак, по порядку.

Подготовка

Возможность управлять загрузкой рутера по-сути одна - файлы /usr/local/sbin/post-*, которые выполняются в таком порядке:

  1. post-firewall

    Выполняется сразу после инициализации сетевых устройств. Скрипту система передает параметры - WAN-интерфейс, WAN-адрес, Bridge-интерфейс, Bridge-адрес:

    /usr/local/sbin/post-firewall vlan1 wan.ip.ad.dr br0 lan.ip.ad.dr
    
  2. post-boot

    Параметрами не интересовался.

  3. pre-mount

    Параметрами не интересовался. Выполняется только, если есть что монтировать.

  4. post-mount

    Параметрами не интересовался. Выполняется только, если есть что монтировать.

  5. pre-shutdown (при перегрузке рутера)

    Параметрами не интересовался.

Я создал файл /usr/local/sbin/post-include с полезными переменными такого содержания:

#!/bin/sh

self=`basename $0`
log="/usr/bin/logger -t $self"

Изначально каждый файл /usr/local/sbin/post-* у меня выглядит так:

#!/bin/sh

. "`dirname $0`/post-include"

$log 'Begin'

# initialization here

$log 'End'

А /usr/local/sbin/pre-shutdown так:

#!/bin/sh

. "`dirname $0`/post-include"

[ -x /opt/bin/logger ] && log="/opt/bin/logger -p Syslog.Alert"

$log 'Shutting down system.'

# BEGIN services termination
if [ `pidof vsftpd` -ne "" ]; then
        $log 'Terminating vsftpd'
        /bin/kill `pidof vsftpd`
fi

if [ `pidof smbd` -ne "" ]; then
        $log 'Terminating smbd'
        /bin/kill `pidof smbd`
fi
if [ `pidof nmbd` -ne "" ]; then
        $log 'Terminating nmbd'
        /bin/kill `pidof nmbd`
fi

if [ -f /var/run/lighttpd.pid ]; then
        $log 'Terminating lighhttpd'
        /bin/kill `cat /var/run/lighttpd.pid`
fi

if [ -f /opt/var/run/cron.pid ]; then
        $log 'Terminating cron'
        /bin/kill `cat /opt/var/run/cron.pid`
fi

if [ -f /var/run/syslog-ng.pid ]; then
        $log 'Terminating syslog-ng'
        /bin/kill `cat /var/run/syslog-ng.pid`
fi

if [ -f /var/run/dropbear.pid ]; then
        $log 'Terminating dropbear'
        /bin/kill `cat /var/run/dropbear.pid`
fi

# END services termination

if [ -d /tmp/harddisk/opt ]; then
        $log 'Unmounting FlashFS'
        /bin/umount /tmp/harddisk
        /bin/umount /opt
fi

pre-shutdown аккуранто останавливает все службы и в конце размонтирует файловую систему.

Для сохранения файлов не с флешки в ПЗУ устройства необходимо выполнить следующую команду: flashfs save && flashfs commit && flashfs enable. Я постоянно забывал сохраняться и после перегрузки набивал изменения снова. Для сохранения файлов в других каталогах необходимо добавить пути в файл /usr/local/.files.

Исполняемым файлам не забывать делать chmod +x file.

SSH

Выполнить:

mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key

Для автоматического запуска SSH сервера (dropbear) нужно добавить в файл /usr/local/sbin/post-boot следующие строчки:

$log 'Starting dropbear SSH server'
/usr/sbin/dropbear 1>/dev/null 2>&1

В конце:

flashfs save && flashfs commit && flashfs enable

Также необходимо добавить парочку правил в файрвол. Для этого правим /usr/local/sbin/post-firewall:

$log 'SSH rules'
iptables -I INPUT 5 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "SSH Brute force attack: " --log-level 6
iptables -I INPUT 6 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -m limit --limit 2/minute --limit-burst 1 -j ACCEPT
iptables -I INPUT 7 -i $1 -p tcp -d $2 --dport 22 -m state --syn --state NEW -j DROP

4 Gb Flash

Флешка нужна для установки дополнительного софта, ну, и для хранения файлов, конечно. Также устройство может загружаться с флешки! Но мне это пока не нужно.

Для пробы имелась 512 Mb флешка, на которую ядро сильно ругалось. Пришлось ставить 4 Gb Pretec. Поскольку из самого устройства разбить на разделы не получилось, я использовал Acronis Disk Director 10. Получилось два раздела - Linux swap на 100 с копейками мегабайт и Linux ext3 - остальное.

Через веб морду я отключил встроенный FTP и Samba. В результате не загружались необходимые модули ядра - scsi_mod, sd_mod, usb-storage (как последствие - не выполнялись скрипты pre-mount и post-mount). Их нужно загрузить самостоятельно в /usr/local/sbin/post-boot:

/sbin/insmod scsi_mod
/sbin/insmod sd_mod
/sbin/insmod usb-storage

Что в результате:

  • Ядро пишет: /dev/scsi/host0/bus0/target0/lun0: p2 < p5 p6 >

    p5 (/dev/discs/disc0/part5) - swap, p6 (/dev/discs/disc0/part6) - ext3

  • /dev/discs/disc0/part6 смонтирован как /tmp/harddisk
  • На ext3 создана простейшая структура Unix-каталогов

Установка пакетов

В системе имеется простенький менеджер пакетов - ipkg. По умолчанию весь софт ставится в /opt, поэтому нужно, чтобы в /opt был смонтирован корень ext3. Для этого изменяем /usr/local/sbin/post-mount (вставляем в самое начало после $log 'Begin') :

[ -d /tmp/harddisk/opt ] && $log 'Mounting /opt' && /bin/mount -o bind,sync,noatime,rw /tmp/harddisk /opt

Выполнить (все это описано здесь):

ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update
echo "/etc/ipkg.conf" >> /usr/local/.files
flashfs save && flashfs commit && flashfs enable

Ставим необходимый софт:

ipkg install adduser
ipkg install bash
ipkg install coreutils
ipkg install findutils
ipkg install grep
ipkg install less
ipkg install mc
ipkg install screen
ipkg install util-linux
ipkg install vim
ipkg install which
ipkg install wget-ssl

syslog-ng

syslogd я сразу меняю на syslog-ng. Ставим:

ipkg install syslog-ng
cd /opt/etc
ln -s syslog-ng/syslog-ng.conf syslog-ng.conf

Добавляем в /usr/local/sbin/post-mount:

if [ -x /opt/sbin/syslog-ng ]; then
        $log 'Replacing syslogd'
        [ -x /opt/bin/unlink ] && /opt/bin/unlink /tmp/syslog.log && /opt/bin/ln -s /opt/var/log/all.log /tmp/syslog.log
        kill `/bin/pidof syslogd`
fi

Это, естественно, должно выполнятся до запуска syslog-ng.

\

Не забываем также про остановку системы, файл /usr/local/sbin/pre-shutdown (как можно позже, но перед размонтированием):

if [ -f /var/run/syslog-ng.pid ]; then
        $log 'Terminating syslog-ng'
        /bin/kill `cat /var/run/syslog-ng.pid`
fi

rc.unslung и init.d

Многие пакеты закидывают скрипт запуска службы в /opt/etc/init.d/ с названием SXYService. Нужен механизм, который будет выполнять их в правильном порядке. Создаем исполняемый файл /opt/etc/init.d/rc.unslung с таким содержимым:

#!/bin/sh

# Start all init scripts in /opt/etc/init.d
# executing them in numerical order.
#
for i in /opt/etc/init.d/S??* ;do

    [ ! -f "$i" ] && continue
    [ ! -x "$i" ] && continue

    case "$i" in
       *.sh)
           # Source shell script for speed.
           (
               trap - INT QUIT TSTP
               set start
               . $i
           )
           ;;
       *)
           # No sh extension, so fork subprocess.
           $i start
           ;;
   esac
done

Добавляем вызов /opt/etc/init.d/rc.unslung в конец /usr/local/sbin/post-mount:

[ -x /opt/etc/init.d/rc.unslung ] && $log 'Running rc.unslung' && /opt/etc/init.d/rc.unslung | $log

Запуск syslog-ng из init.d

Теперь происходит автоматически благодаря /opt/etc/init.d/S01syslog-ng.

Настройка syslog-ng

Мой syslog-ng помимо файлов логирует еще и на рабочую машину, где стоит Kiwi Syslog в качестве приемника. Просто привожу конфиг /opt/etc/syslog-ng.conf:

#
# Syslog-ng example configuration for for NSLU2 Unslung 3.x
#
# Copyright (c) 1999 anonymous
# Copyright (c) 1999 Balazs Scheidler
# $Id: syslog-ng.conf 5159 2007-01-12 20:37:44Z fcarolo $
#
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation.
#

options {
        long_hostnames(off);
        sync(0);
        stats(0);
        create_dirs(yes);
        time_reopen(10);
        log_fifo_size(2000);
};

source src {
        pipe("/proc/kmsg" log_prefix("kernel: ") );
        unix-stream("/dev/log");
        internal();
};
#source net { udp(); };

destination authlog { file("/opt/var/log/auth.log"); };
destination syslog { file("/opt/var/log/syslog"); };
destination cron { file("/opt/var/log/cron.log"); };
destination daemon { file("/opt/var/log/daemon.log"); };
destination kern { file("/opt/var/log/kern.log"); };
destination lpr { file("/opt/var/log/lpr.log"); };
destination user { file("/opt/var/log/user.log"); };
destination uucp { file("/opt/var/log/uucp.log"); };
destination ppp { file("/opt/var/log/ppp.log"); };
destination mail { file("/opt/var/log/mail.log"); };

destination mailinfo { file("/opt/var/log/mail.info"); };
destination mailwarn { file("/opt/var/log/mail.warn"); };
destination mailerr { file("/opt/var/log/mail.err"); };

destination newscrit { file("/opt/var/log/news/news.crit"); };
destination newserr { file("/opt/var/log/news/news.err"); };
destination newsnotice { file("/opt/var/log/news/news.notice"); };

destination debug { file("/opt/var/log/debug"); };
destination messages { file("/opt/var/log/messages"); };

destination udp_machinename { udp( your.ip.add.rr port(514) template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); };
destination alllog { file("/opt/var/log/all_$R_YEAR-$R_MONTH-$R_DAY.log" template("$DATE $FULLHOST [$FACILITY.$LEVEL] $MESSAGE\n") template_escape(no) ); };

filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_user { facility(user); };
filter f_uucp { facility(cron); };
filter f_ppp { facility(local2); };
filter f_news { facility(news); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news); };
filter f_emergency { level(emerg); };

filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };

log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(src); filter(f_kern); destination(kern); };
log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_user); destination(user); };
log { source(src); filter(f_uucp); destination(uucp); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };
log { source(src); filter(f_news); filter(f_crit); destination(newscrit); };
log { source(src); filter(f_news); filter(f_err); destination(newserr); };
log { source(src); filter(f_news); filter(f_notice); destination(newsnotice); };
log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_ppp); destination(ppp); };

log { source(src); destination(udp_machinename); };
log { source(src); destination(alllog); };

Создание пользователей

Добавляю командой adduser (можно и напрямую править /etc/passwd и /etc/group). Не забываю сделать

echo "/etc/passwd" >> /usr/local/.files
echo "/etc/group" >> /usr/local/.files
flashfs save && flashfs commit && flashfs enable

Домашние папки создаю в /opt/home.

HP LaserJet 2015 and WL-500gP

ASUS WL-500g Premium ASUS WL-500g Premium я купил уже давненько, но все еще не "занимался" ним, как я любил заниматься с Линупсами.

HP LaserJet 2015 Сейчас возникла необходимость расшарить этот замечательный принтер HP LaserJet 2015 на два компа.

Покопавшись в гугле и в книжечке рутера было объявлено, что оно поддерживает принтеры, но не все. Поиск списка конкретных моделей успехом не увенчался, поэтому я решил просто попробовать.

Подключение принтера HP LaserJet 2015 к WL500gP и настройка маршрутизатора

Первое, что необходимо сделать, - подключить принтер через USB к порту рутера. В админке System Setup --> Services разрешить Enable LPR printing и Enable RAW printing. Samba для печати мне нафиг не нужна.

Ядро с радостью сообщает, что увидело принтер:

Jan 16 14:58:38 kernel: hub.c: new USB device 01:03.2-2, assigned address 3
Jan 16 14:58:39 kernel: printer.c: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x3817
Jan 16 14:58:39 kernel: printer.c: usblp0 Device ID string [170]='MFG:Hewlett-Packard;CMD:PJL,PML,POSTSCRIPT,PCLXL,PCL;MDL:HP LaserJet P2015 Series;CLS:PRINTER;DES:Hewlett-Packard LaserJet P2015 Series;MEM:MEM=23MB;COMMENT:RES=1200x1;'

В админке, правда, Status & Log --> Status не отображает модель и статус принтера. По началу я расстроился, подумал, что ничего не получится, но, все-таки, не остановился на достигнутом. Смотрю netstat -l:

tcp        0      0 *:printer               *:*                     LISTEN
tcp        0      0 *:laserjet              *:*                     LISTEN

Обана! Протокол laserjet, порт 9100! Перехожу к настройке принтера в Windows Vista и XP.

Добавление принтера в Windows Vista и XP

Windows Vista

  1. Иду в 'Control Panel\Printers' и делаю 'Add printer'. Далее 'Add a network, wireless or Bluetooth printer'.

    Choose a local or network printer

  2. Автоматически оно, понятное дело, ничего не нашло, поэтому смело жмем 'The printer that I want isn't listed'.

    Searching for available printers...

  3. Здесь выбираем 'Add a printer using a TCP/IP address or hostname'.

    Find printer by name or TCP/IP address

  4. Вбиваем IP адрес WL500gP.

    Type a printer hostname or IP address

  5. После длительной мозговой деятелности Windows говорит 'Additional port information required' и просит помочь в выборе правильного типа устройства. Нам нужен 'Hewlett Packard Jet Direct'.

    Additional port information required

  6. Наконец просят показать драйвера устройства. Я скачал с офсайта и указал.

    Install the printer driver

  7. Последний шаг - ввод имени принтера.

Как всегда, печатаем тестовую страничку. У меня все окей, а у тебя?

Windows XP

Процедура практически аналогична. Я, правда, делал не с нуля, а в текущих настройках принтера добавил сетевой порт и удалил старый - он мне больше не нужен!

Usability этого решения

Пока что проблем не возникало. Буду замечать грабли - обновлю страничку. В первую очередь интересует работа со спулером, очередью печати и поддержка PostScript 2 или 3.

UPDATE: WL-500gP HP 2015 problems.

Home router with WAN, LAN, WiFi and Linux

Я долго собирался купить домой маленький маршрутизатор. Хотел WiFi, поддержку IDE диска и, самое главное, - Linux, который можно настроить из консоли. На форумах узнал, что лучшим решением является серия ASUS WL-500.

Уже несколько дней, как приобрел ASUS WL-500g Premium. ASUS WL-500g Premium

В наличии:
  • 1 100Mbit WAN
  • 4 100Mbit LAN
  • WiFi типа g (54Mbit)
  • 2 USB
  • Linux
С поддержкой IDE у него не сложилось, да и смысла нет - производительность такого решения крайне низкая.

Настраивается за несколько минут через веб интерфейс, позволяет принудительно установить MAC адрес сетевой карты WAN (я был очень доволен этой функцией т.к. мой провайдер привязывается к MAC сетевой карты). Есть проброс портов, простенький файрвол, поддержка USB-принтера, DHCP-сервер. Короче говоря, его функций хватит для рядового пользователя с головой. К примеру, если вы беспокоитесь о торрентах из-за внутреннего айпи, - не надо, рутер поддерживает UPnP, поэтому uTorrent заработает на отдачу без проблем.

Я, как бывший любитель UNIX, сразу же поставил на устройство альтернативную прошивку от Олега. Самым важным для меня оказалось наличие telnet сервера для доступа к консоли устройства. Дальше - интереснее, т.к. с архитектурой MIPS я не знаком и опыта работы с подобными железяками у меня не было. NVRAM, FlashFS и много нового. Благо, на форуме настройка девайса расписана очень прилично. Пока что я поднял лишь SSH сервер, в будущем планирую сделать из WL-500g полноценную качалку (*ttp, torrent). Но для этого нужно устройство хранения данных и много часов хардфакинга.

Напоследок, несколько неприятных моментов... Я расчитывал, что моя мама ASUS P5B Deluxe с встроенной карточкой WiFi сможет нормально работать без проводов. Но, не судьба, - при скорости больше 1М/с мышка начинает дергаться. Подозреваю, что плата генерирует слишком много прерываний.

Гвоздь в гроб Windows

20 минут назад мне подкинули в аське ссылочку на статью "Гвоздь в гроб Windows". Мне, как человеку, использовавшему UNIX-подобные ОС системы больше 6-ти лет, стало интересно - что нового может быть брошено в эту глупую войну. Вкратце основные пункты статьи:

  • будущее за unix-системами, и уже ясно, что это будет Linux

    А почему Linux? Почему не FreeBSD или OpenBSD или Solaris? Ответ на этот вопрос полностью содержится в статье, только надо поменять Windows на Linux.

  • Выпустив продукт единожды (вложив деньги в его разработку), корпорация Microsoft косит бешенные деньги на постоянно возростающем количестве потребителей продукта, тратя при этом копейки. Другими словами, каждый платит за то, за что уже заплатили многие другие.

    Неоспоримый факт. Вот только программисты, тестировщики, менеджеры, уборщицы продолжают получать зарплату. Продолжают отвечать на глупые телефонные звонки, на сообщения в форумах поддержки, продолжают создавать апдейты, сервис паки и пр. А реальная стоимость (важность) разработки может оцениваться далеко не в выплаченных сотрудникам деньгах, а в миллионы раз больше.

  • Аналоги есть, и по своим характеристикам значительно превосходят Windows.

    По каким характеристикам и в чем превосходят? По количеству статей, которые я должен прочитать, чтобы настроить хоть что-то, что не было настроено при установке? Или по количеству команд, которые я вынужден набрать?

    Но при работе с ними есть ряд проблем, связанных с совместимостью программ, драйверами оборудования, невозможностью легально использовать закрытые патентами MS протоколы...

    Какие закрытые патентами протоколы? Проблема UNIX в том, что его ПО не соответствует потребностям пользователей. И, что самое плохое, - никто эти потребности выяснять не хочет. А Microsoft тем временем тратит кучу денег на создание удобных интерфейсов и повышение юзабилити.

  • они не заработали этих денег и близко.

    Кто "они"? Билл Гейтс? Свои деньги он заработал, уж поверь. А вот разработчики, написавшие Windows, действительно, своих денег не заработали (точнее, не получили), т.к. зарплата разработчика в MS колеблется от 75 до 150 тысяч в год (ровно, как и зарплата Билл Гейтса не составляет миллиарды). Остальные деньги сотрудники получают с опционов (акций) своей же компании. Чем больше человечек сделал для развития корпорации - тем больше он сможет купить опционов.

    Если кто-то говорит вам, что пользоваться нелицензионным Windows - воровство, то смело отвечайте, что эта корпорация обокрала всех нас, перетянув удавкой горло мировому рынку ПО и продавая задыхающимся пользователям свой пыльный воздух по цене золота.

    Если рынок ПО (в частности, бесплатного ПО) не способен составить конкуренцию платным продуктам, то Microsoft в это не виновата. Ровно, как и любая другая организация не виновата, что ее продукт - лучший. Никто никого не заставляет покупать Windows. Сиди на своем Linux-е, чем ты не доволен? Firefox используют не потому, что он бесплатный, а потому, что он лучше. И, стань он платный, его будут продолжать использовать. Конкуренция рождается, когда продукты взаимозаменяемы. О Windows и Linux этого сказать нельзя.

  • пользуйтесь такой операционной системой, которую дают бесплатно, поскольку деньги создатели зарабатывают не на вас, а на техподдержке

    В результате получаешь то, что создатели решили реализовать, не отрываясь от банки пива, а вовсе не то, что требуется пользователю. И, вместо траты увесистой суммы денег на то, что ему нужно, дешевле купить Windows, где подавляющая часть необходимого уже есть.

  • программист должен сполна получить за свою работу, и плюс премию, и плюс отпускные, и плюс все вышеперечисленное умножить на три, если работа хороша. Но не миллиарды.

    Никакой программист не получает миллиарды, откуда эта глупость появилась в твоей голове?

  • Стоимость рекламы товара не входит в его рыночную цену.

    Ошибаешься. Ты платишь за товар, за его рекламу и сам же ее потом смотришь.

  • Мировой продукт должен быть бесплатен, т.к. стоимость разработки полностью окупается рекламой фирмы-производителя при использовании продукта.

    Леонид Каганов, а ты сыт от того, что отрекламирован? Или ты все-же ждешь, что твоя реклама когда-то превратится в заказ с кругленькой суммой? Или, может, ты выполнишь заказ бесплатно в пользу еще большей рекламы? До тех пор, пока не умрешь с голоду. Microsoft уже давно прошла этот этап и сейчас рубит заслуженное бабло (при этом нахаляву продолжая себя рекламировать).

  • Этот сыр - бесплатный.

    Для тебя - почти бесплатный. Зато не бесплатный для провайдеров, через оборудование которых прошли байты этой картинки. Бесплатного сыра не бывает. Точней, даже за бесплатный сыр кто-то платит.

  • неграмотно спланированная, полная ошибок, лишенная системы безопасности с грамотным разграничением прав пользователей, она служит прекрасным компостом, в котором роятся черви и вирусы самых разных мастей.

    Автор, ты абсолютно некомпетентен, чтобы говорить подобное. Windows NT еще с версии 3.51 4.51 сертифицирована по уровню безопасности C2. И было это в 1995 году, а с тех пор много чего изменилось в ядре в лучшую сторону.

  • Интерфейс пользователя намного красивее и удобнее, например, у Макинтоша, откуда MS постоянно тырит решения.

    MS тырит, и правильно делает. А самый красивый и удобный интерфейс у удобной палки, которой можно колотить по пню.

  • быстрее всего исправляются ошибки в системах с открытым кодом.

    Беспочвенное заявление. Их там быстрее всего находят. И чаще находят. И находят порядком больше, чем в системах с закрытым исходным кодом. А Windows Update позволяет тебе быть уверенным, что дырки будут закрыты быстро и автоматически, без ежедневного чтения BugTraq. Да и лучше не исправлять ошибки, а выпускать софт без ошибок, но, оупенсорсу до этого далеко.

  • Да, Windows самая распространенная сегодня. А почему? Ответ прост: как мы уже говорили, это потому, что под Windows работают все программы, игры и любое оборудование. А почему они работают под Windows? Потому что это самая удобная среда для запуска программ и устройств? Напротив: большинство системных протоколов закрыто и нет документации. Программы и драйвера создают под Windows именно потому, что это самая распространенная система. Замкнутый круг.

    Они работают под Windows потому, что ОС представляет собой адекватную среду для разработки таких программ (как и UNIX для программ другого типа - сетевых сервисов). Потому, что аналога DirectX с аппаратной поддержкой видеокартами в UNIX-е нет и не будет. Потому, что графический сервер X11 - тормозящее устарелое убожество. Потому, что нет адекватных инструментальных средств для разработки.

  • Но замкнут этот круг не без помощи MS, который за ваши же деньги фактически подкупает производителей софта и игр, чтобы они не создавали аналогов под другие платформы, а создатели оборудования не раскрывали спецификаций, которые позволят написать драйвер кому-нибудь еще.

    Бред. Производители софта сначала выбирают ОС (и инструментарий), а потом уже создают продукт. А создатели оборудования продают свои спецификации! И правильно делают.

  • пришлось бы бегать к ним в соседний квартал чинить слетевший Windows - страшную штуку в руках деятельного и любопытного новичка.

    Заменить Windows на Linux.

  • Но мне ненавистна сама идеология этой системы, которая пытается забрать себе мой компьютер, не пускать меня внутрь и не докладывать, что она с ним делает, а взамен всякий раз предлагать мне три простых типовых варианта на каждый случай при каждом событии, и непрерывно просить за этот сервис денег.

    У каждого свои цели при использовании чего-либо. Кто-то любит наблюдать появление строчек в файле /var/log/xxx.log, жуя при этом позавчерашний бутер, найденный в системном блоке. Кто-то вынужден наблюдать за изменением квот на бирже дабы сходить в дорогой ресторан, и ему совершенно наплевать на то, какая идеология у ОС.

  • Все больше программ появляется под Linux. Фактически нет только хорошего Фотошопа, хотя Gimp уже близок.

    Хорошего Фотошопа нет и не будет. По крайней мере до тех пор, пока не появится нормальный современный векторный графический сервер. Нет, не сервер, а подсистема, в которой шрифты будут выглядеть одинаково качественно, а не корявиться после очередного апдейта, а возможности видеокарты будут задействованы по максимуму.

Если задуматься, то речь вообще не о Microsoft или программном обеспечении, а о стоимости интеллектуальной собственности. Такие же рассуждения можно провести в области музыки, литературы, кино.

В целом, с автором я согласен в том, что Microsoft гребет слишком много денег с пальца. В этом плане мне нравится лицензионная политика Oracle: используешь для зарабатывания денег - плати! Поэтому считаю, что для некоммерческого использования ОС должна быть бесплатной (или условно-бесплатной за 10 баксов). А послевкусие статьи у меня такое: оплачиваться должно создание корпоративного софта.

Мне кажется, что текущее положение вещей в области интеллектуальной собственности вполне рационально и адекватно - она (собственность) бесценна. Так что платим, товарищи. The best software money can buy.

Установка Oracle 11g на RHEL5

Здесь описан процесс установки. Замечу, что важно отрубить SeLinux. Лучше всего при установке RHEL5. Можно утилитой system-config-selinux. Можно руками.

Disable secure linux by editing the /etc/selinux/config file, making sure the SELINUX flag is set as follows: SELINUX=disabled Alternatively, this alteration can be done using the GUI tool (Applications > System Settings > Security Level). Click on the SELinux tab and disable the feature.

Oracle 11g is available for download

Наконец-то можно попробовать Oracle 11g в действии. Правда, пока только под Linux.
Oracle Database 11g Release 1 (11.1.0.6.0) for Linux x86 
   linux_11gR1_database.zip (1,844,533,232 bytes) (cksum - 4231932775)      
  Directions 
    1. All files are in the .zip format. There is an unzip utility here if you need one. 
    2. Installation guides and general Oracle Database 11g documentation are here. 
    3. Review the certification matrix for this product here. 
    
Oracle Database 11g Release 1 Client (11.1.0.6.0) for Linux x86
   linux_11gR1_client.zip (458,677,395 bytes) (cksum - 2693183676)  

Oracle Database 11g Examples (formerly Companion)
   linux_11gR1_examples.zip (457,209,469 bytes) (cksum - 606940067)  

Oracle Clusterware Release 1 (11.1.0.6.0) for Linux x86
   linux_11gR1_clusterware.zip (244,654,895 bytes) (cksum - 3625236068)  
      
Oracle Database Gateways 11g Release 1 (11.1.0.6.0) for Linux x86
   linux_11gR1_gateways.zip (451,061,474 bytes) (cksum - 1541243104) 
Copyright 2007-2011 Chabster