вторник, 27 июля 2010 г.

HOW TO: Клонирование жесткого диска в Ubuntu, или перенос оси на другой винт

Существует множество утилит и всякого рода приблуд для резервного копирования данных. Однако зачем извращаться и экспирементировать если можно всё сделать надежными, простыми и стандартными средствами? Речь идёт об утилите dd.

Тут все просто и сводится к применению нескольких команд. Следует отметить, что sda – диск на котором вертитса сама ось, sdb – диск куда будем бэкапится (любой другой, фс, модель, отец-производитель неважен, важно чтобы они были одинакового размера или sda меньшего! В противном случае надо уменьшить клонируемый раздел до размерров sdb)

Приступим-с:

Собственно сама команда копирования
#dd if=/dev/sda1 of=/dev/sdb1 bs=размер кеша жесткого диска

Переносим mbr на "новый" диск
#dd if=/dev/sda1 of=/dev/sdb1 bs=512 count=1

Параметры bs=512 count=1 задают dd клонировать первые 512 байт sda, а как известно, именно в первых 512 байта на харде храниться mbr


Ну собственно и все! Имеем точную копию нашего рабочего винта.

З.Ы. Если всё делалось на "лету", а можно и так, без live-CD, то есть большая вероятность того, что будут ошибки ФС. Однако это легко лечится
#fsck -y /dev/sdb1

среда, 21 июля 2010 г.

HOW TO: Canon i-SENSYS MF4010 Ubuntu 9.10

Ставим МФУ Canon i-SENSYS MF4010.
Испытано на Ubuntu 9.10, но это применимо к любому Debian-based дистрибутиву и любым другим, которые поддерживают RPM пакеты.
Полный список поддерживаемых систем: http://software.canon-europe.com/software/0035665.asp?model=

Установка

Заходим на http://software.canon-europe.com/ и в поле "Multifunctionals" выбираем "i-SENSYS MF4010". Выбираем ось "Linux" и язык "English".

Пройдет поиск дров и вывалится список доступных. Выбираем свежатину, у меня это UFRII/UFRII LT Printer Driver for Linux (2.10).
В самом низу пейджа будет линк на o106eenx.zip.
Качаем. Распаковываем. Переходим в "UK". Далее в "32-bit_Driver" или "64-bit_Driver". Заходим в "Debian".
Там 2 файлА: "cndrvcups-common_2.10-1_i386.deb" и "cndrvcups-ufr2-uk_2.10-1_i386.deb". В таком порядке их и устанавливаем.

dpkg может ругнуться, что пакет libcupsys2 не установлен.
Установим его: он часть пакета libcups2, по этому можно просто
# apt-get install libcups2

Предварительно выполнив:
# apt-get -f install

Ставим дрова:

# dpkg -i cndrvcups-common_2.10-1_i386.deb

# dpkg -i cndrvcups-ufr2-uk_2.10-1_i386.deb

На этом установка дров для Canon i-SENSYS MF4010 в Ubuntu закончена.


Настройка

Запускаем настройку печати:

$ system-config-printer

Создать новый принтЕр. Выбираем "Canon MF4010", и дальше по мастеру.

Сканирование

Тут вообще все просто. Пользуем Xsane. Там Canon MF4010 уже будет как устройство.

среда, 14 июля 2010 г.

Настраиваем VNC в UBUNTU со стартом X-ов

В качестве VNC-сервера в Ubuntu я использую x11vnc.
Почему? У него есть замечательная опция - он может грузиться со стартом X-сов.

Для начала, желательно увалить все установленные vnc-сервера, и потом накатуем x11vnc

$sudo apt-get install x11vnc

Если требуется аутентификация, дополнительно создаем пасс доступа для юзера

$x11vnc -storepasswd


Теперь правим скрипты для автозагрузки сервера

$sudo mcedit /etc/gdm/Init/Default

перед ‘exit 0′ добавляем следующую строку:
/usr/bin/x11vnc -dontdisconnect -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log

При использовании конекта с аутентификацией к строке надо добавить еще параметр

-rfbauth /home/USERNAME/.vnc/passwd
где /home/USERNAME/.vnc/passwd - путь куда был сгенерен пароль


Теперь поправим еще один конфиг:

$sudo mcedit /etc/gdm/PreSession/Default

также в конец добавляем
/usr/bin/x11vnc -dontdisconnect -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log

