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