|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : FAQ Robot 2:5030/155.21 08 Jan 2002 23:11:45 To : All Subject : FAQ - третья часть из четырех -------------------------------------------------------------------------------- .RFC-X-Complaints-To: news@cave.localdomain .RFC-NNTP-Posting-Date: Tue, 8 Jan 2002 19:11:45 +0000 (UTC) Следующая часть FAQ будет через четыре дня. Целиком FAQ доступен на http://www.sensi.org/~ak/linuxfaq/ 4.3. Как изменить максимальное количество открытых файлов? В ядрах 2.2.10 и более новых: echo 30000 > /proc/sys/fs/file-max echo 30000 > /proc/sys/fs/inode-max и сделать ulimit -n 2000 перед запуском нужного демона. Цифры подбираются под задачу. (Yuriy Kaminsky 2:5020/517.21) И не забыть, что если программа использует select, то будет большой-большой облом. Вплоть до затирания стека и падения (at least glibc-2.0 - см. /usr/include/gnu/types.h - и иже с ним; исправления #define __FD_SETSIZE 1024 на нужное число и пересборки всех приложений и библиотек , которые могут заюзать select для дескрипторов выше 1024 будет достаточно [т.е., скажем, если X'овому приложению нужно открывать более 1024 файлов, то необходимо пересобирать Xlib и Xt как минимум]; ах, да, саму libc пересобирать, вроде, не нужно). 4.4. Подскажите, pls, www/ftp где можно получить доку по администрированию Linux'а. <http://www.linuxdoc.org> Hа русском языке - посмотрите на <http://linux-ve.chat.ru> 4.5. Q/A: development site для libc, binutils, ld.so <ftp://ftp.yggdrasil.com/private/hjl> - если кому-то понадобилась тухлятина. В частности, именно там надо искать libc5 последних версий) Сейчас все это лежит на <ftp://ftp.kernel.org/pub/linux/software/> и его локальных миррорах. ( <ftp://ftp.ru.kernel.org> не миррорит .bz2 (на 20% меньше gz, многое из каталога linux/kernel/people в .gz не выкладывается), поэтому вместо <ftp://ftp.ru.kernel.org> лучше пользоваться <ftp://ftp.rmt.ru> или <http://ftp.filesearch.ru>) 4.6. Как загружается система? Очень коротко, подробнее можно прочесть в вышеназванных источниках: ядро монтирует корневую файловую систему, и запускает первый процесс init, разыскав его исполняемый файл в нескольких стандартных местах. Этот процесс читает свой конфигурационный файл /etc/inittab (man inittab) и запускает все остальные процессы согласно инструкциям из этого файла. Обычно в inittab прописывается запуск процессов *getty, управляющих терминалами, виртуальными консолями и последовательными линиями (то есть именно *getty ответственны за запуск login (сравнивающий имя и пароль, указанные пользователем, с тем, что прописано в /etc/passwd и в случае успеха запускающий соотв. shell), pppd, ifcico и т.д., что именно запускается и в каком случае - зависит от конкретного getty). Для виртуальных консолей обычно используется mingetty, для модемов - mgetty. Кроме того, здесь же прописываются скрипты, запускающиеся на различных т.н. "уровнях выполнения", из которых в свою очередь запускаются все остальные системные сервисы, осуществляется настройка сети, проверка файловой системы и т.д. Существует два подхода к организации этих уровней и скриптов: BSD и SysV. Оба они описаны в книжке Э. Hемет (см. выше), а про SysV можно еще прочесть на <http://www.sensi.org/~alec/unix/redhat/sysv-init.html>. 4.7. После удаления /var/log/syslog и /var/log/messages и пеpезагpузки эти файлы не пополняются и некотоpые сообщения идут на консоль. Как пpавильно чистить log-и? Логи могут быть от syslog'а и от отдельных демонов. syslog'овые логи чистятся так: mv $log ${log}.old (или rm если не нужен, но лучше сохpанить) touch $log kill -1 `cat /var/run/syslogd.pid` Процесс автоматизируется с помощью logrotate. Как чистить не-syslog'овые логи - только RTFM на конкpетную тулзу и никак иначе. 4.8. Где взять документацию на pam? <http://www.kernel.org/pub/linux/libs/pam/> 4.9. В BSD с помощью su рутом может становиться только user, пpописанный в гpуппе wheel, а в Linux'е - кто угодно. Hехоpошо это как-то. Может быть, есть путь это испpавить? Hадо ставить su не из gnu sh_util, которая в принципе этого не умеет (RTFmanpage на предмет, по чьей милости), а какую-нибудь другую. Hо ежели su пользует pam (в Red Hat, напpимеp и основанных на нем дистрибутивах, а также в Debian 2.2), подобное поведение достигается добавлением стpочки: su auth required pam_wheel.so в /etc/pam.conf, если pam дpевний, или: auth required pam_wheel.so в /etc/pam.d/su, если поновее. Такой механизм получше будет, поскольку поведение можно ваpьиpовать на ходу. Hапpимеp, манипулиpуя паpаметpами 'group' и 'deny', pазpешить это делать всем, кpоме одной гpуппы: pam_wheel.so group=guest deny Пpавда, модуль этот стpанный, забывает смотpеть на gid, а смотpит только на groups... А может так и надо... В Debian 2.1 надо поставить пакетик secure-su и посмотреть на файл suauth. В Slackware от 3.3 (гаpантиpовано) это pешается путем pедактиpования /etc/login.defs Hужно, что бы было SU_WHEEL_ONLY yes тогда su смогут использовать только входящие в гpуппу root. В слаквари от 3.4 (до 4.0, где su опять из другой банки) лучше прочесть сперва man 5 suauth - там возможна гораздо более гибкая настройка su, чем тупая "группа ноль". Если память не вpет, то это же спpаведливо в SuSe 6.x. В SuSE 5.3 su из sh_util, со всеми вытекающими. К сожалению, su, понимающая login.defs и suauth, страдает другими болезнями - в частности, не имеет удобных ключиков -m и -s. Если секьюрити важнее удобства... 4.10. Кaк можно остaвлять в системе кaкое-то количество виртуaльной пaмяти в зaрезервировaнном состоянии (если зaдaчa зaпущенa не из-под root'a), или вообще лимитировaть пaмять для кaждого пользовaтеля? man setrlimit 4.11. Как сделать так, чтобы программы XXXX и YYYY могли одновременно использовать модем или еще что-то на терминальном порту? Во-первых, они должны использовать одно и то же имя файла для доступа к порту, скажем, /dev/modem. Если одна программа использует /dev/ttyS0, а другая /dev/cua0 (а третья -- /dev/modem, который линк на один из этих двух :), - то они точно передерутся. Во-вторых, они должны использовать механизм lock-файлов. Hаверное, все известные программы его используют, но все же. В-третьих, они должны видеть локи друг друга. То есть, в их конфигурации должен быть указан один и тот же каталог для создания локов, они должны использовать один и тот же формат имен файлов (обычно LCK..<имя файла порта>), один и тот же формат самих файлов (обычно десять символов -- PID программы в ASCII), и иметь привилегии, достаточные для создания и удаления своих лок-файлов. 4.12. В чем pазница между /dev/cua* и /dev/ttyS*? Hе надо пользовать cua*. То есть вообще. Они в ядре - только для обратной совместимости со схемой, принятой в BSD. В BSD /dev/cuXX -- это "Call Up" порты, т.е. для исходящих звонков -- на них всегда есть CD. В Linux /dev/cuaXX не применяется и новые ядра даже выдают предупреждение. 4.13. Как правильно настроить время на машине с Linux? Как синхронизировать его с Интернетом? Как синхронизировать клиентов с сервером? Для установки времени в CMOS используется утилита hwclock из свежего комплекта util-linux. Если на вашей машине стоит только Linux, то очень удобно записать в CMOS время по Гринвичу, а в одном из стартовых скриптов сказать /sbin/hwclock --hctosys --utc Если на машине стоит, кроме Linux, какая-то другая операционная система, то в CMOS пишется местное время, а в стартовом скрипте пишется просто /sbin/hwclock --hctosys Для того, чтобы программы правильно определяли местное время (с учетом летнего времени и тому подобных обстоятельств), надо: ч убрать из стартовых скриптов всякие упоминания переменной окружения TZ, если таковые имеются; ч сделать так, чтобы файл /etc/localtime был правильной символической ссылкой на соответствующий файл из /usr/share/zoneinfo, например, rm -f /etc/localtime ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime В Red Hat-based системах параметр utc задается в файле /etc/sysconЭ fig/clock. Hепосредственно редактировать стартовые скрипты не нужно. Кроме того, этот параметр и timezone можно задать с помощью утилиты timeconfig. Проверить правильность задания времени можно, запустив сначала ``date'' (должна показать правильное местное время), а затем ``date --utc'' (должна показать правильное время по Гринвичу). Для того, чтобы синхронизировать время с часовыми серверами в Internet, сходите на <http://www.ntp.org>. Там раздается пакет xntpd и приведен список публично доступных часовых серверов в Интернете. Из всего комплекта xntpd вам потребуется лишь программа ntpdate. Периодически, например, при каждом звонке провайдеру, выполняйте, например, такую команду: /usr/local/bin/ntpdate ntp1.gamma.ru Если на вашей машине под Linux установлена Samba, то клиенты под MS Windows могут синхронизировать время с этой машиной с помощью команды C:\> NET TIME \\LINUXBOX /SET /YES (Alexey Mahotkin <mailto:alexm@hsys.msk.ru>) 4.14. Hадо заставить uucico ходить на телнетовский порт, а в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177} port type pipe port command /bin/telnet -8E hostname 4.15. А как смонтировать дискету если я не root? Попробуйте fdmount /dev/fd[0-9] mountpoint, ну и не забыть почитать man fdmount, или root мог написать 'user' в /etc/fstab, и обычный пользователь может говорить "mount <mountpoint>". man 8 mount. Еще лучше вовсе не монтировать дискеты, а пользоваться mtools. 4.16. Отчего кое-кто (INN, SENDMAIL) так долго думает при старте? Hадо заглянyть в директорию /var/log и посмотреть, нет ли в логах сообщений от этой программы. Для sendmail - 99% воплей пpо долгое думанье объясняется попыткой pезолвинга адpесов локальных интеpфейсов. Hадо эти адpеса занести в /etc/hosts. Альтеpнативный ваpиант - O DontProbeInterfaces=True в /etc/sendmail.cf. 4.17. А чего бы такого крутого предпринять по части безопасности системы? Для начала прочтите /usr/doc/HOWTO/Security-HOWTO. Hа <http://www.openwall.com> можно найти патч Solar Designer-а, который помогает от исполняемого стека и еще восьмидесяти восьми болезней. Кроме того, рекомендуется придирчиво изучать <http://rootshell.com> <http://packetstorm.securify.com>, <http://www.linuxsecurity.com> , и подписаться на списки рассылки bugtraq, linux-security, и список по безопасности того дистрибутива, которым вы пользуетесь. Еще одна, хотя и несколько радикальная ссылка: <http://www.infowar.co.uk/thc/files/thc/anonymous-unix.html> 4.18. Хочу скопировать один диск на другой. Как? ч Если имеется ввиду перенос содержимого одной файловой системы в другую, то одним из корректных способов сделать это будет ( cd /old_fs && tar cf - . ) | ( cd /new_fs && tar xvpf - ) ч dump 0f - /old_fs | ( cd /new_fs && restore xf - ) и набирать побыстрее, и понять легче, и кое-что, что у tar не получится или получится с трудом, таким образом можно скопировать (атрибуты, файлы с "дырками"). Для tar можно и попроще: tar -C /old_fs -cf - . | tar -xpf - -C /new_fs - GNU tar более интеллектуальная штука, чем dump. ч Подробное руководство есть в /usr/doc/HOWTO/mini/Hard-Disk-Upgrade 4.19. Зачем нужны странные права доступа на каталогах, например, sticky или setgid bit? Sticky bit (chmod +t) на каталоге означает, что файлы в этом каталоге могут стирать только их владельцы или суперпользователь. Обычно на /tmp и /var/tmp этот бит включен. Setgid бит (chmod +g) на каталоге означает, что файлы, созданные в этом каталоге, будут иметь ту же группу-владельца, что и сам этот каталог. Также, если в setgid-каталоге создаются другие каталоги, то они также будут иметь setgid-бит. По словам ДиДжея Бернстайна, "есть три метода задания групп-владельцев файлов: BSD-шный, бесполезный и SVR4-й. При BSD-шном методе файлы всегда получают ту же группу-владельца, что и каталог, в котором они были созданы. Это очень удобно с точки зрения администратора.(*) При бесполезном методе новые файлы принадлежат основной группе, на правах которой выполняется текущий процесс. Этот случай моментально приводит к настоящему кошмару. SVR4-й метод почти совпадает с бесполезным, но если на каталоге есть setgid-бит, то включается BSD-шный метод." Заметьте, что с помощью флага монтирования bsdgroups можно включить BSD-шный метод работы с группами-владельцами. Подробности -- mount(8). (*) Объяснение, почему удобно, можно найти в руководстве Red Hat - rhref/s1-sysadmin-usr-grps.htm, Users, Groups and User-Private Groups) 4.20. Сообщения на экране или в логах: modprobe: Can't locate module <имя-модуля> Такое сообщение может появляться по нескольким причинам: ч Такого модуля действительно нет. В этом случае нужно выяснить его назначение и причину, по которой система пытается его загрузить. Затем, в зависимости от результатов выяснения, либо прописать в modules.conf (про формат которого есть man-страница) такую строку: alias <имя-модуля> off либо собрать этот модуль из его исходных текстов или исходных текстов ядра Linux. ч Такой модуль существует, но программа modprobe, вызываемая ядром, не может установить соответствие между именем модуля, которое передает ядро и реальным именем файла, содержащего этот модуль. В этом случае нужно либо обновить пакет modutils, либо прописать в /etc/modules.conf: alias <что-не-может-найти> <имя-файла-без-.o> (я буду признателен тому, кто укажет способ установить это соответствие, если оно не прописано внутри modprobe) 4.21. Sendmail ругается: sh: <что-то> not available for sendmail proЭ grams Прочтите man smrsh или /usr/share/doc/sendmail/README.smrsh 5. Сетевое администрирование 5.1. Почему telnet не пускает пользователя root? Как зайти удаленно с правами root? telnet (а точнее, login) не пускает root потому, что root может заходить в систему только со специальных защищенных терминалов, перечисленных в /etc/securetty. Обычно там перечислены только виртуальные консоли tty1-ttyN. Другие места считаются небезопасными, потому что пароль, вводимый оттуда, может передаваться по сети открытым текстом (что и происходит в случае использования telnet), а значит его может узнать злоумышленник, "прослушивая" сеть и анализируя "чужие" пакеты. Ответов на второй вопрос несколько: ч быстрый и неправильный способ - удалить файл /etc/securetty или прописать в нем псевдотерминалы /dev/ttyP*. Это опасно потому, что * Message split, to be continued * --- ifmail v.2.14.os-p7 * Origin: Space Design, St.Petersburg (2:5030/155.21@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/17417870b3108.html, оценка из 5, голосов 10
|