Опять таки, если необходимо использовать конект с аутентификацией к строке надо добавить еще параметр

-rfbauth /home/USERNAME/.vnc/passwd
где /home/USERNAME/.vnc/passwd - путь куда был сгенерен пароль

Ну и опционально можно поправить еще один конф:

$sudo mcedit /etc/gdm/gdm.conf-custom

также в конец добавить
KillInitClients=true

Все! x11vnc должен автоматически запускаться со стартом X-ов
Изменения вступят в силу после перезагрузки

Всё это проверено и актуально для Ubuntu 8.04, 9.04, 9.10, 10.04


Доп. инфо:
Описание параметров запуска x11vnc http://www.karlrunge.com/x11vnc/

вторник, 13 июля 2010 г.

Ubuntu в домене Windows

Авторские права: Исаев Р. А.

Цели:
1. Обеспечить авторизацию пользователя в домене Active Directory
2. Обеспечить прозрачную и сквозную авторизацию на ресурсах сети
3. Закрыть для пользователя использование внешних носителей таких как Flash, CD,
Floppy.

Все команды в этом руководстве требуют прав root так, что я обычно пользуюсь sudo -i
Все конфиги используются в действующей сети.

DOMAIN ваш домен. dc это сокращение от domain controller

1. Редактируем часовой пояс

#mcedit /etc/default/rcS
ставим UTC=no

2. Настраиваем сеть.
Проверяем наличие пинга до домен-контроллера(DC) по полному доменному имени (FQDN),
если проблемы - настраиваем /etc/resolv.conf

# ping dc.domain.ru

#mcedit /etc/default/ntpdate

NTPSERVERS="dc.domain.ru" <--- меняем эту cтроку указывая домен контроллер
в домене с несколькими домен контроллерами главным сервером времени является
эмулятор PDC. остальные dc берут время у него.

Даем команду на синхронизацию

#/etc/network/if-up.d/ntpdate

Прописываем полное FQDN для настраиваемой машины workstation

# mcedit /etc/hosts

127.0.0.1 workstation.domain.ru localhost workstation

Тестим

# ping workstation.domain.ru

3. Начнем ставить пакеты для работы в домене:

#apt-get install samba smbfs winbind libpam-mount

smbfs нужен для монтирование сетевых папок. Он делает два файла в /sbin/(u)mount.cifs

Дополнительно кому нужен ssh доступ к рабочей станции и наличие редакторов, файл
менеджеров:

#apt-get install mc gnome-commander openssh-server

А теперь конфигурируем SAMBA для работы в домене создадим папку для пользователей домена:

$mkdir /home/DOMAIN

Правим конфиг

# mcedit /etc/samba/smb.conf

Код:

[global]
unix charset = UTF-8
dos charset = CP866
display charset = UTF-8
workgroup = DOMAIN
server string = %h server (Samba, Ubuntu)
; У кого есть wins можете включить
wins support = no
; и прописать wins сервер
; wins server = 192.168...
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
# вот тут мы показываем, что используем AD
security = ads
# если стоит * то samba сама будет искать домен контроллер через dc, или же можно
перечислить их IP адреса через пробел в явном виде. Или указать один #IP для того dc на
котором хотите авторизоваться. Для отказоустойчивости лучше указать несколько dc или *
password server = *
realm = DOMAIN.RU
#Внимание realm пишется большими буквами !!!
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword
:* %n\n
*passwd:*password\supdated\ssuccessfully* .
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind enum groups = yes
winbind enum users = yes
#домашняя папку у пользователя будет в папке с именем домена. Лучше ее создать заранее
вручную.
template homedir = /home/%D/%U
client use spnego = yes
winbind use default domain = yes
winbind refresh tickets = yes
restrict anonymous = 2
# строки ниже, чтобы рабочая станция не пыталась стать обозревателем в сети.
domain master = no
local master = no
preferred master = no
os level = 0

Проверяем конфигурацию SAMBA:
# testparm

4. Даем команду чтобы демоны перечитали конфигурацию:

#/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start

5. Подключаем машину в домен

#net ads join –U administrator

Далее будет запрос пароля доменного админа. Вместо доменного админа можно указать
любую пользовательскую учетку. Да, у пользователя есть право ввести ПК в домен, но
ограниченное кол-вот раз .

В случае успеха видим:

Using short domain name – DOMAIN
Joined ‘namepc’ to realm ‘DOMAIN.RU’

Если такая машина уже существует увидим

Failed to set password for machine account (NT_STATUS_ACCESS_DENIED)
Failed to join domain !

Если будет такая ошибка содержащая что то про principal name, а в AD появится учетка, но со знаком красного крестика значит смотри и проверяй /etc/hosts

При рассинхронизации времени с DC возможно появление ошибки из-за несовпдаения
времени на DC и на workstation. Перегрузитесь для синхронизации времени с DC и повторно попытайтесь ввести в домен Ubuntu.
ВСЕ ! ПК в домене.

Дальше настраиваем PAM . PAM это подключаемые модули авторизации.
То есть любое приложение, которое принимает пароль дальше передает его системе PAM на проверку, а та выдает только ответ пустить или нет. Привожу рабочий текст.

1. /etc/pam.d/common-auth

# /etc/pam.d/common-auth - authentication settings common to all services
auth required pam_mount.so
auth optional pam_group.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth sufficient pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE debug
auth required pam_deny.so


Опция debug нужна для отладки. Сыплет лишними данными в /var/log/auth.log
Полезно при проблемах, а так можно ее не ставить.
Первая строка “auth required pam_mount.so” принимает пароль.
Опция required указывает на обязательность этого модуля.
Если он будет провален по каким то причинам PAM даст ответ “не пускать”.
Дальше идет модуль pam_group.so то что он optional указывает на неважность выполнения этого модуля для общего ответа. То есть будет ли выполнен pam_group корректно или нет - неважно.
Дальше идут модули авторизации для локальных учеток pam_unix.so и для доменных pam_winbind.so
В моем конфиге пароль принимет pam_mount поэтому в модулях, которые принимают пароль указана опция use_first_pass, если ее не указать, то пароль придется вводить вручную несколько раз. Опция sufficient работает так, что положительный ответ любого из модулей авторизует пользователя, а отрицательный ответ одного из них не играет роли. Зато отрицательный ответ обоих будет обломом. Например входит локальный пользователь модуль unix даст ответ ДА, winbind не найдет в домене
такой учетки и даст ответ НЕТ (или найдет учетку, но пароли не совпадут). Здесь надо предупредить, что неверные попытки авторизоваться по существующей учетке в домене приведут к ее блокировке. Мое мнениие, что стоит избегать совпадения имен учеток на самом ПК и в домене. Последний модуль обязателен и в ЛЮБОМ случае отказывает во входе. Если дело дошло до него значит все плохо и никто из модулей не сказал ДА.

Pam_group нужен для вытягивания из домена групп в которые он входит. Так же в моей конфигурации winbind авторизуется по Kerberos посему никакие kerberos пакеты мы не
ставили. Билет пользователь получает при входе автоматически и билет кербероса кешируется в файлике.


2. /etc/pam.d/common-account

account sufficient pam_winbind.so
account required pam_unix.so

3. /etc/pam.d/common-password

password sufficient pam_unix.so nullok obscure md5
password sufficient pam_winbind.so

файл common-password начинает работать когда приходит время менять пароль (принудительная смена пароля по истечению срока) или когда запускается утилита для смены пароля passwd.

4. /etc/pam.d/common-session

session required pam_winbind.so
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session optional pam_foreground.so

5. etc/pam.d/sudo

#%PAM-1.0
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so
@include common-account

Файл sudo работает при запуске утилиты sudo или при попытке запустить любое из административных приложений в GNOME (KDE не испытывал). Обеспечивает нормальную работу Synaptic и прочих подобных приложений выдающих табличку на
пароль для административных действий.

6. /etc/pam.d/gdm

auth requisite
pam_nologin.so
auth required
pam_env.so
@include common-auth
@include common-account

session required
pam_limits.so
@include common-session
#session required
pam_mount.so use_first_pass
@include common-pammount

#строка нужна для создания
домашней папки после монтирования шары !!! создать папку в сетевой шаре до монтирования не
выйдет будет ошибка.

session required
pam_mkhomedir.so umask=0022 skel=/etc/skel
@include common-password

А вот файл указующий в каком порядке вызывать авторизационные скрипты и авторизовывать пользователя входящего через графический GDM интрефейс. Как видите тут строка создания домашней папки идет после common-pammount то есть после монтирования сетевого ресурса с файл-сервера w2k3
Тем у кого профиль лежит на рабочей станции эта строку рекомендуется поместить в
/etc/pam.d/common-session
Строки для keyring я убрал ибо не пользуюсь им.

