среда, 11 апреля 2007 г.

Что поправить в свеже-проинсталлированном Linux

Текст будет пополняться.

Я знаю единственный дистрибутив Linux, который можно было
использовать сразу, не ковыряясь в его конфиг-файлах, в
пользовательском окружении, и т.п. - Slackware 1.0 образца 1994
года.

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

RedHat 5.1



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.

RedHat 5.0



From: Сергей Кузовков

Установил RedHat 5.0 - нет графической конфигурялки для Иксов,
пропала удобная программа statnet, а программа GhostView при
выборе пункта "print" вместо имени принтера требует теперь
ввести команду печати...

Несовместимый cpio



Архив cpio -ov в RedHat 5.0 не читается на других платформах.
А совместимый cpio -ovca - НЕ ЧИТАЕТСЯ на самом Linux!!!

Снести "родной" cpio, и заменить его "старым" из 4.2
В явной форме задавать ключ -H crc

RedHat 4.2, 5.0



Проблема: Инсталляция по 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=''

Конфигурация XDM



Поставляемый с 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 и
перекомпилировать.

* SECURITY *



Штатная поставка 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

Securные параметры ядра



При реконфигурации ядра не забудьте взвести флажки:

> * 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...



Присылайте свои советы/замечания/дополнения по поводу всего
вышесказанного



http://www।kentos.ru/Moshkov3/unixhelp/linuxset.html

Комментариев нет: