Unix — пример работы с текстом

Скачал тут недавно книгу из двух текстовых файлов в koi8-r и с переводами строки в стиле Win (^M)

Решил поправить это дело таким вот образом:

$ cat book_p1.txt book_p2.txt | sed 's/\r//' | iconv -f koi8-r -t utf8 > book.txt

Вот так вот :) Unix - это круто!

Немного о правах в Unix

[announce]Чтобы было понятно и не забыть самому, что значат циферки в правах :)[/announce]
Итак, основы Unix, но я всегда  забываю как формируются цифры прав доступа в Unix, поэтому и решил написать сюда об этом. чтобы в случае  чего можно было подглядеть.

Вот примерная схема:

-r-w-x--r-w-x--r-w-x-
-------   -------  --------
    U         G         O

Легенда:
U - Владелец файла
G - Группа владельца файла
O - Все остальные

-r- - Разрешение на чтение
-w- -Разрешение на запись
-x- -Разрешение на использование

Теперь о том как формируются цифры:

Каждое разрешение представляет из себя ,если грубо, булевое значение т.е может быть равно 0 (выключено) или  1(включено)
Таким образом получаем двоичный код   -111-111-111- что значит -rwx-rwx-rwx, а как мы знаем  из курса информатики 111 в двоичной системе счисления есть 7 в восьмеричной, значит запись -111-111-111- в двоичной системе счисления будет равна -7-7-7- в восьмеричной. Кажется все логично и просто :)

Нембольшая таблица, чтобы было понятно наглядно.

Доступ Двоичное число Восьмеричное число
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7



Вот небольшая программка, которую я написал на js. Может кому-нибудь она поможет лучше понять принцип прав доступа в Unix



При написании статьи пользовался книгой - Маслякова В.Г, Linux на 100%(+DVD), СПб.:Питер,2009, 336c.

настройка sudo

[announce]Настраиваем sudo в ARCHLinux..[/announce]
Программа sudo предназначина для запуска команд с привелегиями root пользователя:
например:

$ sudo halt

Для настройки рекомендуеться запустить команду visudo от ползователя root, которая запустит редактор vi с файлом для редактирования - /etc/sudoers

Немного о синтаксисе файла.

Чтобы разрешить пользователю выполнять все команды от root  нужно ввести строку:

  

user ALL=(ALL) ALL

Если нужно дать возможность запускать на машине только несклько команд, то можно искользовать такой синтаксис:

user ALL=/usr/sbin/halt

Эта строка позволит запускать пользователю user команду halt. Для того,  чтобы позволить пользователю запускать несколько  команд от  пользователя root нужно перечислить команды, включая абсолютный путь к команде, через запятую.

user      ALL=/usr/sbin/halt,  /bin/mount

Эта строка позволит запускать от полззователя root команды halt и mount

Итак, примерно получается такой синтаксис как я понял:

первое поле user - имя пользователя от которого будет запускаться команда sudo
второе поле ALL= - это имя машины на которой разрашено запускать каоманды через sudo
третье поле (ALL) - это пользователь от кого будет запущена команда через sudo, по-умолчанию root
четвертое поле - список команд с абсолютным путем к команде.

Еще пара любопытных опций.
Немного юмора от разработчиков sudo. Если в /etc/sudoers есть эта строка, то вместо стандартного сообщения о введенном неверно пароле будет выводиться шутливое предупреждение:

Defaults insults 

Данная строка укажет на то что sudo будет хранить пароль 10мин.

Defaults:ALL timestamp_timeout=10

*Примечание: каждая запись занимает одну строку, поэтому некоторые записи могут быть большими, для переноса можно ипользовать символ \ тобишь как-то так:

user      ALL=/usr/sbin/halt,  \
/bin/mount

Это будет одна строка.

Источники:

$ man sudo
$ man sudoers

http://wiki.archlinux.org/index.php/Sudo_(Русский)
http://wiki.archlinux.org/index.php/Sudo

конечно же :)

Очень странный сайт с какими-то ошибками и неправильной кодировкой (сразу видно НАШ былокодерский! :) ) - http://www.infocity.kiev.ua/os/content/os299_2.phtml 







Поднимаем Samba

[announce]Поднимаем Samba в FreeBSD 8.1[/announce]
Итак, для того, чтобы подружить windows с FreeBSD поднимаем самбу

# cd /usr/ports/net/samba3 && make install clean

Далее добавляем в /etc/rc.conf строку - inetd_enable="YES"

Запускаем -
# /etc/rc.d/inetd start

Открываем браузер и вводим в адресную строку: <domain_samba_server>:901 где  <domain_samba_server> имя или ip машины на которой запустили самбу, например http://localhost:901 или http://127.0.0.1:901
После ввода пароля и логина можем управлять настройками самбы из браузера.

Проще как мне кажется отредактировать файл /usr/local/etc/smb.conf при помощи любимого текстового редактора ( конечно же vi :) )

После сохранения настроек запускаем Самбу -
/etc/rc.conf - сюда по традиции добавляем строки:

winbindd_enable="YES"
nmbd_enable="YES"
smbd_enable="YES"

И запускаем скрипт запуска самбы:

# /usr/local/etc/rc.d/samba start



 




LAMP для FreeBSD

[announce]Ставим на фрю LAMP ну или тогда уж FAMP ))[/announce]
Нужно поставить Apache+Mysql+php на FreeBSD 8.1, который в народе заветься LAMP я буду назвать FAMP так как в качестве ОС системы буду использовать не Linux а FreeBSD
Вот как делать:

Для начала поставим Apache:*

# cd  /usr/ports/www/apache13 && make install clean

Затем ставим php и mysql

# cd /usr/ports/lang/php5 && make install clean

В меню config выбираем модуль Apache
Ставим mysql

# cd /usr/ports/databases/mysql50-server && make install clean

прописываем в в rc.conf строки для автоматического старта серверов Apache и Mysql:

apache_enable="YES"
mysql_enable="YES"

Запускаем:

# /usr/local/etc/rc.d/mysql-server start &
# apachectl start

можно попробовать сделать скрипт типа такого -

# vim install-lamp.sh

#!/bin/sh
cd  /usr/ports/www/apache13 && make install clean
cd /usr/ports/lang/php5 && make install clean
cd /usr/ports/databases/mysql50-server && make install clean
echo 'apache_enable="YES"' >> /etc/rc.conf
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start &
apachectl start

Делаем скрипт запускаемым:

# chmod 775 install-lamp.sh

или запускаем так:

# /bin/sh install-lamp.sh

Зупускать нужно из под пользователя root или используя команду sudo

Вот FAMP и готов )))

* примечание: сначала хотел поставить сервер apache22, но возникли ошибки при установки с пакетом db чего-то там.. так как версия сервера для меня была не принципиальна и не очень много желания было ковырять в сторону исправления этой ошибки, я поставил версию 1.3

PS. В процессе установки FreeBSD я по нехватки опыта отметил php и apache для установки из коробки, все поставилось хорошо, вот только php установился не как модуль apache, а отдельно о чем мне после запуска сервера apache, сообщил inpdex.php, который отобразился как текст в браузере :) Мне пришлось удалить все пакеты связанные с php через pkg_delete и затем собрать php из портов с поддержкой модуля для Apache.

Источник информации: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-apache.html
Привожу англоязычную документацию не из-за понтов (с английским у меня не очень..) просто дело в том, что в локализованном хэндбуке вариант настройки и установки не подошёл мне (скорее всего из-за устаревшей информации, которая приводится в русскоязычной документации)





**Пока не поменял владельца /var/db/mysql вот так - chown -R mysql:mysql /var/db/mysql/ mysql скрвер не стартавала (решение подглядел вот тут в комментариях - http://chrv.ru/?p=11)

FreeBSD

[announce]Ставлю и кручу фряку (очень увлекательно :) ) Подробности читайте в http://killercoder.ru/zennix/ [/announce]

666666666666666666666666666666666666666666666666626666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666
6624 4666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666
62445 466666666666666666666666666666662222666666666666666666666666666666666666
66666666666666666666666666666666666666
6244225 56666666666666666666666666666666666524 42666666666666666666666666666666666
666666666666666666666666666666666666
6244224 4666666666666666666666666666666666666424 466666666666666666666666666666666
6666666666666666666666666666666666
62422224 466666666666666666666666666666666666666425 2666666666666666666666666666666
666666666666666666666666666666666
622222225 56662224455 554226666666666666666422 466666666666666666666666666666
66666666666666666666666666666666
642222224 5 42222455 5426666666666664225 46666666666666666666666666666
66666666666666666666666666666666
222222225555555542225555 526666666624225 2666666666666666666666666666
66666666666666666666666666666666
52222245422244222224222225 566622454222 5666666666666666666666666666
66666666666666666666666666666666
4222254224422252222444442225 5544442222225 666666666666666666666666666
66666666666666666666666666666666
22225424266662522426666254225 55555 5222222222225 5666666666666666666666666666
66666666666666666666666666666666
64254446666665222666666625222244555 542222222455 2666666666666666666666666666
666666666666666666666666666666666
45442666666422266666666625222225 544445 26666666666666666666666666666
666666666666666666666666666666666
4542666666242666666666662 2222245 5266666666666666666666666666666
66666666666666666666666666666666
65426224266422666666666666542222255 526666666666666666666666666666666
66666666666666666666666666666666
2542465 5644 52 5266666666542222254 52666666666666666666666666666666666
66666666666666666666666666666666
5455 5 524 22 66666662522222224 4266666666666666666666666666666666666
666666666666666666666666666666
62525 44 55 26666662522222224 4266666666666666666666666666666666666666
66666666666666666666666666666
2242225 425 26666665422222225 26666666666666666666666666666666666666666
666666666666666666666666666
6242222244444424 56666665522222222 56666666666666666666666666666666666666666
66666666666666666
6666666666242222242222222245 466666655222222224 46666666666666666666666666666666666666666
66666666666666666
6222266666522222242222222245555222244555422224555 26666666666666666666666666666666666666666
666666666666666666
6222222662422222444222224 522222222222222225 466666666666666666666666666666666666666666
6666666666666
666666622422266222222224555555555422222222222222225 5666666666666666666666666666666666666666666
6666666666666
222266662662226624222555222222222222222222222222225 46666666666666666666666666666666666666666666
6666666666666
622224266666222666244445 4222222222222222245 555 266666666666666666666666666666666666666666666
66666666666666
642222222622246666662245 542222222222455 554445 26666666666666666666666666666666666666666666666
6666
622666666666666222222242666666666624 5555555 542222445 52666666666666666666666666666666666666666666666666
66666
62222222666666622222222662222224266622555444422224455 466666666666666666666666666666666666666666666666666
6666666
662222222222222222222252222225 466666625 55555 266666666666666666666666666666666666666666666666666
6666666666
6222222222226666242542224 566666662224444422222222244 266666666666666666666666666666666666666666666666666
6666666666666
666666666666662444445 54222666242222222222222222225 26666666666666666666666666666666666666666666666666
66666666666666666666666666
242222225 422222222222222222225 2666666666666666666666666666666666666666666666666
66666666666666666666666666
422222225 544444444422222224 525 5666666666666666666666666666666666666666666666666
66666666666666666666666666
62244445 522222222245555455 525 266666666666666666666666666666666666666666666666
6666666666666666666666666666
62555444 422222222222455 24 466666666666666666666666666666666666666666666666
666666666666666666666666666666
6224445 4222222222222225 566666666666666666666666666666666666666666666666
666666666666666666666666666666666666
625 54222222222222455 566666666666666666666666666666666666666666666666
66666666666666666666666666666666666666
6 5442222222244 466666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
65 5 5555 5666666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
645 2666666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
222255 5666666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
422222245 522245 266666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
242222222224555 54222445 66666666666666666666666666666666666666666666666
666666666666666666666666666666666666666
6442222222222224 542225 56666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666
25222222222224 55 5266666666666666666666666666666666666666666666
666666666666666666666666666666666666666666
2 5554444455 46666666666666666666666666666666666666666666
666666666666666666666666666666666666666666
2 5 526666666666666666666666666666666666666666
666666666666666666666666666666666666666666
65522245 555 5 5426666666666666666666666666666666666666
6666666666666666666666666666666666666666
662452224455 5444444 55 5 2624 542266666666666666666666666666666666
666666666666666666666666
66666662222222244452224244 5422455 445 26662245 544226666666666666666666666666
66666666666666666
66666666266625 422445444554555555555 56666666622255 5544422266666666666666
66666666666666
66666666666666662 5 542222622224 5442555555 266666666666666222455 554266666666
66666666666666
2666666666666666222666666666666625 422445 6666666666666666666666662222222244555 5466666
66666666666666
2666666666666252666666666666666662 56666666666666666666666666666666666662244 4666
666666666666666
62222666666645266666666622222224 5426666666666666666666666666666252666666666245 466
6666666666666666666
6666666666666666666666666625 542266666666666666666666666666666244445266666624 266
6666666666666666666666666666666
666666622222225 555544222666666666666666666666666666666662244222224 44555 46666
66666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666622442222222225 55426666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666
6624444444455555 5266666666666666
6666666666666666666666666666666666666666666666666666666666666666666666666666666666
62222222222266666666666666666666666666
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666



Ставлю и кручу фряку (очень увлекательно :) ) Подробности читайте в http://killercoder.ru/zennix/

ASCII стянул отсюда - http://www.codeismylife.com/ascii_freebsd_daemon/3223.html

Пересборка Мира и ядра

[announce]Пересобрал мир и ядро на только что установленной фряке. Вот как было дело:[/announce]
После установки Фряки мне пришла в голову мысль, что неплохо было бы персобрать мир и ядро системы.
Дальше опишу свои действия и команды, а так же укажу источники информации, которыми я пользовался в процессе.

Итак, приступим

Для оптимизации компиляции нужно отредактировать /etc/make.conf
Пример make.conf можно найти в /usr/share/examples/make.conf
У меня получился вот так - http://killercoder.ru/zennix/Nastroyka_make_conf_v_FreeBSD