7. А теперь вернемся к модулю перечисления групп pam_group из файла etc/pam.d/common-auth

У нас есть возможность включить доменного пользователя в те или иные ЛОКАЛЬНЫЕ группы ubuntu станции. Таким образом мы можем управлять правами пользователя домена на локальные ресурсы. Подключение флешек, аудио устройства, сканеры и т.д.
И у модуля есть файл конфигурации. Я привожу его в сокращенном виде. рекомендую поглядеть оригинал там много образцов и показаны интересные вещи.

#mcedit /etc/security/group.conf

# the syntax of the lines is as follows:
#
#
services;ttys;users;times;groups
#для пользователей.
*;*;*;Wk0900-2200;adm,audio,scanner,lpadmin
#для админов.
*;*;usysop;Al0000-2400;adm,audio,scanner,cdrom,floppy,plugdev,admin,dip,video,netdev,lpadmin,powerdev
*;*;admin-domena;Al0000-
2400;adm,audio,scanner,cdrom,floppy,plugdev,admin,dip,video,netdev,lpadmin,powerdev

Первый параметр сервис, для нас это любой будет, второй терминал (консоль или терминал), третий это имя пользователя домена!, четвертый это разрешенное время входа для этого пользователя. Пятый параметр это локальные группы. Членство в группе admin дает право на sudo. В данном случае пользователи имеют право ставить принтера, и пользоваться локальными ресурсами ПК на полную катушку.

У меня есть подозрение, что из-за того что модуль pam_group грузится с опцией optional ограничение по времени работать не станет, тогда для ограничения входа по времени модулую скорее всего нужно будет поставить вместо optional required в common-auth

8. Файл очень важен /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: files winbind

9. Редактированием /etc/sudoers
Туда надо добавить либо пользователя домена либо группу домена
Например так

# User privilege specification
root ALL=(ALL) ALL
domain-user ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%support ALL=(ALL) ALL

Здесь support и domain-user доменная группа и пользователь.

Настройка окончена !

понедельник, 12 июля 2010 г.

Настройка OpenVPN в Ubuntu

Довольно подробно все обсосано уже до нас вот здесь http://forum.ixbt.com/topic.cgi?id=14:40906 (большое спасибо vinni). Решил вынести ключевые моменты.

Собсна ставим openvpn:

$sudo apt-get install openvpn

Апосля установки настраиваем server.
OpenVPN умеет работать в двух режимах tun = L3-туннель, tap = L2-туннель. При использование tap - сервер работает в режиме бриджа

Рисуем конфиг сервера в режиме tun:

$sudo mcedit /etc/openvpn/server.conf:

и внего пишим следующее:

port 1194
proto udp  
dev tun
dev-node tun0
ca                   /etc/openvpn/cert/ca.crt
cert                 /etc/openvpn/cert/mmarket.crt
key                  /etc/openvpn/cert/mmarket.key
dh                   /etc/openvpn/cert/dh1024.pem

server                  10.7.0.0 255.255.255.0
route-method        exe
client-config-dir    "/etc/openvpn/ccd"
push                   "route 192.168.10.0 255.255.255.0"
route                  192.168.1.0 255.255.255.0

#ifconfig-pool-persist ipp
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status               /etc/openvpn/log/openvpn-status.log
log                  /etc/openvpn/log/openvpn.log
verb 5
mute 20

разберем подробнее:

port 1194 - порт, который слушает сервер (можно выбирать любой)
proto udp - протокол передачи данных (tcp/udp)
dev tun - режим работы openvpn сервера (tun/tap)
dev-node tun0 - явное указание интерфейса (имя интерфейса на котором поднимать сервер, необязательный параметр)

ca, cert, key, dh - сертификаты и ключи (генерируются отдельно, см. ниже)

server 10.7.0.0 255.255.255.0 - этот параметр задает подсеть, в которой работает openvpn сервер

route-method exe - добавление маршрута делать не через API, а через route.exe

client-config-dir "/etc/openvpn/ccd" - директория настроек для клиентов (удобно если много клиентов и каждому из них нужно передать разные параметры), в этой директории нужно создать файл с именем клиента, в который записать необходимые параметры

push "route 192.168.10.0 255.255.255.0" - передать клиентам маршрут на подсеть, которая находится за интерфейсом tun0

