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

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


     fstab: Пропал диск C:, где дискетки A:, B:

Проблемы:

  1. Как работать с досовскими дискетами? RedHat предполагает, что настоящий unixоид пользуется дискетками формата ext2, и не встречается с FAT-овскими досовскими флоппи.
  2. Не подключаются досовские разделы жесткого диска. Потому что инсталлятор "забыл" сделать mount-point для них.
  3. Что делать с 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"          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

Начало работы в системе

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 #############################

Разное. Нерешенные проблемы

Команда man по завершении просмотра стирает экран с мануалом. Называется "а у тебя ведь хорошая память? Isn't it?"

После перекомпиляции ядра ВСЕ модули, пришедшие с дистрибутивом перестают работать. Их остается только уничтожить. Но 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

Конфигурирование 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 на вашей машине?
Кстати CERT советует ставить Sendmail 8.8.5. Более ранние версии позволяют удаленно выполнять любые команды от имени суперпользователя на вашей машине.


     httpd: дырявые cgi-скрипты


Штатная поставка Apach-httpd имеет cgi-скрипт /home/httpd/cgi-bin/phf, который позволяет выполнять произвольные команды на вашей машине от имени юзера nobody

/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

Расположение ядра /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        512

#define MIN_TASKS_LEFT_FOR_ROOT 4


Число файлдескрипторов и открытых файлов.

/usr/src/linux/include/linux/fs.h

#define NR_OPEN    256

#define NR_FILE   1024



/usr/src/linux/include/linux/limits.h:

#define NR_OPEN    256

Update RedHat 3.0.3 --> 4.0

Нормально можно поставить RedHat с CD или по NFS. А вот с локального жесткого диска...


 #$%^#$&&^)#%$@$&^*%%^


а еще он стер мой файл /etc/hosts, /etc/httpd/conf/*, переименовал /etc/sendmail.cf, /etc/lilo.conf

Короче, я-то поставил. А Вы?



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

Максим Мошков. moshkow@ipsun.ras.ru