Обновляемся через cvsup как тут - http://killercoder.ru/zennix/Obnovlenie_ishodnikov_cherez_cvsup

Читаем тут - http://www.freebsd.org/doc/ru/books/handbook/makeworld.html

Загружаемся в однопользовательский режим:
После загрузки вводим:

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

Переходим в директорию с исходниками (у меня /usr/src/)

# cd /usr/src/

На этапе выбора архитектуры мира произошла накладка, дело в том что uname -a возвратил мне i386, а
dmesg | grep CPU - Athlon64 :)

Нужно было безболезненно перейти на другую архитектуру так как make buildkernel отказался запускаться с параметром в файле конфигурации ядра cpu HAMMER - это для 64х битных атлонов.
Google нашёл по этому поводу статью вот она - http://unixfaq.ru/index.pl?req=qs&id=527


Учитывая данные сведения сделал:

# make buildworld TARGET_ARCH = amd64

Сборка, запустилась. Я не очень силён в команде make, но кажется можно было бы запустить и с параметром -j4, а для amd64 возможно и -j8 для увеличения производительности и скорости сборки.

Дальше переходим 
Копируем ядро GENERIC для нужной нам платформы в удобное место в данном случае это ~/ # cp /usr/src/sys/amd64/conf/GENERIC ~/KERNEL_`date %d_%m_%Y`  Идею с именем нового ядра подсказал lissyara вот отсюда - http://www.lissyara.su/articles/freebsd/tuning/make_kernel/

Редактируем опции ядра при помощи любимого редактора, в моем случае это vi :)

# vi  KERNEL_01_07_2010

Свой конф приводить думаю бессмысленно, могу только сказать, что ознакомится с дополнительными параметрами ядра можно в файле /usr/src/sys/amd64/conf/NOTES и в /usr/src/sys/NOTES - это если вы понимаете по-английски :) я же пользовался опять же Гуглом и http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-config.html,


Собираем ядро
При сборки ядра make buildkernel TARGET_ARCH=amd64 KERNCONF=KERNEL_01_07_2010 выдал ошибку, после перезагрузки компьютера, я повторил попытку, но команда не сработала, тогда я решил пересобрать ядро с командой

# make buildkernel TARGET_ARCH=amd64

Эта команда прошла и запустилась компиляция ядра.
После компиляции запустил установку нового ядра и make выдал ошибку

Error: Please set DESTDIR

Установил DESTDIR:

# export DESTDIR=/usr/src/

Запустил
# make installkernel TARGET_ARCH=amd64

Вроде пошла установка, но выскачела опять ошибка:

cd: can't cd to /usr/obj/amd64/usr/sys/GENERIC




Обновление исходников через cvsup

[announce]О том как я обновлял исходники фряки через cvsup[/announce]
Ставим cvsup из портов:

# cd /usr/ports/net/cvsup/ && make install clean

Тоже самое без возможности поддержки иксов -
# cd /usr/ports/net/cvsup-without-gui && make install clean

Создаем файл с настройками обновления:
# vi supfile

В файле:


*default release=cvs tag=.tag=RELENG_8                     # Версия системы, которая нам нужна
*default host=cvsup2.ru.FreeBSD.org                            # Хост откуда тянем исходники
*default prefix=/usr                                                        # Куда кладем полученные исходники (этой строкой в /usr/src/)
*default base=/var/db                                                   # Путь к base каталогу для файлов статуса
*default release=cvs delete use-rel-suffix compress     # Дополнительные опции
src-all                                                                             # Забираем все исходники


Запускаем cvsup -g -L 2 supfile


Читаем внимательно:
http://www.freebsd.org/doc/ru/books/handbook/cvsup.html

Настройка make.conf в FreeBSD

[announce]Решил завести себе домашний сервер под FreeBSD. Первое, что решил сделать после установки - оптимизировать опции сборки.[/announce]
Вот мой /etc/make.conf:

CPUTYPE?=athlon64 # Процессор
CFLAGS=-01 -pipe # Флаги сборки
NO_PROFILE=true #Обход построения библиотек для профилирования

# Включать флаги обязательно
NO_CPU_CFLAGS=false
NO_CPU_COPTFLAGS=false

# Отключаем сборку ненужных пакетов
MAKE_KERBEROS4=false
MAKE_KERBEROS5=false
NO_BIND=true
NO_SENDMAIL=true
NO_GAMES=true

# Язык документаций
DOC_LANGS=en_US.ISO8859-1 ru_RU.KOI8-R

Источники информации:
http://www.lissyara.su/articles/freebsd/tuning/make.conf/
http://www.freebsd.org/doc/ru/books/handbook/
/usr/share/examples/etc/make.conf