Текст будет пополняться.
Я знаю единственный дистрибутив Linux, который можно было
использовать сразу, не ковыряясь в его конфиг-файлах, в
пользовательском окружении, и т.п. - Slackware 1.0 образца 1994
года.
Все последующие релизы Slackware, а тем паче RedHat перед
употреблением требуют хирургического вмешательства.
Proxy-доступ к youtube через "далекий" сервер
server# zypper install squid # на сервере поднимаем squid-proxy
server# systemctl start squid
server# systemctl start squid # proxy садится на localhost:3128
# server-ный localhost:3128 вытаскиваем на клиентской машине
client# ssh -L 3128:localhost:3128 server.address
# если хочется дать доступ в него еще и своим соседям,
# пробрасываем localhost:3128 на clientip:3128 с помощью socat
##### /etc/systemd/system/socat-proxy.service :#############
[Unit]
Description=Socat Port Forwarding
After=network.target
[Service]
ExecStart=/usr/bin/socat TCP4-LISTEN:3128,fork,reuseaddr,bind=client.IP TCP4:localhost:3128
[Install]
WantedBy=multi-user.target
#####################################
# systemctl enable socat-proxy
# systemctl start socat-proxy
# для автоматической настройки proxy создаем на своем веб-сервере
# файл youtube.prox с mime/type application/x-ns-proxy-autoconfig prox
# И указываем ему проксисервер, у которого есть доступ с ютубу и флибусте
function FindProxyForURL(url, host)
{ if (shExpMatch(host, "*youtube.com") ||
shExpMatch(host,"*googlevideo.com")||
shExpMatch(host,"*ytimg.com") ||
shExpMatch(host,"*flibusta.is") )
return "PROXY client.IP:3128; DIRECT";
else return "DIRECT"; }
# В настройках firefox - Network - Automatic Proxy указываем
http://client.IP/youtube.prox
В текстовом режиме
/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
Диагностика выдает "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
# Разрешение для различных пользователей
AllowUsers [email protected].* [email protected].* 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-загрузчиком
# Смотрим порядок загрузки в 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
Как померить максимальную скорость сети до удаленного сервера
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
#####################################################
# включаем на гейте форвардинг трафика и 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
Команды введенные в 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
Скопировать все нужные файлы в /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 не хуже.
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
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 вписываем хост-сервер сканера
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,...
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
Температура диска (и много дополнительной 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
Продолжение следует. Рекомендую так же посмотреть:
Начало работы в системе ()
Команда man по завершении просмотра стирает экран с мануалом
Проблема: Команда man по завершении просмотра стирает экран с
мануалом Называется "а у тебя ведь хорошая память? Isn't it?"
Лечение: man использует для просмотра команду less. У less есть
ключ "-X" - "не деинициализировать экран по окончании. Поэтому
добавьте его к дефолтным ключам в переменную окружения LESS в
своем профайле.
LESS="-e -r -X" export LESS
Лечение: другой метод - поправить в описании терминала строку
деинициализации (ах, как там она называется?), и убрать из нее
команду стирания экрана.
crontab: масса излишних работ
crontab root'а лежит у RedHat в нестандартном месте -
/etc/crontab . Может быть для БОЛЬШОГО много пользовательского
internet-сервера и нужен такой огромный список планируемых
работ, но все равно, рекомендую на него посмотреть, сократить
частоту запуска раз эдак в 10, а кое-что совсем
закомментировать.
Конкретно: сократить частоту atrun
0,10,20,30,40,50 * * * * root /usr/sbin/atrun
# Trim log files
увеличить размер при котором log-файл удаляется с 16 до 256kb
Если используется uucp то добавить чистку uucp-ишых log-файлов.
В Redhat Linux ежедневно пускается команда updatedb, создающая
индекс для locate. Однако в этот индекс попадают файлы только
из корневого каталога.
Лечение: исправить ключи команды updatedb в файле
/etc/cron.daily/updatedb.cron
с
--localpaths='' --netpaths='/'
на
--localpaths='/' --netpaths=''
Конфигурация XDM
Поставляемый с RedHat файл Xsession неработоспособен.
Поправьте в /etc/X11/xdm/Xsession нижний фрагмент текста на
примерно такой:
################## moshkow #############################
sysprofile=/etc/profile
profile=$HOME/.profile
[ -f "$sysprofile" ] && . $sysprofile
[ -f "$profile" ] && . $profile
[ -f "$resources" ] || resources=$HOME/.Xdefaults
[ -f "$resources" ] || resources=$HOME/.Xresources
[ -f "$startup" ] || startup=$HOME/.xinitrc
[ -f "$startup" ] || startup=$HOME/.xsession
[ -f "$startup" ] || startup=/usr/lib/X11/xinit/xinitrc
if [ -f "$startup" ]; then
xrdb -load "$resources"
exec sh "$startup"
fi
################## moshkow #############################
Разное. Нерешенные проблемы
После перекомпиляции ядра ВСЕ модули, пришедшие с дистрибутивом
перестают работать. Их остается только уничтожить. Но iBCS
уничтожать жалко - а он скомпилирован почему-то под версию ядра
2.0.13 вместо 2.0.18. Приходится искать исходник iBCS и
перекомпилировать.
* SECURITY *
Штатная поставка sendmail 8.7.5 имеет security hole -
локальный юзер имеет возможность получить root права.
Штатная поставка sendmail 8.7.5 неработоспособна вообще -
примерно четверть всех писем недоставляется по причине delivery
errors
Единственный метод лечения - upgrade до версии 8.8.5, у
которого этот bug залечен
Поставляемый с RedHat 3.0 mount имеет security hole -
локальный юзер имеет возможность получить root права.
Произведите update на исправленную версию,
ftp://ftp.redhat.com/pub/redhat/redhat-3.0.3/i386/updates/RPMS/mount-2.5k-1.i386.rpm
или снимите setuid-бит с команд mount/umount
# chmod u-s /bin/mount /bin/umount
Несколько рекомендаций по безопасности
Вольный перевод с
http://www.corbina.net/~ppinpro/alx/gen-rule.html
Если ваш дистрибутив старее 3-5 месяцев - смело выкидывайте его
на свалку. Он содержит массу известных всему миру security
holes и не имеет массы полезных утилит.
Обязательно перекомпилируйте ядро, выкинув из него все не
нужные сейчас дравера.
Не забудьте сделать chmod 400 /vmlinuz.
Добавьте в /etc/lilo.conf возможность загрузки предыдущego ядра.
Отредактируйте /etc/inetd.conf. Закомментируйте в нем ВСЕ
строчки, которых не понимаете.
Если что-то осталось незакомментированно, поместите строку
ALL : ALL в файл /etc/hosts.deny
И индивидуальные строчки разрешений на доверенные хосты в файле
/etc/hosts.allow
ВСЕ версии sendmail, кроме САМОЙ СВЕЖЕЙ позволяют взломать ваш
компьютер из сети. Уничтожте файл со старой версией.
wu-ftp демон ненадежен и опасен. Никто не поклянется, что в нем
исправлены все security holes.
Конфигурирование tcp-wrapper'а
По умолчанию все сервисы в /etc/inetd.conf открыты.
Рекомендуется ограничить доступ к своей машине, оставив его
только доверенным хостам и своей локальной сети.
Перекрыть доступ снаружи на узловую машину:
В файл /etc/hosts.deny вставить строчку
ALL : ALL
Открыть доступ на узловую машину с машин локальной сети
195.0.1.0
В файл /etc/hosts.allow вставить строчки
ALL : \
127.0.0.1
ALL : \
195.0.1.0/255.255.255.0
А какой версии sendmail на вашей машине?
Date: 10 апр 97
Кстати CERT советует ставить Sendmail 8.8.5. Более ранние
версии позволяют удаленно выполнять любые команды от имени
суперпользователя на вашей машине.
httpd: дырявые cgi-скрипты
Штатная поставка Apach-httpd имеет cgi-скрипт
/home/httpd/cgi-bin/phf который позволяет выполнять
произвольные команды на вашей машине от имени юзера nobody
Securные параметры ядра
При реконфигурации ядра не забудьте взвести флажки:
> * Drop source routes pakets [Y]
Drop packets that have a source route flag set. This stops simpliest
redirection attacks and should be always set to yes.
> * always defragment [Y]
Reassemble packet from fragments first and only after that apply firewalling
rulesets. Unless you have a really good reason not to do this ( and I am yet
to hear one ), it should be set t yes.
Имеющий доступ к консоли Linux может стать суперюзером
0. Загрузка со своей загрузочной дискеты1. Booting to single-user mode
LILO: linux single
Debian обходит это поправками в /etc/initab, а RedHat - пропускает
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin
2. Указать альтернативную программу init
LILO: linux init=/bin/bash
3. Задать другой root-partition
LILO: linux root=/dev/hda1
Если создать в отдельной партиции всю положенную для корня
структуру, то можно будет с нее загрузиться.
Эту возможность можно получить, например, если /tmp
монтируется в отдельную партицию. Или машина поддерживает UMS-
DOS и имеет досовский раздел.
Лечение
Закрыть паролем BIOS-setting и отключить возможность
загрузиться с дискеты.
Закрывайте возможность перехвата LILO-prompt
A workaround can be achieved by using PASSWORD and
RESTRICT options in /etc/lilo.conf.
Внимание: /etc/lilo.conf должен быть root.root 600, чтоб
никто не смог этот пароль подсмотреть.
kerneld and ifconfig загрузят любой kernel-модуль
Команда
/sbin/ifconfig module-name
позволяет _любому_ пользователю загрузить модуль из каталога
/lib/modules используя kerneld.
Лечение:
Пока не залечено в промышленном масштабе. Отключайте kerneld
или явно указывайте модули, которые можно грузить, уберите все
лишние модули доставшиеся вам после инсталляции.
* ПРОЧЕЕ *
/etc/rc.d : Лишние команды при начальной загрузке
Проблема: при начальной загрузке запускается большое количество
излишних сервисов (что особенно нервирует на домашних standalone
машинах)
Лечение:
Зайти в каталог /etc/rc.d/rc3.d
и переименовать "лишние" файлы:
mv S45pcmcia s45pcmcia
. . .
/etc/sysconfig/network-scripts/ : Некорректные установки статического роутинга
Если пытаться устанавливать статический роутинг сетей через
"control-panel -- Network" - то не работает.
Лечение:
Либо добавить команды
route add -net network.address gw your-host
в файл /etc/rc.d/rc.local
Либо исправить в конце /etc/sysconfig/network-scripts/ifup-routes
grep "$1 " /etc/sysconfig/static-routes | while read device args; do
route add -$args $device
done
на
grep "$1 " /etc/sysconfig/static-routes | while read device args; do
route add -$args # $device
##########
done
From: Roman ([email protected])
Проблема: Припекло установить два 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