Что поправить в свеже-проинсталлированном Linux
Текст будет пополняться.
Я знаю единственный дистрибутив Linux, который можно было
использовать сразу, не ковыряясь в его конфиг-файлах, в
пользовательском окружении, и т.п. - Slackware 1.0 образца 1994
года.
Все последующие релизы Slackware, а тем паче RedHat перед
употреблением требуют хирургического вмешательства.
RHEL3. Сборка rpm ядра из оригинального src.rpm
rpmbuild --rebuild bla-bla.src.rpm
Больше тонкостей открывается при
rpm -ivh kernel-*.src.rpm
vi /usr/src/redhat/SPECS/kernel-2.6.spec
... [custom]
rpmbuild -ba /usr/src/redhat/SPECS/kernel-2.6.spec
RedHat 8-9, FC, Advanced server
lockkit --disable -q # отключить файрволл
From: Сергей Богомолов.
Глючит, сил нет. Но мой SoundBlaster только в нем работает.
From: Дмитрий Волошин
Глючный.
From: Максим Мошков
Глюки, а какие - сам не пойму, вроде и не впомнишь на что
жаловаться. А на firewall я опять поставил 4.2 (с заплатками,
естественно).
From: Юрий Васильевич Коваленко
1.) если не установил LILO именно с этого дистрибутива (а
у меня на машине есть еще и RH-4.2) rc.sysinit не может найти
модули.
2.) После установки в resolv.conf появилась только одна
строка с одним словом "search", информацию о сети просил узнать
по bootp. Следствия - ругань на неправильный формат файла и
отсутствие доступа к nameserver.
3.) При сборке ядра 34-1 из /updates ручками пришлось
делать link asm - asm-i386
4.) Glint завис при появлении в /updates директории
(/jpeg). Это то, что вспомнилось сразу, особенно яркие
впечатления от 1 пункта. По сравнению с 4.2 - очень сыро,
очень плохо реагирует на любой шаг в сторону от представлений
авторов об конфигурации машины. RH-4.2 использую 5 часов в
сутки на он лайн обработке эксперимента, 5.0 и 5.1 не внушают
доверия для этой цели, жду 5.2.
From: Сергей Кузовков
Установил RedHat 5.0 - нет графической конфигурялки для Иксов,
пропала удобная программа statnet, а программа GhostView при
выборе пункта "print" вместо имени принтера требует теперь
ввести команду печати...
Архив cpio -ov в RedHat 5.0 не читается на других платформах.
А совместимый cpio -ovca - НЕ ЧИТАЕТСЯ на самом Linux!!!
Снести "родной" cpio, и заменить его "старым" из 4.2
В явной форме задавать ключ -H crc
Проблема: Инсталляция по NFS - наглухо зависает. "Permition denied"
Лечение: Вы ведь этот дистрибутив сftpили? А право "execute", которое
ftp сбросил, восстановить не забыли?
cd redhat ; chmod -R a+x .
fstab: Пропал диск C:, где дискетки A:, B:
Проблема: Как работать с досовскими дискетами? RedHat
предполагает, что настоящий unixоид пользуется дискетками
формата ext2, и не встречается с FAT-овскими досовскими флоппи.
Проблема: Не подключаются досовские разделы жесткого диска.
Потому что инсталлятор "забыл" сделать mount-point для них.
Проблема: Что делать с CDROM-ом?
Лечение:
Создать соответствующие каталоги
mkdir /a
mkdir /b
mkdir /cdrom
mkdir /dos
mkdir /dosd
В файле /etc/fstab добавить/исправить строчки:
/dev/fd0 /a msdos defaults,user,umask=000,noauto 0 0
/dev/fd1 /b msdos defaults,user,umask=000,noauto 0 0
/dev/cdrom /cdrom iso9660 defaults,user,ro,exec,dev,suid,noauto 0 0
/dev/hda1 /dos msdos defaults,user,umask=000 0 0
startx: Экономим один виртуальный терминал и немного памяти
Проблема: После запуска X, startx занимает один виртуальный
терминал, и оставляет за собой два sleeped процесса.
Лечение:
В файле /usr/bin/X11/startx исправить строчку
xinit $clientargs -- $serverargs
на
exec xinit $clientargs -- $serverargs &
lpd: удаленная печать - permition denied
Проблема: RedHat host по умолчанию не дозволяет печатать на
своем принтере удаленным lpr клиентам.
Лечение: (вообще-то так оно и должно быть - security)
В файл /etc/hosts.lpd вписать все хосты, которым дозволено
печатать.
RedHat: отсутствует pcnfsd
Проблема: PC с клиентами NFS не получают доступ к сетевому
диску.
Лечение:
то, что нужно вписать в /etc/exports хотя-бы такую строчку
/ (rw)
это, полагаю, особого удивления вызывать не должно. Но, в
RedHat не входит демон pcnfsd !
Скомпилируйте pcnfsd из исходников, или возьмите его из
RedHatовского Contrib'а или из Slackware, и добавьте запуск
rpc.pcnfsd в файл активизации nfsserver'а
/etc/rc.d/rc3.d/S60nfs
daemon rpc.mountd
daemon rpc.nfsd
+ daemon rpc.pcnfsd
echo
profile: Проблемы с кирилицей из-за кривого окружения
Проблемы: vi рисует русские буквы восьмиричными кодами. less
рисует русские буквы шестнадцатеричными кодами. Bash не
позволяет ввести в командной строке русских букв и мерзко пищит
при этом.
Лечение:
В /etc/profile добавьте команды
LC_CTYPE=iso_8859_1 export LC_CTYPE # Это спасает русские буквы в VI
LC_LOCALE=iso_8859_1 export LC_LOCALE # Это спасает русские буквы в VI
LESS="-e -r -X" export LESS # Чтоб less русские буквы не калечил
/etc/inittab: RedHat стирает экран перед выводом Login:
Проблема: перед тем, как вывести приглашение login, стирается
экран. Кстати, из-за этого сбрасывается русский алфавит и
перекодировку koi2alt приходилось восстанавливать ручками
echo -e '\033(K'
Лечение:
В /etc/inittab поправить строчки запуска getty (добавить "--noclear")
1:12345:respawn:/sbin/mingetty --noclear tty1
. . .
profile: Как расправиться с неудобным приглашением bash
Проблема: Приглашение командного интерпретатора bash во первых
невразумительно, а во вторых в разных окошках оно разное.
Лечение:
Приглашение задается переменной окружения PS1. Наивен, кто
считает, что достаточно установить ее в своем пользовательском
.profile . Увы, следы кривого окружения надо выкорчевывать с
корнем.
В файлах /etc/profile /etc/skel/.bashrc $HOME/.profile
добавьте/исправьте команду
PS1='\u@tty2:\w/\$ ' export PS1
Файл /etc/bashrc уничтожьте. Все что было в нем разумного
(IMHO - ничего в нем разумного нет) верните на свое законное
место в /etc/profile
/etc/skel: Лажовое пользовательское окружение
Проблема: Выставляется безумное значение переменной PS1.
Не отрабатывается пользовательский .profile
Лечение:
Удалить в домашнем каталоге файлы
.bash_logout
.bash_profile
Исправить файл .bashrc на
PS1='\u@tty2:\w/\$ ' export PS1
Чтобы прекратить "осчаствливливание" всех своих юзеров,
проделать ту же операцию в каталоге /etc/skel
Продолжение следует. Рекомендую так же посмотреть:
Начало работы в системе ()
Команда man по завершении просмотра стирает экран с мануалом
Проблема: Команда man по завершении просмотра стирает экран с
мануалом Называется "а у тебя ведь хорошая память? Isn't it?"
Лечение: man использует для просмотра команду less. У less есть
ключ "-X" - "не деинициализировать экран по окончании. Поэтому
добавьте его к дефолтным ключам в переменную окружения LESS в
своем профайле.
LESS="-e -r -X" export LESS
Лечение: другой метод - поправить в описании терминала строку
деинициализации (ах, как там она называется?), и убрать из нее
команду стирания экрана.
crontab: масса излишних работ
crontab root'а лежит у RedHat в нестандартном месте -
/etc/crontab . Может быть для БОЛЬШОГО много пользовательского
internet-сервера и нужен такой огромный список планируемых
работ, но все равно, рекомендую на него посмотреть, сократить
частоту запуска раз эдак в 10, а кое-что совсем
закомментировать.
Конкретно: сократить частоту atrun
0,10,20,30,40,50 * * * * root /usr/sbin/atrun
# Trim log files
увеличить размер при котором log-файл удаляется с 16 до 256kb
Если используется uucp то добавить чистку uucp-ишых log-файлов.
В Redhat Linux ежедневно пускается команда updatedb, создающая
индекс для locate. Однако в этот индекс попадают файлы только
из корневого каталога.
Лечение: исправить ключи команды updatedb в файле
/etc/cron.daily/updatedb.cron
с
--localpaths='' --netpaths='/'
на
--localpaths='/' --netpaths=''
Поставляемый с RedHat файл Xsession неработоспособен.
Поправьте в /etc/X11/xdm/Xsession нижний фрагмент текста на
примерно такой:
################## moshkow #############################
sysprofile=/etc/profile
profile=$HOME/.profile
[ -f "$sysprofile" ] && . $sysprofile
[ -f "$profile" ] && . $profile
[ -f "$resources" ] || resources=$HOME/.Xdefaults
[ -f "$resources" ] || resources=$HOME/.Xresources
[ -f "$startup" ] || startup=$HOME/.xinitrc
[ -f "$startup" ] || startup=$HOME/.xsession
[ -f "$startup" ] || startup=/usr/lib/X11/xinit/xinitrc
if [ -f "$startup" ]; then
xrdb -load "$resources"
exec sh "$startup"
fi
################## moshkow #############################
Разное. Нерешенные проблемы
После перекомпиляции ядра ВСЕ модули, пришедшие с дистрибутивом
перестают работать. Их остается только уничтожить. Но iBCS
уничтожать жалко - а он скомпилирован почему-то под версию ядра
2.0.13 вместо 2.0.18. Приходится искать исходник iBCS и
перекомпилировать.
Штатная поставка sendmail 8.7.5 имеет security hole -
локальный юзер имеет возможность получить root права.
Штатная поставка sendmail 8.7.5 неработоспособна вообще -
примерно четверть всех писем недоставляется по причине delivery
errors
Единственный метод лечения - upgrade до версии 8.8.5, у
которого этот bug залечен
Поставляемый с RedHat 3.0 mount имеет security hole -
локальный юзер имеет возможность получить root права.
Произведите update на исправленную версию,
ftp://ftp.redhat.com/pub/redhat/redhat-3.0.3/i386/updates/RPMS/mount-2.5k-1.i386.rpm
или снимите setuid-бит с команд mount/umount
# chmod u-s /bin/mount /bin/umount
Несколько рекомендаций по безопасности
Вольный перевод с
http://www.corbina.net/~ppinpro/alx/gen-rule.html
Если ваш дистрибутив старее 3-5 месяцев - смело выкидывайте его
на свалку. Он содержит массу известных всему миру security
holes и не имеет массы полезных утилит.
Обязательно перекомпилируйте ядро, выкинув из него все не
нужные сейчас дравера.
Не забудьте сделать chmod 400 /vmlinuz.
Добавьте в /etc/lilo.conf возможность загрузки предыдущego ядра.
Отредактируйте /etc/inetd.conf. Закомментируйте в нем ВСЕ
строчки, которых не понимаете.
Если что-то осталось незакомментированно, поместите строку
ALL : ALL в файл /etc/hosts.deny
И индивидуальные строчки разрешений на доверенные хосты в файле
/etc/hosts.allow
ВСЕ версии sendmail, кроме САМОЙ СВЕЖЕЙ позволяют взломать ваш
компьютер из сети. Уничтожте файл со старой версией.
wu-ftp демон ненадежен и опасен. Никто не поклянется, что в нем
исправлены все security holes.
Конфигурирование tcp-wrapper'а
По умолчанию все сервисы в /etc/inetd.conf открыты.
Рекомендуется ограничить доступ к своей машине, оставив его
только доверенным хостам и своей локальной сети.
Перекрыть доступ снаружи на узловую машину:
В файл /etc/hosts.deny вставить строчку
ALL : ALL
Открыть доступ на узловую машину с машин локальной сети
195.0.1.0
В файл /etc/hosts.allow вставить строчки
ALL : \
127.0.0.1
ALL : \
195.0.1.0/255.255.255.0
А какой версии sendmail на вашей машине?
Date: 10 апр 97
Кстати CERT советует ставить Sendmail 8.8.5. Более ранние
версии позволяют удаленно выполнять любые команды от имени
суперпользователя на вашей машине.
httpd: дырявые cgi-скрипты
Штатная поставка Apach-httpd имеет cgi-скрипт
/home/httpd/cgi-bin/phf который позволяет выполнять
произвольные команды на вашей машине от имени юзера nobody
При реконфигурации ядра не забудьте взвести флажки:
> * Drop source routes pakets [Y]
Drop packets that have a source route flag set. This stops simpliest
redirection attacks and should be always set to yes.
> * always defragment [Y]
Reassemble packet from fragments first and only after that apply firewalling
rulesets. Unless you have a really good reason not to do this ( and I am yet
to hear one ), it should be set t yes.
Имеющий доступ к консоли Linux может стать суперюзером
0. Загрузка со своей загрузочной дискеты
1. Booting to single-user mode
LILO: linux single
Debian обходит это поправками в /etc/initab, а RedHat - пропускает
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin
2. Указать альтернативную программу init
LILO: linux init=/bin/bash
3. Задать другой root-partition
LILO: linux root=/dev/hda1
Если создать в отдельной партиции всю положенную для корня
структуру, то можно будет с нее загрузиться.
Эту возможность можно получить, например, если /tmp
монтируется в отдельную партицию. Или машина поддерживает UMSн
DOS и имеет досовский раздел.
Лечение
Закрыть паролем BIOS-setting и отключить возможность
загрузиться с дискеты.
Закрывайте возможность перехвата LILO-prompt
A workaround can be achieved by using PASSWORD and
RESTRICT options in /etc/lilo.conf.
Внимание: /etc/lilo.conf должен быть root.root 600, чтоб
никто не смог этот пароль подсмотреть.
kerneld and ifconfig загрузят любой kernel-модуль
Команда
/sbin/ifconfig module-name
позволяет _любому_ пользователю загрузить модуль из каталога
/lib/modules используя kerneld.
Лечение:
Пока не залечено в промышленном масштабе. Отключайте kerneld
или явно указывайте модули, которые можно грузить, уберите все
лишние модули доставшиеся вам после инсталляции.
/etc/rc.d : Лишние команды при начальной загрузке
Проблема: при начальной загрузке запускается большое количество
излишних сервисов (что особенно нервирует на домашних standalone
машинах)
Лечение:
Зайти в каталог /etc/rc.d/rc3.d
и переименовать "лишние" файлы:
mv S45pcmcia s45pcmcia
. . .
/etc/sysconfig/network-scripts/ : Некорректные установки статического роутинга
Если пытаться устанавливать статический роутинг сетей через
"control-panel -- Network" - то не работает.
Лечение:
Либо добавить команды
route add -net network.address gw your-host
в файл /etc/rc.d/rc.local
Либо исправить в конце /etc/sysconfig/network-scripts/ifup-routes
grep "$1 " /etc/sysconfig/static-routes | while read device args; do
route add -$args $device
done
на
grep "$1 " /etc/sysconfig/static-routes | while read device args; do
route add -$args # $device
##########
done
/etc/sysconfig/network-scripts/ : Некорректные скрипты
From: Roman (mrv@fia.volga.ru)
Проблема: Припекло установить два PPP интерфейса. пользовался
стандартной конфигурялой в иксах. Глюк - при выставлении у
одного интерфейса признака Default gateway, таблица роутинга
строится с двумя default
Лечение: Анализ показал - при запуске демона
PPPD, если ему явно не указать отказ от Default gateway,
то по умолчанию он поставится сам.
Необходимо в файле /etc/sysconfig/network-scripts/ifup-ppp
найти строку:
if [ "${DEFROUTE}" = yes ] ; then
opts = "$opts defaultroute"
fi
И добавить в нее:
if [ "${DEFROUTE}" = yes ] ; then
opts = "$opts defaultroute"
else
opts = "$opts -defaultroute"
fi
Проблема: При использовании Alias на сетевые карты не
отрабатывается Static-route
Пример: Есть адаптер eth0 , делаем алиас на него eth0:0
При попытке постройки статического роутинга
в файле /etc/sysconfig/static-routes для сети на
интерфейсе eth0:0 после перезагрузки
компьютера ничего не произойдет.
Лечение: Готового решение пока нет, но причина
в скрипте который инициализирует запуск сети
В нем анализ интерфейсов в файле /etc/sysconfig/static-routes
идет до знака "двоеточие"
Лечение2: Кардинальное - горбатого могила исправит. Выкинуть
GUI-control-panel и конфигурить руками и вставлять команды
под'ема интерфейсов и роутинга в /etc/rc.d/rc.local
Расположение ядра /vmlinuz или /boot/vmlinuz ?
Проблема: заморочки с ядром. С инсталляции рабочее ядро
кладется в /boot/vmlinuz и /etc/lilo.conf затачивается под
него, а при перекомпиляции, по команде make zlilo ядро
забрасывается в /vmlinuz
Лечение:
Поправить /etc/lilo.conf ручками, и сказать lilo
Настраиваемые параметры ядра
На сильно загруженных системах начинается игра в нехватку:
cannot fork try again, no more filedescriptors, no more pty...
Лечение: Увеличьте настраиваемые параметры и перекомпилируйте ядро.
Число псевдотерминалов (а следовательно число xterm'ов,
телнетов...)
/usr/src/linux/include/linux/tty.h
#define NR_PTYS 256 /* этот параметр трогать не рекомендуется */
И не забудьте mknod для большего числа pty
Максимальное число процессов
/usr/src/linux/include/linux/tasks.h
#define NR_TASKS 4090 /* On x86 Max 4092, or 4090 w/APM configured */
#define MAX_TASKS_PER_USER (NR_TASKS/2)
#define MIN_TASKS_LEFT_FOR_ROOT 16
Число файлдескрипторов и открытых файлов.
/usr/src/linux/include/fs.h
#define NR_FILE 4096
#define NR_INODE 3072
Update RedHat 3.0.3 --> 4.0
Нормально можно поставить RedHat с CD или по NFS.
А вот с локального жесткого диска...
#$%^#$&&^)#%$@$&^*%%^
а еще он стер мой файл /etc/hosts, /etc/httpd/conf/*,
переименовал /etc/sendmail.cf, /etc/lilo.conf
Короче, я-то поставил. А Вы?
Update RedHat 4.0 --> 4.1
1. Во время установки в самом конце спрашивается: "Keep current
network setting" Я сказал "No", машина неожиданно сделала reн
boot, и потом ей было не здорово. Во второй раз я сказал ей
"Keep"
2. После update на начальной загрузке появляется сообщение
klog-daemon: ws unknown action
Причина: В файле syslog.conf разрезалось несколько строчек.
news.=crit /var/log/news/ne
ws.crit ^^^ склеить
3. В sendmail 8.8.5 не удается по нормальному настроить uucp-
delivering. Несмотря на Smart-relay-host, он тем не менее
пытается сделать на адреса DNS-resolving.
Отключить не удалось, FEATURE(nodns) не помогла. Пришлось взять
старый uucp_without_dns sendmail.cf из-под slackware 2.0
Продолжение следует: xdm, uucp, startx-win95...
Присылайте свои советы/замечания/дополнения по поводу всего
вышесказанного
Максим Мошков. moshkow@ipsun.ras.ru
Если не работает сетевая карта
http://www.scyld.com/network/rtl8139.html
http://www.scyld.com/expert/modules.html
Компиляция модуля с дравером:
gcc -DMODULE -D__KERNEL__ -O6 -c driver.c
Инсталляция в /lib/modules/kernel-version/net/driver.o
install -m 644 driver.o /lib/modules/`uname -r`/net/
/etc/modules.conf:
###########################
alias eth0 driver
options driver full_duplex=1,0,1 debug=0
# включить full-duplex на 1 и 3-й карте
###########################
Возможные поправки в TCP-конфиге
если слишком много time_wait
netstat -na -f inet | grep ^tcp4 | awk '{print $(NF)}'|sort |uniq -c
echo 1600 >/proc/sys/net/ipv4/tcp_keepalive_time
echo 20 >/proc/sys/net/ipv4/tcp_fin_timeout
echo 1 > /proc/sys/net/ipv4/tcp_keepalive_probes
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 393213 > /proc/sys/net/core/rmem_max
echo 393213 > /proc/sys/net/core/rmem_default
echo 393213 > /proc/sys/net/core/wmem_max
echo 393213 > /proc/sys/net/core/wmem_default
Изготовление emergensy boot floppy
# mke2fs /dev/fd0
# mount /dev/fd0 /mnt/fd
# mkdir /mnt/fd/boot
# mkdir /mnt/fd/boot/grub
# cp /boot/grub/stage1 /mnt/fd/boot/grub/stage1
# cp /boot/grub/stage2 /mnt/fd/boot/grub/stage2
# cp /boot/grub/menu.lst /mnt/fd/boot/grub/menu.lst
# umount /mnt/fd
# /sbin/grub --batch --device-map=/dev/null <<ЕОF
device (fd0) /dev/fd0
root (fd0)
setup (fd0)
quit
ЕОF
Старый GRUB:
# cd /boot/grub/
# dd if=stage1 of=/dev/fd0 bs=512 count=1
# dd if=stage2 of=/dev/fd0 bs=512 seek=1
А так же см.
apt-cache search bootable
livecd
mkbootdisk
mkinitrd-cd
Last-modified: Fri, 28 Apr 2006 08:23:52 GMT