route 192.168.1.0 255.255.255.0 - добавить маршрут на сервере; указывает что за клиентом есть подсеть 192.168.1.0/8

ifconfig-pool-persist ipp - назначение клиентам статических ip адресов. т.е. в файл ipp необходимо вписать <имя_клиента (его CN)>,<ip клиента>

client-to-client - разрешает обмен трафиком между клиентами для режима dev tun

duplicate-cn - разрешает подключение нескольких клиентов с одинаковыми именами. опция не поддерживается, если есть маршрутизация в локальные подсети клиентов

keepalive 10 120 - макрокоманда "пинговать" противоположную сторону туннеля с указанным периодом 10 сек, при отсутствии встречных пингов в течение 120 сек считать туннель упавшим и запускать пересоединение

comp-lzo - сжатие трафика
persist-key - поддерживать ключ
persist-tun - поддерживать туннель

status /etc/openvpn/openvpn-status.log - писать статус и состояние в файл
log /etc/openvpn/openvpn.log - вести лог сервера в файл
verb 5 - глубина каментов в логах
mute 20 - писать в лог каждые 20 сек


Как я уже говорил выше, создаем ключи и сертификаты для шифрования и авторизации.
Соответствующие скрипты для этого находятся в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0

Создаем CA (авторитетный сертификат):

$cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
$. ./vars
$./clean-all
$./build-ca

Теперь создадим сертификат и приватный ключ для сервера: 

$./build-key-server mmarket


Примечание: mmarket - имя ключа для сервера (можно использовать любое)

Создаем ключ для клиента (если клиентов несколько, процедуру придётся повторить):

$./build-key client1

Примечание: для каждого клиента должно быть указано своё уникальное имя (в данном случае client1).

Примечание: если новый клиент создаётся спустя некоторое время, процедура будет выглядеть следующим образом:

$cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
$source ./vars
$./build-key client2

Генерируем параметры Диффи-Хеллмана:

$./build-dh

Помещаем следующие файлы в директорию /etc/openvpn/cert:
ca.crt
mmarket.crt
dh1024.pem
mmarket.key




Теперь переходим к конфигам клиента...
Схема построения похожа на конфиг сервера


Рисуем конфиг клиента:

sudo mcedit /etc/openvpn/client.conf

и внего пишим следующее:


client
dev tun
proto udp
remote            1.2.3.4          1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca                   /etc/openvpn/cert/ca.crt
cert                 /etc/openvpn/cert/client1.crt
key                  /etc/openvpn/cert/client1.key
comp-lzo

log                  /etc/openvpn/log/openvpn.log
verb 5
mute 20

Разберем конфиг подробнее:


client - явное указание, что это клиент
dev tun - работаем через L3-туннель
proto udp - протокол udp


remote  1.2.3.4 1194 --- 1.2.3.4 - внешний ip сервера, порт 1194

resolv-retry infinite - пытаться бесконечно определить адрес сервера (при
указании его по имени), чтобы "обойти" проблему с завершением попытки установления соединения при отказе DNS или сбое внешних соединений

nobind - указание использовать динамический порт на клиенте, актуально только для udp, т.к. для tcp на клиенте всегда используется динамический порт

persist-key - поддерживать ключ
persist-tun - поддерживать туннель

ca /etc/openvpn/cert/ca.crt - сертификат СА (скопировать с сервера)

cert /etc/openvpn/cert/client1.crt - сертификат клиента
key /etc/openvpn/cert/client1.key - ключ клиента


comp-lzo - разрешить сжатие

log /etc/openvpn/openvpn.log - писать лог в файл
verb 5 - глубина каментов в логах
mute 20 - писать в лог каждые 20 сек


Чтобы отозвать неиспользуемые сертификаты, необходимо выполнить:


$cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
$source ./vars
$./revoke-full client1

Установка расписания выполнения команд в Ubuntu

Часто необходимо, чтобы команды или какие-либо скрипты выполнялись согласно установленному расписанию, или однократно. Для этого мне удобно пользовать Cron демона.

Редактируем расписание циклических задач демона Cron:

$sudo mcedit /etc/crontab


SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


# m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#


Кроме параметров SHELL и PATH также могут использоваться MAILTO - задает имя пользователя, которому будет отправлен отчет о выполнении.

