Что поправить в свеже-проинсталлированном Linux Текст будет пополняться. Я знаю единственный дистрибутив Linux, который можно было использовать сразу, не ковыряясь в его конфиг-файлах, в пользовательском окружении, и т.п. - Slackware 1.0 образца 1994 года. Все последующие релизы Slackware, а тем паче RedHat перед употреблением требуют хирургического вмешательства. iDrac7 on DELL 620: server poweron ssh root@idrac.ip.address racadm serveraction powerup # DELL ssh root@idrac.ip.address racadm serveraction powerdown # DELL ipmipower --on -h idrac.ip.address -u root -p password # IPMI echo start /system1/sp1/pwrmgtsvc1 | ssh -T ADMIN@1.2.3.4 # supermicro sshpass -p Parol ssh -x root@1.2.3.4 start /system1/sp1/pwrmgtsvc1 # ERROR Fuse-модули дополнительных файловых систем sshfs, vmfs zypper addrepo \ https://download.opensuse.org/repositories/filesystems/15.5/filesystems.repo zypper pa -ir "filesystems" zypper install vmfs-tools sshfs vmfs-fuse /dev/sdb1 [/dev/sdc1] /vmfs5-mountdir Управление клавишей CTRL-ALT-DEL В текстовом режиме /usr/sbin/ctrlaltdel # посмотреть статус обработки "салюта" кернелом ctrlaltdel hard # вызывать жесткий безусловный reboot (nosync) ctrlaltdel soft # посылать SIGINT в systemd, который вызовет # ctrl-alt-del.target symlinked to reboot.target ### посмотреть дефолтное поведение софтверного CTRL+LAT+DEL: systemctl status ctrl-alt-del.target ls -l /usr/lib/systemd/system/ctrl-alt-del.target lrwxrwxrwx ctrl-alt-del.target - > reboot.target ### Для отмены REBOOT по "салюту" в текстовом режиме единоразово выполнить: ctrlaltdel # убедиться, что "soft" rm -f /etc/systemd/system/ctrl-alt-del.target systemctl mask ctrl-alt-del.target Created symlink /etc/systemd/system/ctrl-alt-del.target - > /dev/null. ### В X11 обработчик "салюта" назначается через "Сочетания Клавиш" Параметры - Сочетания клавиш - Добавить - sysmontask - клавиша: ctrl-alt-del или Пуск - Центр управления - Оборудование - Сочетания клавиш ... Игры со временем ntpdate и hwclock Best: - настроить свой ntpd и иметь постоянно синхронизованное время Ленивый вариант: прописать в crontab раз в неделю синхронизацию 13 3 7 * * ntpdate your.ntp.server.host.name Когда NTP недоступно, играем с hwclock: этап 0: выставить точное системное время, прописать его в HW date 07201256.21 # выставить системное время по точным часам rm /etc/adjtime ; hwclock --systohc # начать /etc/adjtime, выставить HWclock 1: Подождать неделю, выставить точное системное время, подсчитать drift date 07271256.21 hwclock --systohc --update-drift 3: Прописываем в crontab ежедневную подводку часов по вычисленному дрифту 13 3 * * * hwclock --adjust Манипуляция с существующими файлами split -b 12345 input-file output-file-mask. # нарезать кусочками размера -b # подменить в исходном файле _ПОСЛЕ_ заданного номера блока dd if=patch.bl of=changed-file seek=10 conv=notrunc # отступ в 512 блоках dd if=patch.bl of=changed-file seek=10 conv=notrunc bs=1024k # отступ в Mb Генерация загрузочно-инсталляционного ISO дописать в isolinux/isolinux.cfg inst.ks=http://192.168.1.9/redos-ks.cfg ip=192.168.1.196::192.168.1.1:255.255.255.0 cd LinuInstallCD/ sudo mkisofs -o /Lnux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \ --no-emul-boot --boot-load-size 4 --boot-info-table -T -J -r \ -V "LinuInstallDisksLabel" . # -J - generate Joliet directory record # -R - Rock Ridge # -r - Rock Ridge + chown 0:0 # -T - generate TRANS.TBL for nonRR clients Создание собственных Unit-файлов для systemd https://linux-notes.org/pishem-systemd-unit-fajl/?ysclid=lhlrolnqkv228929151 minidlna не расшаривает файлы в каталоге /home Диагностика выдает "Media_dir /home/video - Permition denied" По умолчанию включена защита доступа к файлам в /home # systemctl edit --full minidlna.service # исправить параметр ProtectHome ProtectHome=read-only # systemctl restart minidlna.service Неработающий NFS-server в 15.3 Штатное описание файрвола для NFS-server пусто, и порты NFS-сервера остаются закрытыми. Их надо подсмотреть и открыть вручную rpcinfo -p| grep mountd 100005 1 udp 20052 mountd 100005 1 tcp 20052 mountd firewall-cmd --zone=public --add-port=20048/udp --permanent firewall-cmd --zone=public --add-port=20048/tcp --permanent # RPC-скорее всего не открыт firewall-cmd --zone=public --add-port=111/udp --permanent firewall-cmd --zone=public --add-port=111/tcp --permanent Upgrade openSUSE to 15.3 version cat /etc/os-release # узнать свою версию zypper up # накатить все апдейты zypper lr -u # посмотреть текущие репозитории zypper --releasever=15.3 lr -u # проверить доступность новых repo sed -i 's/15.2/${releasever}/g' /etc/zypp/repos.d/*.repo zypper --releasever=15.3 refresh zypper --releasever=15.3 dup # distribution-update Простейший ftp-клиент из NC tty1$ nc -w 60 ftp.server.org 21 USER user PASS password PASV TYPE I STOR file-flat.vmdk 227 Entering Passive Mode (91,236,55,2,78,114) ################################################## tty2$ nc ftp.server.org `expr 256 '*' 78 + 114` < file-flat.vmdk Настройка роутера XIAOMI 3 PRO https://inrouters.ru/xiaomi/xiaomi-mi-wi-fi-router-pro/ Ограничение доступа по IP к sshd # Разрешение для различных пользователей AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 # Разные виды логина для разных IP - сперва всем все запретить PasswordAuthentication no PubkeyAuthentication no # Затем отдельным IP разрешить Match Address 127.0.0.* PubkeyAuthentication yes Match Address 192.168.31.* PubkeyAuthentication no PasswordAuthentication yes # использование ssh-ключа только с конкретных адресов: .ssh/authorized_keys from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3N...7n1DD useralias Работа с командой IP ip a # андреса ip r # роутинг ip n # arp ip a add 192.168.31.4/24 dev enp2s0 # назначить IP ip a add 192.168.1.4/24 dev enp2s0:1 # назначить IP-alias ip r дел default ip r add default via 192.168.1.1 # переназначить DEFAULT GW Включение proxy-arp маршрутизации На роутящем Linux-сервере можно включить proxy-arp на конкретных интерфейсах echo 1 > /proc/sys/net/ipv4/conf/eth2/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth4/proxy_arp # На хостах, на которых ставится proxyARP-routed рулить можно так: apt-get install parprouted parprouted bond0 eth1.3021 parprouted eth1.3032 eth1.3035 Запрещен пинг для обычных пользователей ping www ping: icmp open socket: Operation not permitted # задать диапазон групп, которым разрешен ping [min, max] sudo /sbin/sysctl -w net.ipv4.ping_group_range="0 10" # либо прописать на пинг сетевой capability sudo setcap 'cap_net_admin,cap_net_raw+ep' /usr/bin/ping Управление заголовком терминального окна xterm/konsole # Выставить заголовок окна при запуске - однако он мгновенно перебивается # настройками локального shell konsole -title "Заголовок" -е ssh remotehost xterm -T "Заголовок" -е ssh hostname # единоразово выставить заголовок echo -en "\033]0;$HOSTNAME:$USER:$PWD\07"' # выставлять при каждом выводе shell-prompt PROMPT_COMMAND='echo -en "\033]0; qq $HOSTNAME:$USER:$PWD\07"' wmctrl -r :ACTIVE: -N New-Title # Выставить title в активное окно wmctrl -l # получить список всех окон wmctrl -r "Windo-name" -N "New-Name" # меняем старое имя на новое Заставить Windows пользоваться linux-овским efi-загрузчиком C:\> Bcdedit /set {bootmgr} path \EFI\opensuse15\grubx64.efi Задать свой порядок EFI-загрузчиков # Смотрим порядок загрузки в EFI # efibootmgr -v BootOrder: 0000,0001,3001,2001,2002,2003 # Выставляемый желаемый порядок загрузчиков # efibootmgr -o 3001,0000,0001,2002,2003,2001 Копирование системного диска с Linux # parted -a optimal /dev/sdb # или в ручную разбить диск # mount ........... # cp -R /mnt/old /mnt/new # chroot /mnt/new /bin/bash # env-update # grub-install /dev/sdb # grub-mkconfig -o /boot/grub/grub.cfg # !!! /mnt/new/boot/grub/grub.cfg # reboot Спасение данных с урезанной партиции Если реальный размер партиции оказался меньше чем прописано в суперблоке файловой системы - ее не удается ни починить, ни смонтировать # mount -t ext4 -o ro,noload /dev/sdb9 /mnt/backup mount: wrong fs type, bad option, bad superblock on /dev/sda, missing codepage or helper program, or other error dmesg показывает: EXT4-fs bad geometry: block count 29... exceeds size of device (29... blocks) Спасаемся так: уменьшаем размер fs, и затем монтируем ее на ro # resize2fs /dev/sdb9 1000G # задаем размер fs меньше партиции # mount -t ext4 -o ro,noload /dev/sdb9 /mnt/backup Подключение к Wireless Logitech unify клавиатурам и мышкам К одному logitech unify адаптеру можно подключить до 6 устройств Поддерживаемые мышки имеют на брюхе "звездочку" - лого "Unify" sudo zypper install ltunify # утилита подключения к logitech unify ltunify list # список подключенных устройств idx=1 Mouse M215 idx=2 Keyboard K270 idx=3 Mouse M185 ltunify unpair 3 # отвязать устройство No 3 ltunify pair # включить питание на подключаемом устройстве OpenSUSE 15 - перестала пускать ssh по ключу id_dss sshd: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes Добавить строчку в файл /etc/ssh/sshd_config PubkeyAcceptedKeyTypes=+ssh-dss Переназначение кнопок мыши Origin: http://zepete.livejournal.com/151204.html # опознание кодов, которые посылает mouse xev | grep -A2 --line-buffered '^ButtonPress' |\ sed -nE '/button /s/^.*(button[[:space:]]+[[:digit:]]+).*$/\1/ p'" 1 2 3 Left Wheel Right 4 5 Wheel-Up Wheel-Down 6 7 # колесо влево/вправо 8 9 кнопка на боковушке PgUp/PgDwn # ID список тачпадов/мышей grep -E "Name=|Handlers" /proc/bus/input/devices | grep -EB1 'Handlers.*mouse' |\ sed -nE '/Name=/,/Handlers=.*mouse/ {/Name=/N; /Handlers=.*kbd/bskip;/Handlers=.*mouse/s/^.*Name=["]([^"]+)["].*$/\1/p;:skip}' xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7" # перестановка функций кнопок на всех мышах xinput # получить ID mouse (например 12) xinput -set-button-map "12" 1 2 3 4 5 8 9 6 7 # и переназначить кнопки мыши с id=12 # и добавить в kde-автостарт-скрипт что-нибудь типа xinput -set-button-map `xinput|grep Logit.*4003|sed 's/.*id=\([0-9]*\).*/\1/'` 1 2 3 4 5 8 9 6 7 Как временно отключать скринсейвер на время работы видеоплеера В mplayer - в mplayer.conf добавить строку stop-xscreensaver=1 Если в самом плеере нет настройки, то костыль наподобие: echo '#!/bin/sh while sleep 300 ; do ps -ef | grep -v grep | grep -q vlc && xset -dpms || xset +dpms done ' > ~/.kde4/Autostart/vlc && chmod +x ~/.kde4/Autostart/vlc Custom context menu for files and folders for konquerror KDE4 а может быть и не только в нем Placing .desktop files in: KDE 3 ~/.kde/share/apps/konqueror/servicemenus/ KDE 4 ~/.kde/share/kde4/services/ServiceMenus/ KDE 5 ~/.local/share/kservices5/ServiceMenus/ ============ например Подменю CreateScript.desktop ================ [Desktop Entry] ServiceTypes=inode/directory Actions=CreateBashScript;CreatePythonScript X-KDE-Submenu=Create Script [Desktop Action CreateBashScript] Name=Create a bash script Icon=kfm Exec=/usr/local/bin/writeBashScript [Desktop Action CreatePythonScript] Name=Create a Python script Icon=kfm Exec=/usr/local/bin/writePythonScript ============ New File ABC =========== /usr/share/kde4/templates/ /usr/share/kde4/templates/.source .kde/share/templates/.source/new.abc .kde/share/templates/abc.desktop ============ New File URL =========== [Desktop Entry] Name=Custom Entry Comment=New custom entry: Type=Link URL=.source/new.abc Icon=application-vnd.oasis.opendocument.text ============ например chmodX.desktop ================ [Desktop Entry] Encoding=UTF-8 ServiceTypes=application/x-shellscript # ServiceTypes=all/allfiles # ExcludeServiceTypes=applicatin/x-zip Actions=MakeExecutable [Desktop Action MakeExecutable] Name=Make file executable Name[ru]=Izmenenie prav file executable Exec=chmod +x %f Icon=kfm ===================================================== %f A single filename %F Multiple selected files %u A single URL. %U Multiple URLs. %d The single directory that contains the selected file represented by %f. %D Multiple directoryes for every selected file in that directory (%F). %n A filename without a path. %N Multiple filenames without paths. %k A file represented as a URI. См. также http://archive.oreilly.com/pub/h/3156 https://kubuntu.ru/node/3610 cryptsetup - шифрованное блочное устройство # подготовить раздел cryptsetup --verify-passphrase luksFormat /dev/sda10 # при открытии автоматически создается спец-файл в dev-mapper cryptsetup luksOpen /dev/sda10 sechome cryptsetup luksClose sechome # расширить (в случае расширения базовой партиции cryptsetup resize [ --size 12345612 ] /dev/sda10 # размер в секторах # добавить/удалить ключ шифрования cryptsetup luksAddKey /dev/sda10 cryptsetup luksRemoveКey /dev/sda10 mkfs -t esxt4 /dev/mapper/sechome /etc/crypttab # автоактивация раздела в /dev/mapper # ??? не проверил sechome /dev/sda10 none sechome2 /dev/sda11 /etc/secfilewithpassword /etc/fstab /dev/mapper/sechome /srv/secure_home ext4 defaults 0 0 encfs - шифрованная пользовательская fs zypper install encfs # инсталлируем пакет encfs encfs ~/.enc-db ~/crypt # создать шифруемую директорию с бэкэндом в .enc-db - > y, y, p, password, password Подключать/отключать encfs ~/.enc-db ~/crypt fuser -u ~/crypt Или через /etc/fstab: /home/petr/.enc-db /home/petr/crypt fuse.encfs noauto,user,uid=petr 0 0 Подключать/отключать: mount ~/crypt sudo umount ~/crypt Как померить максимальную скорость сети до удаленного сервера ssh server2 "nc -l 1234 > /dev/null" & sleep 2 ; time dd if=/dev/zero bs=1024k count=1000 | nc server2 1234 Как обеспечить туннелирование X11 при ssh-логине server: /etc/ssh/sshd_config X11Forwarding yes client: /etc/ssh/ssh_config Host * ForwardX11 yes А если это не помогает, и в syslog'е "Failed to allocate internet-domain X11" Значит sshd запутался в IPv6, и sshd надо запускать с ключом -4 server: /etc/sysconfig/sshd SSHD_OPTS="-4" После логина автоматически будет взводится переменная DISPLAY ssh udalennyj.server echo $DISPLAY localhost:10.0 Чтобы X-приложения запускались после SU - смены пользователя в файле /etc/pam.d/su и в файле /etc/pam.d/su-l должна присутствовать строка: session optional pam_xauth.so подробности смотреть в: man xauth Переключатель кириллицы для редактора VIM/VI https://habrahabr.ru/post/98393/#comment_3031341 CTRL+^ - для переключения, таблица раскладки в /usr/share/vim/vim73/keymap/russian-jcukenwin.vim В файле ~/.vimrc set keymap=russian-jcukenwin # таблица раскладки set iminsert=0 # дефолтная раскладка для ввода set imsearch=0 # дефолтная раскладка для поиска highlight lCursor guifg=NONE guibg=Cyan ##################################################### Вариант с наворотами (смотреть в HTML-Source этого файла): cmap # переключатель мапится на CTRL+F imap X:call MyKeyMapHighlight()a nmap a:call MyKeyMapHighlight() vmap a:call MyKeyMapHighlight()gv # индикация раскладки - цветом статусной строки function MyKeyMapHighlight() if &iminsert == 0 hi StatusLine ctermfg=DarkBlue guifg=DarkBlue else hi StatusLine ctermfg=DarkRed guifg=DarkRed endif endfunction ##################################################### Подсчет трафика на сетевом интерфейсе cat /proc/net/dev cat /proc/net/dev | grep ppp | sed 's/ */ /g' | cut -d' ' -f3,11 # отвязанная статистика интерфейсов ifstat # посмотреть текущую скорость ifstat -rn # занулить счетчики # не тро Подсчет трафика клиентов на linux-маршрутизаторе # включаем на гейте форвардинг трафика и NAT echo 1 > /proc/sys/net/ipv4/ip_forward /etc/sysctl.conf:net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # пропускаем нескольких локальных клиентов из eth0/* в интернет ppp0 for i in 13 14 15 19 21 22 ; do iptables -A FORWARD -s 192.168.1.$i -o ppp0 -j ACCEPT iptables -A FORWARD -d 192.168.1.$i -i ppp0 -j ACCEPT done # сам роутер пропускаем тоже iptables -A INPUT -i eth0 -j ACCEPT iptables -A OUTPUT -o eth0 -j ACCEPT # остальных не пускаем iptables -A FORWARD -o ppp0 -j DROP while sleep 60 ; do # А дальше в цикле iptables -L -vnx # Посмотреть трафик на всех заданных правилах iptables -Z # Обнулить счетчики done Проброс портов снаружи на внутреннюю сетку # -i external-iface # Пробросить iptables -t nat -A PREROUTING -p tcp -d 217.89.1.160 --dport 1111 -j DNAT --to-destination 192.168.1.80:22 # Разрешить прохождение в файрволле iptables -A FORWARD -i eth0 -d 192.168.1.80 -p tcp --dport 22 -j ACCEPT Фиксация history у незавершенного bash Команды введенные в bash показываются командой history, но в файле ~/.bash_history они сохраняются только по завершении bash. Чтоб получить их: Узнать PID bash, например 11517, и с помощью gdb сохранить history в файл echo $$ gdb attach 11517 call write_history("/tmp/bash.11517.log") quit Сброс пароля root в mysql /etc/rc.d/init.d/mysqld stop # останавливаем mysqld ps awx | grep mysqld # Контроль, киляем если еще жив mysqld_safe --skip-grant-tables # Запускаем без проверки привилегий mysql -u root mysql > update user Password=PASSWORD('тут пароль') where User='root'; > flush privileges; mysqld restart OCR pdf-fajlow sudo apt-get install ghostscript tesseract-ocr tesseract-ocr-eng Scanned PDF convert to tex gs -dNOPAUSE -sDEVICE=tiffg4 -r600x600 -dBATCH -sPAPERSIZE=a4 \ -sOutputFile=OUTPUT.tif PDFNAME.pdf tesseract OUTPUT.tif TEXTNAME -l eng # or the language you prefer Как прописать LABEL на партицию HD или флешки lsblk # список партиций blkid /dev/sdb1 # посмотреть информацию о партиции apt-get install mtools ntfsprogs e2fsprogs jfsutils reiserfsprogs xfsprogs zypper install mtools ntfsprogs e2fsprogs jfsutils reiserfsprogs xfsprogs mlabel -i /dev/sdb1 -s :: # прочитать LABEL vfat,fat16,fat32 mlabel -i /dev/sdb1 -s ::UAZ # записать LABEL vfat,fat16,fat32 ntfslabel /dev/sdb1 # NTFS ntfslabel /dev/sdb1 UAZ e2label /dev/sdb1 # ext2, ext3, ext4 e2label /dev/sdb1 UAZ jfs_tune /dev/sdb1 # jfs jfs_tune -L UAZ /dev/sdb1 xfs_admin -l /dev/sdb1 xfs_admin -L UAZ /dev/sdb1 Проблемы со звуком в skype на openSUSE 13.2 Временное решение, запускать skype так: PULSE_LATENCY_MSEC=60 skype Как оживить угробленный GRUB Скопировать все нужные файлы в /boot и /boot/grub Определить партицию /boot, груб-нумерация меньше на единицу cat /boot/grub/device.map (hd0) /dev/sda (hd1) /dev/sdb /boot /dev/sda6 - > (hd0,5) /boot /dev/sdb1 - > (hd1,0) /usr/sbin/grub # инсталляция загрузчика в MBR root (hd0,5) setup (hd0) quit udev USB security Linux из коробки подключает USB-устройства сразу. Это может быть использовано для rogue HIDs. Готовый вредный совет для настройки udevs, чтоб он больше так не делал Но пользоваться им бездумно не следует, потому что мышки и клавиатуры нынче все больше USB-шные The BadUSB attack bases on the fact that computers allow and enable HID devices on all usb ports. Faked network adapters are no real danger. My answer tries do describe how to use udev to temporarily disable the addition of new HID devices. I'm no udev expert, but I've tested my approach, and it works for me. For preparation, create a file /etc/udev/rules.d/10-usbblock.rules with the content: #ACTION=="add", ATTR{bInterfaceClass}=="03" RUN+="/bin/sh -c 'echo 0 >/sys$DEVPATH/../authorized'" If you want to block other classes too, then look up the class number, and copy the line, and change the class. Now you can block all new HID devices using the command sed -i 's/#//' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules and unblock with: sed -i 's/^/#/' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules Before you shut down, always unblock, as the setting is persistent, and your "good" HID devices would be rejected on reboot. I don't know whether you can edit the temporary rules directory, but if changes there affect the behaviour, you should edit that instead, as then you don't need to unblock before shutdown. (from https://security.stackexchange.com/questions/64524/how-to-prevent-badusb-attacks-on-linux-desktop/64552#64552 ) Block/unblock можно вставить в стартовые скрипты Как передернуть питание на USB-устройстве Помогает, если чипсет USB-контроллера поддерживает управление питанием echo "suspend" > /sys/bus/usb/devices/usb2/power/level echo "auto" > /sys/bus/usb/devices/usb2/power/level Минимизация вреда Gnome 3 install gnome-session-fallback gnome-shell remove unity Выбрать тип десктопа gnome classic. Это сделает фальшивый gnome-2, он хуже настоящего, чтобы пользователь поверил, что он gnome 3 не хуже. Upgrade openSUSE to 12.2 version zypper modifyrepo --all --disable zypper addrepo --name "openSUSE-12.2-OSS" http://download.opensuse.org/distribution/12.2/repo/oss/ repo-12.2-oss zypper addrepo --name "openSUSE-12.2-Non-Oss" http://download.opensuse.org/distribution/12.2/repo/non-oss/ repo-12.2-non-oss zypper addrepo --refresh --name "openSUSE-12.2 Update-Oss" http://download.opensuse.org/update/12.2/ repo-12.2-update zypper addrepo --refresh --name "openSUSE-12.2-Update-Non-Oss" http://download.opensuse.org/update/12.2-non-oss/ repo-12.2-non-oss-update zypper refresh zypper dup # Верифицируем все установленные пакеты rpm -qa | sed -e 's/\.[^.]*$//' | sort | while read p ; do rpm --verify $p && echo -n + || zypper -n install -f $p ; done A way to get the output of a running process ps -axf | grep processname touch log gdb -p 22499 (gdb) p close(1) # Close the stdout of the running process (gdb) p open("/home/moshkow/log", 1) # Open the log-file with O_WRITE (gdb) c ^C quit $ gdb -p {pid} # или в одном флаконе (gdb) p open( "logfilename" , 0101, 0777) $n = {log file descriptor} (gdb) p dup2( {log file descriptor} , 1) (gdb) c Rescan a SCSI bus without Rebooting ls /sys/class/scsi_host # смотрим какие есть хост-адаптеры host0 host1 host2 host3 cat /sys/class/scsi_host/host*/proc_name # и какого они типа sata_nv echo "- - -" > /sys/class/scsi_host/host2/scan # сканируем dmesg # смотрим fdisk -l Падает LibreOffice 3.5.4 При запуске любые ЛибреОффисовские программы падали с кодом terminate called after throwing an instance of 'com::sun::star::uno::RuntimeException' Помогло sudo rm -rf .config/libreoffice (Интересно, почему у многих файлов в этом каталоге были выставл;ены владельцы root:root?) Отработать локальный скрипт Expect'ом удаленно через ssh Скрипт читается локально, и выполняется построчно #!/usr/bin/expect -f spawn ssh root@server expect "root\@server\:\~\# " set infile [open "myfile.sh" r] while { [gets $infile line] >= 0 } { send "$line\n" expect "root\@server\:\~\# " } close $infile Как пропустить ALT-клавиши в RDP-окно (и все остальные) Заголовок окна -> Advanced -> Special window settings -> Workarounds -> Block global shortcuts -> Force temporarily -> Ок Как автоматически включать NAT при активации WLAN-интерфейса /etc/sysconfig/network/ifcfg-wlan0 в этот файл добавить POST_UP_SCRIPT=wlan_nat_up /etc/sysconfig/network/scripts/wlan_nat_up : #!/bin/sh sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -j MASQUERADE service dhcpd restart # в DHCPD назначить себя в качестве default-router Управления яркостью в HP elitebook 8740w Origin: http://www.linlap.com/wiki/hp+elitebook+8740w /sys/devices/platform/hp-wmi/als To prevent kacpid consuming 100% CPU on one thread, had to upgrade to kernel 2.6.35-020635rc6-generic and add the following to /etc/rc.local: echo disable > /sys/firmware/acpi/interrupts/gpe01 HOWTO get s2ram working, is obsolete since kernel-2.6.37 (gentoo). to get suspend to ram working, you can try to unload the xhci_hcd (usb3 driver) module before suspending. rmmod xhci_hcd s2ram -f modprobe xhci_hcd Логин по сканеру отпечатков (finger print, fprint) Необходимы пакеты: libfprint0 - поддержка FP, fprint-demo - тест работоспособности libpam-fprint(убунта), pam_fp(openSUSE) - pam-модуль для FP-авторизации yast2-fingerprint-reader bioapi ? zypper install fprint-demo pam_fp libfprint0 yast2-fingerprint-reader В файле /etc/pam.d/common-auth auth sufficient pam_fprint.so auth [success=1 default=ignore] pam_unix.so nullok_secure pam_fprint_enroll --enroll-finger 7 # сканировать правый указательный Как проверить скорость сети На одной машине запускаем сервер с максимальными настройками iperf -s -m -w 1M -l 24K -M 100000 На другой - клиента изменяя размер пакета (-M) (-t 10 = на 10 минут) iperf -c server.name -m -w 1M -l 24K -M 1500 Как перевернуть экран (не работает?) Статически: Section "Device" BoardName "GeForce Go 7900 GS" Option "Rotate" "Inverted" . . . Динамически: Section "Device" BoardName "GeForce Go 7900 GS" Option "RandRRotation" "on" . . . затем выполнять команды xrandr -o inverted xrandr -o normal Как увеличить размер файловой системы Графический менятель партиций gparted Размер NTFS меняют пакетом ntfsprogs ntfsresize --info /dev/hdb2 ntfsresize --forced --size 40G /dev/hda2 Если диск стучит головками Можно попробовать запретить парковку головок hdparm -B 255 /dev/sda Конвертация EXT3 в EXT4 tune2fs -O extents,uninit_bg,dir_index /dev/sdf2 e2fsck -fpD /dev/sdf2 e2fsck -fD /dev/sdf2 Применение netcat Слушать порт, коннекты сливать в файл: nc -l -p 3333 > file.txt Толкнуть данные в порт nc 192.168.1.1 3333 < file.txt Понизить скорость чтения с CDROM eject -x 2 /dev/cdrom Распечатать информацию из BIOS dmidecode Слить по горизонтали два столбика paste -d " " stolbi1.txt stolbik2.txt Временная смена MAC-адреса в Linux ifconfig eth0 hw ether ee:ee:ee:ee:ee:ee Постоянка для Debian /etc/network/interfaces : pre-up ifconfig eth0 hw ether 00:00:00:00:00:00 Как отключить beep в xterm xset b off xset b on иногда помогает setterm -bfreq 10 иногда помогает rmmod pcspk Как отключить автозагрузку апплетов гномовской сессии ls -al /usr/share/gnome/autostart/ Как отключить dma при загрузке ядра libata.dma=0 в параметры ядра при загрузке Чтобы экран терминала не гас setterm -blank 0 -powerdown 0 -powersave off Чтобы mandatory locking работал 1. файловая система должна быть смонтирована с опцией mand 2. файл должен иметь sgid бит и не иметь group-exec бита (chmod g+s,g-x filename) при соблюдении обоих условий другие процессы не смогут писать в файл Оптимизация системы Для этого надо перекомпилировать все пакеты под свой процессор http://community.livejournal.com/ru_linux/2078221.html Звук, камера, микрофон # убеждаемся, что дравер запускается lsmod | grep -i snd_hda_intel # если нет - в /etc/modprobe.conf добавляем: options snd-hda-intel model=auto # автоопределение, или options snd-hda-intel model=3stack-dig # конкретны йподтип для eepc 701 alsactl # единоразово для настройки звуковой подсистемы alsamixer # дефолтные уровни звука 1. Установить i-Mic как Input source 2. Настройте Capture и i-Mic Boost по вкусу 3. Отредактируйте /etc/asound.state - в секции 'Capture Switch' значения value.0 и value.1 true alsactl restore # если USB-видеокамера разпознается дравером, возникает /dev/video0 # skype и другие приложения подберут его по умолчанию # Просмотр потока с видеокамеры mplayer -fps 15 tv:// Снижение нагрузки на SSD диск На SSD-диске файловую систему лучше делать нежурналируемую - напр. ext2 В опциях монтажа в /etc/fstab добавляем noatime /var/log монтируем на TMPFS tmpfs /var/log tmpfs size=10M 0 0 Подцепляем сканер HP Scanjet G3110 Ищем свой сканер http://www.sane-project.org/sane-mfgs.html выясняем название дравера для sane-backend - например hp3900 # sane-find-scanner -q found USB scanner (vendor=0x03f0 [hewlett packard], product=0x4305 [hp scanjet], chip=RTS8822L-01H) at libusb:005:007 ls -al /dev/bus/usb/005/007 файл должен принадлежать группе lp. если нет - добавляем productId в /etc/udev/rules.d/55-libsane.rules SYSFS{idVendor}=="03f0", SYSFS{idProduct}=="4305", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes" Задаем какой дравер использует SANE: echo hp3900 >> /etc/sane.d/dll.conf Драверу hp3900 указываем, на каких USB-девайсах сидит "его" сканер /etc/sane.d/hp3900.conf usb 0x03f0 0x4305 Проверяем: # scanimage -L Если нарвались на No scanners were identified. - то пытаемся отладиться # SANE_DEBUG_DLL=255 scanimage -L Дальше действуем по обстановке возможно, требуется проинсталлировать более свежую версию backend'а sane-hp3900 http://sourceforge.net/projects/hp3900-series/ Теперь конфигурим сетевой доступ к своему сканеру подробности см. в man saned Сервер сканера: /etc/sane.d/saned.conf Прописывает сетки и хосты, которым разрешен доступ к скаneru Активируем службу saned через xinetd # grep sane /etc/services sane-port 6566/tcp # SANE Control Port sane-port 6566/udp # SANE Control Port # cat /etc/xinetd.d/sane-port service sane-port { socket_type = stream port = 6566 wait = no user = root group = root server = /usr/sbin/saned disable = но } # service xinitd restart в firewall'e открываем IN доступ к порту sane-port Удаленный клиент сканера # echo net >> /etc/sane.d/dll.conf В файл /etc/sane.d/net.conf вписываем хост-сервер сканера Как бороться с бадблоками на диске http://smartmontools.sourceforge.net/badblockhowto.html ║ http://smartmontools.sourceforge.net/badblockhowto.html Борьба с многодисковым GRUB WinXP хорошо грузится только с загрузочного диска (hd0) ####### GRUB-секция для Win на 1-й партиции 3-го диска (hd3,0) title Windows # "переделать" 4-й диск в как-бы 1-й map (hd3) (hd0) rootnoverify (hd3,0) makeactive chainloader +1 Мапить можно как диск целиком, так и отдельный раздел # map (hd1,0) (hd3,0) Кстати, в SUSE 11.1 заменили grub-install, и он перестал понимать опции перед запуском придется редактировать /etc/grub.conf А порядок именования-нумерации дисков задается в /boot/groob/device.map Номера в нем должны соответствовать тому, что о нумерации думает BIOS Ограничение скорости интернет-соединения клиент, подключеный по ВПН (ppp0) из локалки и получивший IP 10.1.0.11 правилами iptables *mangle -A FORWARD -j USERS -A INC_TARIFF_1 -j MARK --set-xmark 0x1/0xffffffff -A USERS -d 10.1.0.1/32 -j INC_TARIFF_1 *nat -A POSTROUTING -s 10.1.0.11/32 -j SNAT --to-source 94.25.11.182 *filter -A FORWARD -j ULOG --ulog-prefix "FORWARD" --ulog-cprange 48 --ulog-qthreshold 50 далее лимитирую входящий трафик клиенту: /sbin/tc qdisc del dev ppp0 root /sbin/tc qdisc add dev ppp0 root handle 1: htb /sbin/tc class add dev ppp0 classid 1:1 htb rate 256kbit ceil 256kbit /sbin/tc filter add dev ppp0 protocol ip handle 1 fw classid 1:1 Условный роутинг отдельной подсетки на другой гейтвей From: LJ user br0ziliy Одну локалку пускаем как обычно. Для второй в файрволл добавляем такое правило: iptables -t mangle -I PREROUTING -s $LAN2_NET -j MARK --set-mark 0x70 Маскарадинг для каждого ppp-интерфейса отдельно: iptables -t nat -I POSTROUTING -o ppp1 -s $LAN2_NET -j MASQUERADE iptables -t nat -I POSTROUTING -o ppp0 -s $LAN_NET -j MASQUERADE Далее iproute'ом разруливаем всё хозяйство: ip ru add fwmark 0x70 lookup 115 ip r add default dev ppp1 t 115 Ну, и в /etc/sysctl.conf добавить net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 и потом sysctl -p Howto run a script when a USB device is pluged in http://ubuntuforums.org/showthread.php?t=502864 This explains how you could run a script made by you (say /usr/local/my_script) when you plug a specific USB device. 1. First run lsusb to identify your device. Example: $ lsusb Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 040a:0576 Kodak Co. Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000 2. After doing this you know that - the vendor ID of your device is 040a - the product ID of your device is 0576 3. Now is time to create your UDEV rule: Code: vi /etc/udev/rules.d/85-my_rule.rules 4. And add the text Code: ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="0576", RUN+="/usr/local/my_script" Параметр SUBSYSTEM=="usb_device" иногда нужно заменить на SUBSYSTEM=="usb" а можно и вообще опустить. Если SYSFS не установлен и не используется - применяется ATTRS{idVendor}=="040a" Explanation: When the usb_device product identified as 0576 of vendor 040a is added, run /usr/local/my_script Note that '==' and "!=" are comparators, while = and += are assingments x x x 1. if you had GROUP="dialout", the device will belong to that group. This means that all users in the dialout group have special permissions to work with the device. Code: ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="0576", GROUP="dialout" 2. if you had SYMLINK+="ladys_camera", a ladys_camera device will be added to your /dev. This could be very usefull if you use several usb devices (as most of us do), because their device (/dev/ttyUSB[0-9]) is set depending on plug order. This way /dev/ladys_camera will always be your lady's camera. Code: ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="0576", SYMLINK+="ladys_camera" 3. Also notice that udev rules work with all king of devices: usb, serial, pcmcia, ... udev rules is a simple and easy way to configure all devices (it can configure, load modules, run scripts, set permissions for all your hardware). Final notes: A. Each line is a device. If you want to break a line add \ at the end Code: ACTION=="add", SUBSYSTEM=="usb_device", \ SYSFS{idVendor}=="040a", SYSFS{idProduct}=="0576", \ SYMLINK+="ladys_camera" B. You can add simultaneous actions in the same line (like group assignment and symbolic link) Code: ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="0576", GROUP="dialout", SYMLINK+="my_modem" C. The rules file must be in /etc/udev/rules.d/. Restart udev service (sudo /etc/init.d/udev restart) after changes. D. The rules filename must start with two digits, plus a dash (-), and must end with .rules The two digits have a reason. See /etc/udev/rules.d/README Промаршрутизировать своих wifi соседей NAT'ом в интернет # вторая карта (или алиас на первой), которая глядит в интернет: ifconfig eth1:1 192.168.0.1 netmask 255.255.255.0 up route add default gw 192.168.0.254 # разрешение гонять трафик через себя sysctl -w net.ipv4.ip_forward="1" # NATирование трафика всем страждущим из внутренней сетки (eth0) iptables -t nat -A POSTROUTING -o eth1:1 -j MASQUERADE или iptables -t nat -A POSTROUTING -s 10.12.1.0/24 -j MASQUERADE Показ видео на TV-out Скорее всего видеокарта - Nvidia. Ставим дравер 1. Yast - Software repository - добавляем Community repository "NVidia" 2. zypper search nvidia zypper install x11-video-nvidiaG02 # либо x11-video-nvidia - если видеокарточка старых моделей 3. Активируем дравер nvidia-xconfig # познавательно потом запустить его с --help и -A CTRL+ALT+BackSpace По умолчанию TV конфигурится в режиме TwinView No (т.е. на телевизор показывается индивидуальный X-screen (а не дубляж основного) PAL-D, SVHS - при необходимости эти режимы можно подправить руками в xorg.conf или ключами команды nvidia-xconfig, либо графическим настройщиком nvidia-settings nvidia-xconfig --tv-standard=PAL-D --tv-out-format=SVIDEO --twinview --no-logo Чтобы окошко показывалось на телевизор - надо отправлять его на :0.1 xterm -display :0.1 Показывать видео - надо конечно же с помощью MPlayer. Ставим его 1. Yast - Software repository - добавляем Community repository "Packman" 2. zypper search mplayer zypper install MPlayer mplayer -display :0.1 -fs file.avi При показе в TV-Out дравер nvidia забирает изображение в 1024x768. Однако у меня дравер слегка резал картинку - выводя ее на TV расширенной и со смещением, пришлось сдвигать и поджимать картинку ключами. Для точного попадания в TV видеоокно должно иметь габарит 920x724 (обращаем внимание, что 920*3/4=690 !) и сдвиг 60x25 mplayer -display :0.1 -stop-xscreensaver \ -geometry +60+25 -x 920 -y 724 Sherlok_Holms.avi Если aspect кадра не 4/3, то кадр придется дополнительно пересчитать. Скажем, для фильма 704x384 получаем: mplayer -display :0.1 -stop-xscreensaver \ -geometry +60+124 -x 920 -y 526 Wse_umrut_a_q_ostanus.avi Последним штрихом: в /etc/mplayer/mplayer.conf добавляем stop-xscreensaver=yes # во время просмотра не запускать Screensaver Копируем кириллический verdana.ttf в /etc/mplayer/subfont.ttf Прописываем кодировку субтитров в файл ~/.mplayer/config subcp=koi8-r # кодировка субтитров. Или у вас cp1251 ? Как узнать серийный номер HDD hdparm -i /dev/sda ---------------------- #include int fd; struct hd_driveid id; fd = open ("/dev/hda", O_RDONLY); ioctl (fd, HDIO_GET_IDENTITY, &id); close (fd); printf ("%s\n", id.serial_no); ----------------------- Кодировки в смонтированном NTFS Не видны файлы, в имени которых есть русские буквы. Лечится указанием локали в /etc/fstab: /dev/sda7 /d ntfs-3g locale=ru_RU.UTF-8,... Работа с двумя мониторами (Не проверено) xorg.conf Option "UseDisplayDevice" "DFP-0" или Option "UseDisplayDevice" "CRT-0" включить: xrandr --output _output_name_ --mode 1680x1050 выключить: xrandr --output _output_name_ --off CIFS шары перестали обрабатывать симлинки Отключаем unix-extensions: [global] unix extensions = No follow symlinks = Yes wide links = Yes Подстройка Десктопа и менюшек в KDE kcontrol # Control Centre (AKA Persona setting) Desktop --> Behavior->MouseButton action=>Left=No Middle=WinList Right=ApplMenu Desktop --> Multiple Desctops => 4 штуки Desktop --> Panels => Size=33 Desktop --> Windows behavior => Focus Policy=FollowMouse AutoRaise=No Для запуска автостартовых приложений - создать application-пункт в каталоге ~/.kde/Autostart Разблокировать CTRL и CTRL+Shit Fункциональные kcontrol # Control Centre (AKA Persona setting) Regional&Accessibility -> Keyboard Shortcuts Затереть или заменить все ключи вида C-F1, S-F1 и C-S-F1... А так же переключатель клавиатуры не должен сидеть на Ctrl+Shift, а назначен, скажем, на Alt+Shift: setxkbmap -option "grp:alt_shift_toggle,grp_led:scroll" Отключение у ноутбука тачпада если подключена мышка Варианты: золотинка от шоколада, сложенная вдвое x11-input-synaptics или xserver-xorg-input-synaptics содержит syndaemon , который отключает тачпад, если юзер набирает на клавиатуре. # опция -t запрещает tapping и scrolling syndaemon -d -t -i 2.5 # возвращать тачпад чере 2.5 сек по окончании печати Или настройка через gsynaptics Или заменить в описании мышки/точпада Option "Device" "/dev/input/mice" на соответственно Option "Device" "/dev/input/mouse0" Option "Device" "/dev/input/mouse1" (можно так же применить event1 event2) и ненужный девайс просто закомментировать Или через sysclient (работает при активированном SHMConfig lsusb | egrep -i 'Mouse|03f0:2003.*Hewlett-Packard|046d:c521.*Logitech' > /dev/null && synclient TouchpadOff=1 || synclient TouchpadOff=0 Естественно, в xorg.conf должен быть описан тачпад с дравером synaptic Section "InputDevice" Driver "synaptics" Identifier "Mouse[3]" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "on" Option "Name" "Touchpad" Option "SHMConfig" "on" # Option "SHMConfig" "true" есть версии, что "true" Option "Vendor" "Synaptics" Option "ZAxisMapping" "4 5" # MaxTapTime отключает тач-клик Option "MaxTapTime" "0" # левый клик, средний клик, правый клик по прикосновениям # одного, двух и трех пальцев соответственно. Option "TapButton1" "1" Option "TapButton2" "2" Option "TapButton3" "3" EndSection Section "ServerLayout" Identifier "Layout[all]" . . . InputDevice "Mouse[1]" "CorePointer" InputDevice "Mouse[3]" "SendCoreEvents" . . . EndSection создать /etc/udev/rules.d/99-mouse.rules - в нем написать: ENV{ID_CLASS}="mouse", ATTRS{manufacturer}=="Logitech", ACTION=="add", RUN+="/usr/bin/synclient touchpadoff=1" ENV{ID_CLASS}="mouse", ATTRS{manufacturer}=="Logitech", ACTION=="remove", RUN+="/usr/bin/synclient touchpadoff=0" будет выключать/включать тачпад при втыкании/вытаскивании USB-мышки Настройки чувствительности тачпада: Option "VertScrollDelta" "100" Option "HorizScrollDelta" "100" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "MinSpeed" "0.09" Option "MaxSpeed" "0.18" Option "AccelFactor" "0.015" NAT-маршрутизатор echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s IP-NAT-клиента -d 0/0 -j MASQUERADE если ppp интерфейс, то не мешает добавить iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu Завуковые настройки через alsamixer ALSA sound http://crulman.livejournal.com/11223.html Как померять температуру Температура диска (и много дополнительной info) smartctl --all /dev/sda |grep -i temp Температура системы cat /proc/acpi/thermal_zone/THM/temperature smartctl -i /dev/sda smartctl --smart=on /dev/sda # Включаем SMART smartctl --all /dev/sda # смотрим Критичные атрибуты: Raw Read Error Rate - частота ошибок при чтении данных с диска Spin Up Time - время раскрутки диска Spin Up Retry Count - число повторных попыток раскрутки Seek Error Rate - частота ошибок при позиционировании головок Reallocated Sector Count - число переназначенnых секторов Некритичные атрибуты: Start/Stop Count - полное число запусков/остановов шпинделя Power On Hours - число часов проведенных во включенном состоянии Drive Power Cycle Count - количество полных циклов включения-выключения Temperatue - показания встроенного термодатчика Current Pending Sector C - Число кандидатов на замену Uncorrectable Sector C - число нескорректированных ошибок UDMA CRC Error Rate - число ошибок при передаче Write Error Rate - частота ошибок при записи smartctl -H /dev/sda # быстрый селфтест smartctl --test=long /dev/sda # запуск долгого селфтеста smartctl -X # прерывание, если надоело ждать smartctl -l selftest /dev/sda # просмотр результатов прошедших тестов Как понизить скорость DVDROM hdparm -E 8 /dev/dvd setcd -x CentOS. Сборка rpm ядра из оригинального src.rpm http://www.centos.org/modules/newbb/viewtopic.php?topic_id=403 http://www.howtoforge.com/kernel_compilation_fedora Поставляемый пакет kernel-devel для сборки ядра непригоден. Надо скачать и установить src.rpm rpm -ivh kernel-*.src.rpm cd /usr/src/redhat/SPECS/ vi kernel-2.6.spec можно поменять например версию ядра, отключить часть патчей (попарно) rpmbuild -bp --target=i686 kernel-2.6.spec после этого обязательно отредактировать Kernel Identification String cd ../BUILD/kernel-2.6.18/linux-2.6.18.i686 vi Makefile EXTRAVERSION = -17.0-custom далее make xconfig Загрузить "Alternate Configuration File" и выбрать .config make make install # Хотя initrd и инсталляция модулей теперь делается автоматически, # лучше повторить ее ручками. Ибо... make modules_install mkinitrd /boot/initrd-2.6.18-17.0-custom.img 2.6.18-17.0-custom 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 make rpm cd ../RPMS/i386 rpm -ivh kernel-2.6.18custom2.6.18.2-1.i386.rpm mkinitrd /boot/initrd-2.6.18-custom-2.6.18.2.img 2.6.18-custom-2.6.18.2 vi /boot/grub/menu.lst RedHat 8-9, FC, Advanced server lockkit --disable -q # отключить файрволл 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 Продолжение следует. Рекомендую так же посмотреть: Начало работы в системе () ║login.txt Команда 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 ║ 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 ║ 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... Присылайте свои советы/замечания/дополнения по поводу всего вышесказанного Максим Мошков. moshkow@ipsun.ras.ru ║ mailto:moshkow@ipsun.ras.ru Если не работает сетевая карта http://www.scyld.com/network/rtl8139.html ║ http://www.scyld.com/network/rtl8139.html http://www.scyld.com/expert/modules.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 Как посмотреть Ь-ресурсы приложения appres XTerm Как бороться за понижение температуры процессора cpufreq-set -g powersave Переустановить дефолтные установки xterm В файл .Xdefaults XTerm*foreground: grey XTerm*background: black XTerm*scrollBar: true XTerm*saveLines: 1000 XTerm*font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 XTerm*Font2: -cronyx-fixed-medium-r-normal--10-*-*-*-*-*-koi8-r XTerm*Font3: -cronyx-fixed-medium-r-normal--13-*-*-*-*-*-koi8-r XTerm*Font4: -cronyx-fixed-medium-r-normal--15-*-*-*-*-*-koi8-r XTerm*Font5: -cronyx-fixed-medium-r-normal--20-*-*-*-*-*-koi8-r XTerm*Font6: -cronyx-fixed-medium-r-normal--24-*-*-*-*-*-koi8-r