В списке задач crontab содержаться расписания выполнения команд (как самих команд, так и скриптов, которые расположены в указанных каталогах). Файл содержит предустановленные настройки для выполнения команд ежечасно, ежедневно, еженедельно, ежемесячно.

Например, скрипты, которые помещены в каталог /etc/cron.daily, будут выполняются каждый день в 6 часов 25 минут (или в то время, которое укажете вы в этом файле).

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Аналогично для других каталогов /etc/cron.hourly, /etc/cron.weekly, /etc/cron.monthly. Скрипты из соответствующих папок будут отрабатывать в установленное время.

Если нужно сделать, чтобы скрипт запускался ежедневно в установленное время, создаем в каталоге /etc/cron.daily файл, например, update_av следующего содержания:

#! /bin/bash
<сама комманда для выполнения>


Теперь делаем этот файл исполняемым:

$sudo chmod +x update_av

Усе. Должно работать.


Можно также прописывать сами команды для выполнения прямо в /etc/crontab в следующем формате:

мин(0-59) часы(0-23) день(1-31) месяц(1-12) день(0-6, 0-Вс) имя_пользователя команда

Но можно и редактить сразу пользовательский кронтаб так:

$crontab -e

Расписание для крона в этом случае отличается лишь тем, что для пользовательского кронтаба нет необходимости указывать имя пользователя (команды будут выполняться от текущего пользователя).

мин(0-59) часы(0-23) день(1-31) месяц(1-12) день(0-6, 0-Вс) команда


суббота, 10 июля 2010 г.

Сделать файл ReadOnly даже для root`a


Установка атрибута i ("недосягаемый") предотвращает любые изменения (случайные и не только), т.е. ReadOnly.

Установленные командой chattr атрибуты невозможно увидеть с помощью команды ls. Для этого следует применять команду lsattr.

Установить атрибут "недосягаемый":
#chattr +i </путь_к_файлу/имя_файла>


Снять атрибут "недосягаемый":
#chattr +i </путь_к_файлу/имя_файла>


Действие атрибутов команды chattr перекрывает полномочия пользователя, направленные на модификацию или удаление файлов. Это свойство часто используют в качестве дополнительной меры по усилению безопасности системы. 

пятница, 9 июля 2010 г.

Локальный репозиторий Ubuntu

Локальный репозиторий - создание полной или частичной копии официального репозитория archive.ubuntu.com
Для чего это нужно? Часто, при достаточно большом количестве рабочих мест, ввиду "узкости" интернет-канала или отсутствии такового вовсе, возникает необходимость уменьшить нагрузку на этот самыq интернет-канал или просто установить какую-либо программу не используя интернет...

Ипристуми-с:

1. Для создания среза репозитория будем пользовать: debmirror. Она есть репозиториях, потому:

$sudo apt-get install debmirror

2. Создаем каталог, в которой будет храниться срез репозитория.

$mkdir Sources

3. Рисуем скрипт среза репозитория.

$cd Sources
$touch archive.ubuntu.com.sh

В него пишем такое:

#!/bin/bash -x
/usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
--root=ubuntu --method=ftp --progress \
--dist=karmic,karmic-security,karmic-updates,karmic-backports \
--ignore-release-gpg --section=main,restricted,multiverse,universe \
--arch=i386 /полный/путь/к/локальному/репозиторию/

в данном случае: /home/alah/Sources/ru.archive.ubuntu.com/

Cохраняем. Незабываем сделать файл исполнительным ($chmod +x archive.ubuntu.com.sh).

-- Разберем скрипт. Будет выкачан репозиторий для Ubuntu 9.10 (karmic koala).
Для других версий необходимо поправить скрипт:
- изменить значения параметра --dist на необходимый дистр.
- изменить значения параметра --arch, это архитектура тазика.
i386 для архитектуры x86, amd64 - для 64-битных AMD или Intel.


4. Собсна все! Запускаем скрипт:

$./archive.ubuntu.com.sh


Репозиторий занимает около 20-30 Гиг. Скрипт в любой момент можно прервать через Ctrl+C. При следующем запуске скрипта, он продолжит скачивание недокачанных пакетов + таким образом можно и нужно обновлять локальный репозиторий.


5. После того как скрипт отработает и сформирует локальный репозиторий. Его можно будет использовать, добавив deb строку в source.list:

deb file:////home/alah/Sources/ru.archive.ubuntu.com/ karmic main restricted multiverse universe