RSS

Архив рубрики: Linux

Ура! Первый выпуск облачного хранилища Nextcloud, форка ownCloud


Спустя две недели с момента создания форка проекта ownCloud, представлен выпуск облачной платформы Nextcloud 9, позволяющей на своих серверных системах развернуть полноценное облачное хранилище с поддержкой синхронизации и обмена данными. Выпуск Nextcloud 9 можно рассматривать как расширенный вариант платформы ownCloud 9, который может быть использовать в качестве прозрачной замены ownCloud. Исходные тексты Nextcloud, как и ownCloud, распространяются под лицензией AGPL.

Наиболее заметным отличием Nextcloud от ownCloud является намерение предоставить в едином открытом продукте всех расширенных возможностей, ранее поставляемых только в коммерческой версии ownCloud. Пока не все возможности перенесены, но в Nextcloud 9 уже доступен модуль для ведения логов активности в системе, позволяющий отслеживать такие операции как предоставление совместного доступа, обновления файлов и подключения пользователей к системе. На основании сохраняемых логов администраторы имеют возможность построения детальных отчётов и проведения аудита деятельности пользователей в системе.

Специфичным для Nextcloud 9 новшеством является новый режим загрузки в режиме только записи, предназначенный для организации загрузки файлов анонимными пользователями, которые не имеют доступа к просмотру уже загруженных файлов. Владелец директории, в которой включён режим анонимной загрузки, получает информацию о новых файлах через специальные уведомления.

В Nextcloud 9 также проведена работа по усилению безопасности кодовой базы, защиты от некоторых потенциальных атак и повышения надёжности обновления. Выпущено собственное клиентское приложение для платформы Android (приложение для iOS на стадии разработки).

Из планов на будущее упоминается реализация поддержки открытой коммуникационной платформы Spreed.ME, позволяющей проводить видеоконференции и текстовые чаты с использованием технологии WebRTC. Кроме того, планируется усилить интеграцию с популярными реализациями календарей-планировщиков и адресных книг. Из возможностей коммерческой версии ownCloud, которые планируется открыть в будущих выпусках Nextcloud, можно выделить систему SSO-аутентификации (технология единого входа), межсетевой экран для расширенного управления доступом к файлам, модули интеграции с SharePoint и сетевыми дисками Windows, драйвер для СУБД Oracle, средства автоматического назначения тегов и средства для работы с хранилищами Amazon S3 и Ceph.

 

Метки: ,

Настройка почтового сервера: Postfix+Dovecot+MySQL+SASL в Debian 7 Wheezy


Наверное каждый когда то задумывался о своем почтовом сервере. Если есть возможность то почему бы его не реализовать. Поднимать будем почтовый сервер в связке Postfix+Dovecot+MySQL+SASL.
Стоит упомянуть почему выбрана данная связка. Postfix более безопасен и работает более шустрее по сравнению с тем же SendMail. Dovecot выбран ибо у него дыр поменьше по сравнению с Cyrus IMAP, с ним меньше проблем при обслуживании, дает меньшую нагрузку на сервер, лучше реализован Greylisting для антиспама. Выбрано хранение данных в БД MySQL — ибо это очень удобно и просто обслуживать. SASL — куда в наше время без безопасности.

Начнем как обычно с обновления репозитория:
# aptitude update

Установим необходимые пакеты:
для MySQL:
# aptitude install mysql-client mysql-server

для Postfix:
# aptitude install postfix postfix-mysql postfix-doc

во время установки пакета Postfix будет выведено диалоговое окно выбора конфигурации, где необходимо выбрать пункт «Без настройки»:
Диалоговое окно выбора конфигурации

Диалоговое окно выбора конфигурации

для Dovecot ставим пакеты:
# aptitude install dovecot-common dovecot-imapd

для SASL:
# aptitude install libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin

и напоследок поставим:
# aptitude install libpam-mysql openssl telnet bsd-mailx

Стоит сразу упомянуть важный нюанс. В Debian 7 используется уже Dovecot v2.1.7, поэтому если есть конфиг более ранней версии — то его необходимо будет изменять, так как на новой версии он однозначно не заведется.
Для автоматического конвертирования конфига из ранней версии в позднюю есть утилита doveconf.
Используют ее следующим образом:
# doveconf -n -c /etc/dovecot/dovecot.conf > /etc/dovecot/dovecot-2.conf

После выполнения конвертирования стоит внимательно посмотреть что выплюнет консоль, ибо в ней 99% будет выведена информация для решения проблемы и помощи в поднятии до рабочего состояния нового конфига.

Также стоит упомянуть что в Dovecote2 изменилась настройка файлов конфигурации. Для облегчения настройки(мало вериться ^_^) файл конфигурации был разбит на отдельные файлы(не так как раньше все в одном файле), хотя возможность использовать все настройки прописывая в одном файле сохранилась.

Запасаемся кофе, сигаретами (кому что…) и приступаем…

Настройка MySQL.
Для начала необходимо создать БД для для почтового сервера Postfix, для этого подключаемся к MySQL:
# mysql -u root -p

вводим пароль(он при вводе не отображается) и в случае удачного входа увидим что то наподобие:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 498
Server version: 5.5.33-0+wheezy1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

Теперь можно создать БД:
CREATE DATABASE mail;

на что нам должно в консоли отрапортовать что то наподобие такого:
Query OK, 1 row affected (0.00 sec)

далее выбираем нашу базу с которой будем работать:
USE mail;

Для дальнейшей настройки необходимо придумать логин и пароль который будет использоваться в почте для настройки файлов конфигурации(соответственно mail_admin и mail_admin_password необходимо изменить на свое).
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO ‘mail_admin’@’localhost’ IDENTIFIED BY ‘mail_admin_password’;
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO ‘mail_admin’@’localhost.localdomain’ IDENTIFIED BY ‘mail_admin_password’;
FLUSH PRIVILEGES;

Теперь необходимо создать таблицы в нашей БД.
Таблица для хранения виртуальных доменов(в ней будет храниться информация о всех доменах которые будут обслуживаться):
CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY(domain));

Таблица в которой будет храниться информация о пересылке писем между почтовыми ящиками(другими словами перенаправление писем с одного почтового ящика на другой):
CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY(source));

Таблица для хранения почтовых аккаунтов:
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY(email));

На этом работа пока с MySQL закончена.

Для проверки, что MySQL связана с localhost необходимо выполнить:
# cat /etc/mysql/my.cnf |grep bind

на что мы должны получить:
bind-address = 127.0.0.1

если адрес отличается — это необходимо учесть при настройке конфигов в дальнейшем.

Далее необходимо настроить работу Postfix с MySQL, тобиш дать ему понять откуда черпать данные.
Создадим отдельно каталог mysqlconf в /etc/postfix/ для хранения наших будущих файлов конфигурации:
# mkdir /etc/postfix/mysqlconf

Далее создаем файлы конфигурации с указанным содержимым.
Файл конфигурации для виртуальных доменов /etc/postfix/mysqlconf/virtual_domains.cf:
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain = ‘%s’
hosts = 127.0.0.1

Файл конфигурации для перенаправления почты с почтовых ящиков /etc/postfix/mysqlconf/virtual_forwardings.cf:
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE source = ‘%s’
hosts = 127.0.0.1

Файл конфигурации для почтовых аккаунтов /etc/postfix/mysqlconf/virtual_mailboxes.cf:
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT CONCAT( SUBSTRING_INDEX(email, ‘@’, -1), ‘/’ , SUBSTRING_INDEX(email, ‘@’, 1), ‘/’ ) FROM users WHERE email = ‘%s’
hosts = 127.0.0.1

Файл конфигурации для отображения почты /etc/postfix/mysqlconf/virtual_email2email.cf:
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email = ‘%s’
hosts = 127.0.0.1

Установим права и владельца для созданных файлов:
# chmod o= /etc/postfix/mysqlconf/virtual_*.cf
# chgrp postfix /etc/postfix/mysqlconf/virtual_*.cf

Добавим группу с пользователем для хранения/передачи почты:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Настройка Postfix.
Скопируем файл конфигурации:
# cp /usr/lib/postfix/main.cf /etc/postfix/main.cf

и приступаем к его наполнению:
# Хост
myhostname = xelfaer.ru
#myorigin = /etc/mailname
mydestination = localhost. localhost.localdomain
#relayhost =
mynetworks = 127.0.0.0/8
# Размерь почтового ящика (0 — неограничено)
mailbox_size_limit = 0
#recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
# Текст приветственного баннера, который отображается после кода состояния 220 в SMTP
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA’s job.
append_dot_mydomain = no

readme_directory = no

# TLS конфигурация
smtpd_use_tls = yes
smtpd_tls_cert_file=/etc/postfix/certificate/smtpd.pem
smtpd_tls_key_file=/etc/postfix/certificate/smtpd.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes

# MySQL конфигурация
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysqlconf/virtual_forwardings.cf, mysql:/etc/postfix/mysqlconf/virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysqlconf/virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysqlconf/virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

# SASL конфигурация
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes

# Настройка ограничений SMTPD
smtpd_delay_reject = yes

smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
permit

smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
permit

smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
permit_sasl_authenticated,
permit

smtpd_recipient_restrictions =
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unlisted_recipient,
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_sender_domain,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client dnsbl-1.uceprotect.net,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client ix.dnsbl.manitu.net,
reject_rbl_client bl.spamcop.net,
reject_rbl_client access.redhawk.org,
reject_rbl_client bl.deadbeef.com,
reject_rbl_client dnsbl.cyberlogic.net,
reject_rbl_client dul.ru,
reject_rbl_client korea.services.net,
reject_unknown_client_hostname,
reject_unauth_pipelining,
reject_unauth_destination,
permit

smtpd_data_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_pipelining,
permit

smtpd_end_of_data_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_multi_recipient_bounce,
permit

#
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
virtual_transport = dovecot

# Алиасы
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

Далее приступаем к генерированию SSL сертификатов для Postfix:
# openssl req -new -outform PEM -out smtpd.pem -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

вводим запрашиваемые данные и у нас появятся 2 файла.

Установим права доступа для созданного файла ключа:
# chmod o= /etc/postfix/certificate/smtpd.key

Настраиваем совместную работу Saslauthd c MySQL для Postfix.
Создадим каталог для Saslauthd:
# mkdir -p /var/spool/postfix/var/run/saslauthd

Создадим резервную копию файла конфигурации:
# cp -a /etc/default/saslauthd /etc/default/saslauthd.backup

и можно приступить к редактированию конфига, который приводим к такому виду:
START=yes
DESC=»SASL Authentication Daemon»
NAME=»saslauthd»
MECHANISMS=»pam»
MECH_OPTIONS=»»
THREADS=5
OPTIONS=»-c -m /var/spool/postfix/var/run/saslauthd -r»

Далее создадим файл для smtp:
# touch /etc/pam.d/smtp

и внесем следующее содержимое:
auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

где необходимо заменить вместо mail_admin и mail_admin_password свои значения использовавшиеся выше.

Создаем файл конфигурации smtpd.conf:
# touch /etc/postfix/sasl/smtpd.conf

и вносим содержимое:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: mail_admin_password
sql_database: mail
sql_select: SELECT password FROM users WHERE email = ‘%u’

где также необходимо заменить вместо mail_admin и mail_admin_password свои значения использовавшиеся выше.

Теперь необходимо установить права на созданные файлы:
# chmod o= /etc/pam.d/smtp
# chmod o= /etc/postfix/sasl/smtpd.conf

и добавить пользователя postfix в группу sasl:
# adduser postfix sasl

Теперь необходимо перезапустить сервисы postfix и saslauthd:
# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart

Ошибок возникнуть после перезапуска сервисов не должно.

Настройка Dovecot.
Создаем резервную копию конфига:
# cp /etc/postfix/master.cf /etc/postfix/master.cf_backup

и начинаем править master.cf добавляя в конце конфига:
dovecot unix — n n — — pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Делаем резервную копию dovecot.conf:
# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf_backup

и заменяем все содержимое файла конфига на ниже приведенный код:
# Dovecote configuration file
protocols = imap
listen = *
shutdown_clients = yes
mail_uid = vmail
mail_gid = vmail
first_valid_uid = 5000
last_valid_uid = 5000

# Log files
log_path = /var/log/dovecot.log
log_timestamp = «%Y-%m-%d %H:%M:%S »

# SSL
ssl_cert = </etc/dovecot/certificate/dovecot.pem
ssl_key = `date +%F`_name_database.sql.bz2

где вместо name_database указываем наше имя БД MySQL.

Для начала необходимо внести домен. Так как домен будет использоваться только одни, вносим соответственно тоже один:
входим в MySQL:
mysql -u root -p

выбираем нашу БД:
USE mail;

вносим наш домен:
INSERT INTO domains (domain) VALUES (‘xelfaer.ru’);

Теперь создадим нашего первого пользователя:
INSERT INTO users (email, password) VALUES (‘test@xelfaer.ru’, ENCRYPT(‘password’));

Теперь необходимо проверить работу отправки сообщения на созданный аккаунт, для этого воспользуемся программой mailx из пакета bsd-mailx:
mailx test@xelfaer.ru

где изменяем аккаунт на свой.
вводим тему сообщения, нажимаем Enter и вводим текст сообщения после чего нажимаем комбинацию Ctrl+D. Поле «СС» оставляем пустым.
Теперь смотрим файл логов на предмет ошибок и прочего:
Jan 19 01:29:21 user postfix/pickup[7933]: 444AF3F130: uid=1000 from=
Jan 19 01:29:21 user postfix/cleanup[7944]: 444AF3F130: message-id=<20140118232921.444AF3F130@xelfaer.ru>
Jan 19 01:29:21 user postfix/qmgr[7113]: 444AF3F130: from=, size=292, nrcpt=1 (queue active)
an 19 01:29:21 user postfix/pipe[7949]: 444AF3F130: to=, relay=dovecot, delay=0.32, delays=0.12/0.01/0/0.19, dsn=2.0.0, status=sent (delivered via dovecot service)
Jan 19 01:29:21 user postfix/qmgr[7113]: 444AF3F130: removed

заодно смотрим файл логов Dovecot в /home/vmail/dovecot-deliver.log:
2014-01-19 01:29:21 lda(test@xelfaer.ru): Info: msgid=<20140118232921.444AF3F130@xelfaer.ru>: saved mail to INBOX

Ошибок нет. Письмо тестовое успешно отправлено и доставлено.

Настройка переадресации почты.
Для переадресации почты мы изначально создавали конфиг virtual_forwardings.cf с таблицей в MySQL, теперь только осталось заполнить БД данными для требуемых пользователей.

Настроим переадресацию почты с пользователя root на нашего созданного пользователя test@xelfaer.ru(не забываем менять данные на свои):
mysql -u root -p
USE mail;
INSERT INTO forwardings (source, destination) VALUES (‘root@xelfaer.ru’, ‘test@xelfaer.ru’);
quit

Теперь можно протестировать перенаправление почты с одного пользователя на другого.
На этом настройка MTA закончена. Можно прикрутить SpamAssassin, ClamAV, Roundcube но это уже дело вкуса и по надобности.

© 2014 — 2015, XELFAER. Все права защищены. Использование материалов блога разрешается только при указании активной ссылки на статью.

http://blog.xelfaer.ru/?p=492

 

Метки: , , ,

systemd — троян для *nix like systems от корпоративных барыг из RedHat для мирового Open Source сообщества


Немного красивых картинок для вашего внимания:






На этих красочных картинках часть дискуссии в сети «Интернет», которая велась и ведётся по поводу троянского коня, а по-другому это поделие никак назвать нельзя, под названием systemd, продвигаемого разработчиками от корпорации RedHat, который для *nix like systems стал тем же самым, чем является системный процесс svchost.exe для операционных систем корпорации Microsoft под общим названием Windows. Т. е. данное поделие взяло на себя столько не свойственных по соображениям безопасности функций, что стало практически неудаляемым с десктопных и мобильных систем пользователей ввиду того, что при попытке его удаления или попытке замены на безопасную альтернативу сносятся/удаляются практически все компоненты DE окружения пользователя. Из-за этого и другие пакеты из окружения пользователя стали иметь такие сложные зависимости, что стало невозможным их удалить, либо заменить другими аналогами. Т. е. пользователям стали навязываться не только системный пакет systemd, но и программы по-умолчанию, без возможности модификации окружения DE.
И это действо началось не вчера, а планомерно реализовывалось на протяжении последних нескольких лет, в результате чего разработчики от барыжных софтверных корпораций начали захватывать и вытеснять ведущих разработчиков мира Open Source из ключевых свободных проектов. Думаю systemd стал тем показателем, который как нельзя лучше показывает то к чему привела такая «бескорыстная» помощь этих корпоративных барыг в разработке *nix like systems. Предыдущая знаковая точка отсчёта была, на мой взгляд, связана с реализацией uefi на железе, которое выпускается всё теми же барыгами от бизнеса, которые навязали мировому сообществу Open Source этот безальтернативный вариант.
Стоит отметить, что нововведение под названием systemd коснулось даже тех версий дистрибутивов с длительным сроком поддержки, изначальные версии которых поставлялись без данного пакета, но всё изменилось во второй половине 2015 года, последние их обновления уже получили этого троянского коня под названием systemd!!! Подумайте над этим, люди!
А напоследок хочу обратить внимание читателей моего сайта на то, всякая конструктивная критика, содержащая, как правило, нелицеприятные отзывы об этой сомнительной поделке, старательно вымарывается из сети «Интернет» и затролливается настолько, что, порою, трудно читать комментарии этих моральных уродов, издевающихся над профессионалами, которые чистосердечно и бескорыстно пытаются отвечать на все каверзно задаваемые вопросы, и который (троллинг) достиг такого размаха, что не оставляет сомнения в его заказном и проплаченном характере! Т. е. этими особями отрабатывается бабло, которое, как их приучили, не пахнет, ввиду того, что эти люди уже привыкли ходить в респираторах-намордниках, которые помогают им не ощущать своего аромата, который не перешибается даже запахами из городских выгребных ям!

Никитушкин Андрей.

Писано 10 января 2016 года.
16:18

 

Метки: , , , , , , , , , , , ,

Ушел из жизни Ян Мердок, основатель Debian


Компания Docker и сообщество Debian сообщили об уходе из жизни Яна Мердока (Ian Murdock), основателя дистрибутива Debian GNU/Linux, который последнее время работал в компании Docker. Яну было 42 года. В 1993 году, будучи студентом, он основал дистрибутив Debian, один из самых успешных и значительных проектов в истории открытого ПО. Ян сформировал общие принципы и нормы функционирования сообщества Debian, которые затем легли в основу определения Open Source. Позднее, Ян занимался проектом Indiana в компании Sun Microsystens, являлся техническим директором организаций Linux Foundation и Free Standards Group (FSG), занимал пост вице-президента компании ExactTarget.

Причины смерти не сообщаются, но несколько дней назад в твиттере Яна было опубликовано сообщение о намерении лишить себя жизни и несколько довольно сумбурных высказываний о невозможности стерпеть нанесённое полицией оскорбление и потере веры в правосудие. Затем, судя по сообщениям, он передумал и высказал намерение посвятить остаток своей жизни борьбе с полицейской жестокостью. Сегодня учётная запись Яна в твиттере была удалена, но записи остались в архиве.

Дополнение 1: Издание Arstechnica сообщило, что 27 декабря Ян Мердок был арестован департаментом полиции Сан-Франциско и затем выпущен под залог. Подробности о сути предъявленного обвинения не разглашаются.

Дополнение 2: Официально полиция Сан-Франциско пока не прокомментировала событие, но по неофициальным каналам изданию ZDNet удалось выяснить, что в субботу в 23:30 Ян был задержан за попытку вломиться в соседний дом, находясь в алкогольном опьянении, но отделался предупреждениями и был доставлен в больницу для оказания помощи вследствие полученных им ссадин на лбу. Спустя несколько часов, в 2:40 ночи последовал повторный вызов о том, что Ян колотил в дверь соседа (не указано, кто вызвал, и не сообщается тот же это был дом, что и при первом вызове, или нет). После повторного приезда полицейские арестовали Яна и доставили в окружную тюрьму, в которой его продержали до обеда, а затем отпустили под залог в 25 тысяч долларов. Спустя сутки, в понедельник после обеда, были опубликованы странные сообщения в твиттере. Ближе к ночи Яна не стало.
==================================================================================

Продвинутых айтишников, судя по-всему, начинают ликвидировать различными способами (((

 

Метки: , , ,

Команды консоли Linux


Системные команды

man — эта команда выводит справочную информация по нужной вам команде, такую как синтаксис, ключи, описание и т.д. Синоним info.

sudo — переход в режим суперпользователя
(после первой команды sudo необходимо ввести пароль пользователя).

Для запуска в терминале команды с правами администратора просто наберите перед ней sudo. Пример: sudo reboot

reboot — перезагрузка системы

poweroff — выключение компьютера

reset — очищает окно терминала, работает даже если вы потеряли курсор

passwd — позволяет пользователю поменять свой пароль,
а суперпользователю — поменять пароль любого зарегистрированного в

системе пользователя

free — получить информацию об оперативной памяти (всего, занято, свободно, в swap).

Команды для работы с файлами

pwd – показать текущий каталог

cd — переход в заданную папку

ls — показывает список файлов текущей папки, с ключом -l показывает дополнительные сведения о файлах

cp — копирование файлов/папок

mv — перемещение файлов/папок

rm — удаление файлов/папок, с ключем -R удаляет и все вложенные папки

mkdir — создать папку

rmdir — удаление пустой папки

chmod — изменить права доступа к файлу.

Команды для работы с пакетами

Это одна команда (утилита) с разными ключами.

apt-get update — обновление информации о пакетах из репозиториев

apt-get upgrade — обновление всех пакетов

apt-get clean — очищает локальный репозиторий, т.е. удаляет всё, что вы ранее скачивали. Очень полезно иногда прогонять для очистки диска.

apt-get autoremove — удаление ранее скачаных, но более ненужных пакетов

apt-get remove — удаление пакета из системы, с сохранением его конфигурационных файлов

apt-get purge — удаление пакета со всеми зависимостями

apt-get install — установка пакета.

Управление процессами

ps — показывает текущие активные процессы

kill — команда отправляет сигнал прекращения работы тому или иному процессу, используется для прекращения работы зависшего приложения

killall — прекращение работы всех процессов, соответствующих заданным параметрам

top — интерактивный список текущих процессов, отсортированных по % использования центрального процессора.

Сетевые команды

ifconfig — выводит информацию о сетевых интерфейсах (в windows используется ipconfig)

pppoeconf — комманда настройки подключения к интернет

ping host – пропинговать host и вывести результат

whois domain – получить информацию whois для domain

route host — показать путь прохождения пакетов, от вас к host

wget file – скачать file

ssh user@host – подключится к host как user

ufw enable — включить фаервол

ufw disable — выключить фаервол.

Прочее команды терминала

clear — очищает окно терминала

nano  текстовый редактор файлов. есть аналог — gedit

uname -a — выводит информацию об операционной системе

who — показывает, кто сейчас в системе

whoami — показывает под каким именем зарегистрирован текущий пользователь

finger user – показать информацию о user.

Команда Описание
Системная информация
arch отобразить архитектуру компьютера
uname -m
uname -r отобразить используемую версию ядра
dmidecode -q показать аппаратные системные компоненты — (SMBIOS / DMI)
hdparm -i /dev/hda вывести характеристики жесткого диска
hdparm -tT /dev/sda протестировать производительность чтения данных с жесткого диска
cat /proc/cpuinfo отобразить информацию о процессоре
cat /proc/interrupts показать прерывания
cat /proc/meminfo проверить использование памяти
cat /proc/swaps показать файл(ы) подкачки
cat /proc/version вывести версию ядра
cat /proc/net/dev показать сетевые интерфейсы и статистику по ним
cat /proc/mounts отобразить смонтированные файловые системы
lspci -tv показать в виде дерева PCI устройства
lsusb -tv показать в виде дерева USB устройства
date вывести системную дату
cal 2007 вывести таблицу-календарь 2007-го года
date 041217002007.00 установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w сохранить системное время в BIOS
Остановка системы
shutdown -h now Остановить систему
init 0
telinit 0
shutdown -h hours:minutes & запланировать остановку системы на указанное время
shutdown -c отменить запланированную по расписанию остановку системы
shutdown -r now перегрузить систему
reboot
logout выйти из системы
Файлы и директории
cd /home перейти в директорию ‘/home’
cd .. перейти в директорию уровнем выше
cd ../.. перейти в директорию двумя уровнями выше
cd перейти в домашнюю директорию
cd ~user перейти в домашнюю директорию пользователя user
cd — перейти в директорию, в которой находились до перехода в текущую директорию
pwd показать текущюю директорию
ls отобразить содержимое текущей директории
ls -F отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l показать детализированое представление файлов и директорий в текущей директории
ls -a показать скрытые файлы и директории в текущей директории
ls *[0-9]* показать файлы и директории содержащие в имени цифры
tree показать дерево файлов и директорий, начиная от корня (/)
lstree
mkdir dir1 создать директорию с именем ‘dir1’
mkdir dir1 dir2 создать две директории одновременно
mkdir -p /tmp/dir1/dir2 создать дерево директорий
rm -f file1 удалить файл с именем ‘file1’
rmdir dir1 удалить директорию с именем ‘dir1’
rm -rf dir1 удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое
rm -rf dir1 dir2 удалить две директории и рекурсивно их содержимое
mv dir1 new_dir переименовать или переместить файл или директорию
cp file1 file2 сопировать файл file1 в файл file2
cp dir/* . копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 копировать директорию dir1 в директорию dir2
ln -s file1 lnk1 создать символическую ссылку на файл или директорию
ln file1 lnk1 создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
Поиск файлов
find / -name file1 найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name «*.bin» Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’
find /usr/bin -type f -atime +100 найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 ‘{}’ ; найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name «*.rpm» найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate «*.ps» найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt отображает полный путь к файлу ‘halt’
Монтирование файловых систем
mount /dev/hda2 /mnt/hda2 монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’
umount /dev/hda2 размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’
fuser -km /mnt/hda2 принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
mount -o loop file.iso /mnt/cdrom смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно.
Дисковое пространство
df -h отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |more выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a --qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)
Пользователи и группы
groupadd group_name создать новую группу с именем group_name
groupdel group_name удалить группу group_name
groupmod -n new_group_name old_group_name переименовать группу old_group_name в new_group_name
useradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1 создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
useradd user1 создать пользователя user1
userdel -r user1 удалить пользователя user1 и его домашний каталог
usermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1 изменить атрибуты пользователя
passwd сменить пароль
passwd user1 сменить пароль пользователя user1 (только root)
chage -E 2005-12-31 user1 установить дату окончания действия учётной записи пользователя user1
pwck проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
Выставление/изменение полномочий на файлы
ls -lh просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo+rwx directory1 добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом «chmod 777 directory1»
chmod go-rwx directory1 отобрать у группы и всех остальных все полномочия на директорию directory1.
chown user1 file1 назначить владельцем файла file1 пользователя user1
chown -R user1 directory1 назначить рекурсивно владельцем директории directory1 пользователя user1
chgrp group1 file1 сменить группу-владельца файла file1 на group1
chown user1:group1 file1 сменить владельца и группу владельца файла file1
find / -perm -u+s найти, начиная от корня, все файлы с выставленным SUID
chmod u+s /bin/binary_file назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
chmod u-s /bin/binary_file снять SUID-бит с файла /bin/binary_file.
chmod g+s /home/public назначить SGID-бит директории /home/public.
chmod g-s /home/public снять SGID-бит с директории /home/public.
chmod o+t /home/public назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
chmod o-t /home/public снять STIKY-бит с директории /home/public
Специальные атрибуты файлов
chattr +a file1 позволить открывать файл на запись только в режиме добавления
chattr +c file1 позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr +d file1 указавет утилите dump игнорировать данный файл во время выполнения backup’а
chattr +i file1 делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr +s file1 позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.
chattr +S file1 указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr +u file1 данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr показать атрибуты файлов
Архивирование и сжатие файлов
bunzip2 file1.bz2 разжимает файл ‘file1.gz’
gunzip file1.gz
gzip file1 сжимает файл ‘file1’
bzip2 file1
gzip -9 file1 сжать файл file1 с максимальным сжатием
rar a file1.rar test_file создать rar-архив ‘file1.rar’ и включить в него файл test_file
rar a file1.rar file1 file2 dir1 создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1
unrar x file1.rar распаковать rar-архив
tar -cvf archive.tar file1 создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1 создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar показать содержимое архива
tar -xvf archive.tar распаковать архив
tar -xvf archive.tar -C /tmp распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1 создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1 создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz разжать архив и распаковать его
zip file1.zip file1 создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1 создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip разжать и распаковать zip-архив
RPM пакеты (Fedora, Red Hat и тому подобное)
rpm -ivh package.rpm установить пакет с выводом сообщений и прогресс-бара
rpm -ivh --nodeps package.rpm установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей
rpm -U package.rpm обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен
rpm -F package.rpm обновить пакет только если он установлен
rpm -e package_name.rpm удалить пакет
rpm -qa отобразить список всех пакетов, установленных в системе
rpm -qa | grep httpd среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
rpm -qi package_name вывести информацию о конкрентном пакете
rpm -qg «System Environment/Daemons» отобразить пакеты входящие в группу пакетов
rpm -ql package_name вывести список файлов, входящих в пакет
rpm -qc package_name вывести список конфигурационных файлов, входящих в пакет
rpm -q package_name --whatrequires вывести список пакетов, необходимых для установки конкретного пакета по зависимостям
rpm -q package_name --whatprovides show capability provided by a rpm package
rpm -q package_name --scripts отобразит скрипты, запускаемые при установке/удалении пакета
rpm -q package_name --changelog вывести историю ревизий пакета
rpm -qf /etc/httpd/conf/httpd.conf проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла.
rpm -qp package.rpm -l отображает список файлов, входящих в пакет, но ещё не установленных в систему
rpm --import /media/cdrom/RPM-GPG-KEY ипортировать публичный ключ цифровой подписи
rpm --checksig package.rpm проверит подпись пакета
rpm -qa gpg-pubkey проверить целостность установленного содержимого пакета
rpm -V package_name проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета
rpm -Va проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!
rpm -Vp package.rpm проверить пакет, который ещё не установлен в систему
rpm2cpio package.rpm | cpio --extract --make-directories *bin* извлечь из пакета файлы содержащие в своём имени bin
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm установить пакет, собранный из исходных кодов
rpmbuild --rebuild package_name.src.rpm собрать пакет из исходных кодов
YUM — средство обновления пакетов(Fedora, RedHat и тому подобное)
yum install package_name закачать и установать пакет
yum update обновить все пакеты, установленные в систему
yum update package_name обновить пакет
yum remove package_name удалить пакет
yum list вывести список всех пакетов, установленных в систему
yum search package_name найти пакет в репозитории
yum clean packages очисть rpm-кэш, удалив закачанные пакеты
yum clean headers удалить все заголовки файлов, которые система использует для разрешения зависимостей
yum clean all очисть rpm-кэш, удалив закачанные пакеты и заголовки
DEB пакеты (Debian, Ubuntu и тому подобное)
dpkg -i package.deb установить / обновить пакет
dpkg -r package_name удалить пакет из системы
dpkg -l показать все пакеты, установленные в систему
dpkg -l | grep httpd среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
dpkg -s package_name отобразить инфрмацию о конкретном пакете
dpkg -L package_name вывести список файлов, входящих в пакет, установленный в систему
dpkg --contents package.deb отобразить список файлов, входящих в пакет, который ешё не установлен в систему
dpkg -S /bin/ping найти пакет, в который входит указанный файл.
APT — средство управление пакетами (Debian, Ubuntu и тому подобное)
apt-get install package_name установить / обновить пакет
apt-cdrom install package_name установить / обновить пакет с cdrom’а
apt-get update получить обновлённые списки пакетов
apt-get upgrade обновить пакеты, установленные в систему
apt-get remove package_name удалить пакет, установленный в систему с сохранением файлов конфигурации
apt-get purge package_name удалить пакет, установленный в систему с удалением файлов конфигурации
apt-get check проверить целостность зависимостей
apt-get clean удалить загруженные архивные файлы пакетов
apt-get autoclean удалить старые загруженные архивные файлы пакетов
Просмотр содержимого файлов
cat file1 вывести содержимое файла file1 на стандартное устройсво вывода
tac file1 вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1 вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -2 file1 вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -f /var/log/messages выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.
Манипуляции с текстом
cat file | grep -i «Criteria» > result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file | grep -i «Criteria» » result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»
grep ^Aug /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»
grep [0-9] /var/log/messages из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/* отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже
sed ‘s/stringa1/stringa2/g’ example.txt в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода.
sed '/^$/d’ example.txt удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d’ example.txt удалить пустые строки и комментарии из файла example.txt
echo ‘test’ | tr ‘[:lower:]’ ‘[:upper:]’ преобразовать символы из нижнего регистра в верхний
sed -e ‘1d’ result.txt удалить первую строку из файла example.txt
sed -n ‘/string1/p’ отобразить только строки содержашие «string1»
sed -e ‘s/ *$//‘ example.txt удалить пустые символы в в конце каждой строки
sed -e ‘s/string1//g’ example.txt удалить строку «string1» из текста не изменяя всего остального
sed -n ‘1,8p;5q’ example.txt взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n ‘5p;5q’ example.txt вывести пятую строку
sed -e ‘s/0*/0/g’ example.txt заменить последовательность из любого количества нулей одним нулём
cat -n file1 пронумеровать строки при выводе содержимого файла
cat example.txt | awk ‘NR%2==1’ при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk ‘{print $1}’ вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk ‘{print $1,$3}’ вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2 объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d ‘+’ file1 file2 объединить содержимое file1 и file2 в виде таблицы с разделителем «+»
sort file1 file2 отсортировать содержимое двух файлов
sort file1 file2 | uniq отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’
comm -2 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’
comm -3 file1 file2 сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)
unix2dos fileunix.txt filedos.txt конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more вывести список доступных форматов
Анализ файловых систем
badblocks -v /dev/hda1 проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1 проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1 проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck /dev/hda1
e2fsck -j /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1 проверить/восстановить целостность файловой системы fat раздела hda1
fsck.msdos /dev/hda1
dosfsck /dev/hda1
Форматирование файловых систем
mkfs /dev/hda1 создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1 создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1 создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1 создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0 форматирование флоппи-диска без проверки
mkswap /dev/hda3 создание swap-пространства на разделе hda3
swap-пространство
mkswap /dev/hda3 создание swap-пространства на разделе hda3
swapon /dev/hda3 активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3 активировать swap-пространства, расположенные на разделах hda2 и hdb3
Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak восстановить из резервной копии /tmp/home0.bak
rsync -rogpav --delete /home /tmp синхронизировать /tmp с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_addr:/home/public /home/local синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_addr:/home/public синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf — . | (cd /tmp/backup ; tar xf — ) копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name ‘*.txt’ |xargs cp -av --target-directory=/home/backup/ --parents поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию
find /var/log -name ‘*.log’ | tar cv --files-from=- | bzip2 > log.tar.bz2 поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 восстановить MBR с флоппи-диска на /dev/hda
CDROM
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force clean a rewritable cdrom
mkisofs /dev/cdrom > cd.iso create an iso image of cdrom on disk
mkisofs /dev/cdrom | gzip > cd_iso.gz create a compressed iso image of cdrom on disk
mkisofs -J -allow-leading-dots -R -V «Label CD» -iso-level 4 -o ./cd.iso data_cd create an iso image of a directory
cdrecord -v dev=/dev/cdrom cd.iso burn an ISO image
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom — burn a compressed ISO image
mount -o loop cd.iso /mnt/iso mount an ISO image
cd-paranoia -B rip audio tracks from a CD to wav files
cd-paranoia -- «-3» rip first three audio tracks from a CD to wav files
cdrecord --scanbus scan bus to identify the channel scsi
Сеть (LAN и WiFi)
ifconfig eth0 показать конфигурацию сетевого интерфейса eth0
ifup eth0 активировать (поднять) интерфейс eth0
ifdown eth0 деактивировать (опустить) интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 выставить интерфейсу eth0 ip-адрес и маску подсети
ifconfig eth0 promisc перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)
ifconfig eth0 -promisc отключить promiscuous-режим на интерфейсе eth0
dhclient eth0 активировать интерфейс eth0 в dhcp-режиме.
route -n вывести локальную таблицу маршрутизации
netstat -rn
route add -net 0/0 gw IP_Gateway задать ip-адрес шлюза по умолчанию (default gateway)
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
route del 0/0 gw IP_gateway удалить ip-адрес шлюза по умолчанию (default gateway)
echo «1» > /proc/sys/net/ipv4/ip_forward разрешить пересылку пакетов (forwarding)
hostname отобразить имя компьютера
host www.yandex.ru разрешить имя www.yandex.ru хоста в ip-адрес и наоборот
host 93.158.134.3
ip link show отобразить состояние всех интерфейсов
mii-tool eth0 отобразить статус и тип соединения для интерфейса eth0
ethtool eth0 отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения
netstat -tupln отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты
tcpdump tcp port 80 отобразить весь трафик на TCP-порт 80 (обычно — HTTP)
iwlist scan просканировать эфир на предмет, доступности беспроводных точек доступа
iwconfig eth1 показать конфигурацию беспроводного сетевого интерфейса eth1
Microsoft Windows networks(SAMBA)
nbtscan ip_addr разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
nmblookup -A ip_addr
smbclient -L ip_addr/hostname отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://ip_addr/share подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему
IPTABLES (firewall)
iptables -t filter -nL отобразить все цепочки правил
iptables -nL
iptables -t nat -L отобразить все цепочки правил в NAT-таблице
iptables -t filter -F очистить все цепочки правил в filter-таблице
iptables -F
iptables -t nat -F очистить все цепочки правил в NAT-таблице
iptables -t filter -X удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT позволить входящее подключение telnet’ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT позволить «прокидывать» (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG --log-prefix «DROP INPUT» включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22-j DNAT --to-destination 10.0.0.2:22 перенаправление пакетов, адресованных одному хосту, на другой хост
Мониторинг и отладка
top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
ps -e -o pid,args --forest вывести PID’ы и процессы в виде дерева
pstree отобразить дерево процессов
kill -9 98989 «убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)
kill -KILL 98989
kill -TERM 98989 Корректно завершить процесс с PID 98989
kill -1 98989 заставить процесс с PID 98989 перепрочитать файл конфигурации
kill -HUP 98989
lsof -p 98989 отобразить список файлов, открытых процессом с PID 98989
lsof /home/user1 отобразить список открытых файлов из директории /home/user1
strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls > /dev/null вывести вызовы бибилотек
watch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времени
last reboot отобразить историю перезагрузок системы
last user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
lsmod вывести загруженные модули ядра
free -m показать состояние оперативной памяти в мегабайтах
smartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMART
smartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hda
tail /var/log/dmesg вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages вывести десять последних записей из системного журнала
Другие полезные команды
apropos …keyword выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
man ping вызов руководства по работе с программой, в данном случае, — ping
whatis …keyword отображает описание действий указанной программы
mkbootdisk --device /dev/fd0 `uname -r` создаёт загрузочный флоппи-диск
gpg -c file1 шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpg дешифрует файл file1 с помощью GNU Privacy Guard
wget -r www.example.com загружает рекурсивно содержимое сайта www.example.com
wget -c www.example.com/file.iso загрузить файл www.example.com/file.iso с возможностью останова и продолжения в последствии
echo ‘wget -c www.example.com/files.iso’ | at 09:00 начать закачку в указанное время
ldd /usr/bin/ssh вывести список библиотек, необходимых для работы ssh
alias hh=’history’ назначить алиас hh команде history
 
2 комментария

Опубликовал на 2015/10/14 в Linux

 

Метки: , ,

Компания Microsoft продемонстрировала собственный Linux-дистрибутив для коммутаторов


Компания Microsoft разработала собственный дистрибутив Linux — Azure Cloud Switch (ACS), позиционируемый как кросс-платформенная модульная операционная система для развёртывания программно-конфигурируемых сетей (SDN, Software-Defined Networking), в которых управление сетью отделено от уровня передачи данных и конфигурируется программно.

Azure Cloud Switch предназначен для установки на сетевые устройства, такие как коммутаторы, которые планируется использовать вместо традиционных аппаратных коммутаторов. Коммутаторы на базе Azure Cloud Switch ориентированы на использование в сетях облачных систем и сетях предприятий, позволяя подключить имеющуюся сетевую инфраструктуру к облачной платформе управления сетью.

При взаимодействии с ASIC-чипами Azure Cloud Switch полагается на интерфейс SAI (Switch Abstraction Interface), развиваемый в рамках открытого проекта OpenCompute. Возможность установки Azure Cloud Switch продемонстрирована для четырёх ASIC (Mellanox, Broadcom, Cavium и Barefoot), шести реализаций SAI (Broadcom, Dell, Mellanox, Cavium, Barefoot и Metaswitch) и трёх программных стеков (Microsoft, Dell и Metaswitch).

В качестве причины создания отдельного Linux-дистрибутива вместо использования существующих решений называется желание сфокусировать внимание на развитии возможностей, отвечающих интересам Microsoft. Использование открытых компонентов и Linux в основе новой платформы объясняется возможностью ускорить процесс разработки, отладки, тестирования и исправления проблем, а также возможностью использовать наработки сформировавшейся экосистемы (в частности, коммуникационное оборудование для SDN, развивающееся с оглядкой на открытые платформы).

 

Метки: , , ,

Легко переключаемся между LightDM и GDM


Давайте представим, что у вас установлены как LightDM, так и GDM на вашем компьютере на Ubuntu или на любом другом дистрибутиве, основанном на Debian. LightDM по умолчанию, но если вам нужно переключится на GDM — вы можете сделать это, выполнив следующую команду в терминале:

sudo dpkg-reconfigure gdm

Появится что-то наподобие этого:

Выберите нужный менеджер и нажмите enter. Затем перезагрузите ваш компьютер.

Если GDM установлен, вы можете выполнить ту же команду («sudo dpkg-reconfigure gdm») для переключения на любой менеджер, будь то LightDM, KDM, Slim, GDM и так далее. Если GDM не установлен, замените «gdm» в команде выше на любой установленный менеджер (например: «sudo dpkg-reconfigure lightdm»).

Источник статьи

 

Метки:

Изображение

Утилиты Linux


 

Метки:

Блокируем много IP адресов с помощью ipset и iptables


Вопросы борьбы со спамерами, ботами и прочей нечистью всегда актуальны. Хорошо когда список небольшой, с помощью iptables это решается элементарно, но вот когда адресов пару тысяч … тут уже приходится не сладко.

И тут на помощь к нам приходит (барабанная дробь) ipset.
Ipset позволяет использовать большие таблицы IP и MAC адресов, подсетей, номеров портов совместно с iptables (подключение производится через одно правило, в таблице используется хэширование). Возможно быстрое обновление списка целиком.

Официальная страница — ipset.netfilter.org.
ipset представляет из себя модуль ядра ip_set, ряд вспомогательных библиотек и утилиту ipset для задания параметров.
Установка тривиальна, во всех современных дистрибутивах присутствует пакет с одноименным названием.
Модуль ядра можно проверить командой:
# modprobe ipt_set

В Debian 7 и выше:
# apt-get install ipset

В Debian squeeze есть пакет xtables-addons, контент которого дублирует netfilter-extensions, установка:
# aptitude install xtables-addons-source xtables-addons-common
# m-a -v -t auto-install xtables-addons

В Gentoo соответственно проверить ядро на присутствие модуля, и установить пакет:
# emerge —ask —verbose ipset

CentOS / RHEL (используйте EPEL репозиторий):
# yum install ipset

Списки блокировок.
Где брать? Как отформотировать для использования?
Первое — список для удобства должен состоять только из ip адресов — по одному в строке, в любом текстовом файле.
Не так давно писал про Denyhosts, итогом работы является обновляемый список адресов в файле /etc/hosts.deny, выглядит вот так:

ALL: 222.186.15.139
ALL: 98.210.197.168

Тут надо просто выбросить первые 5 символов, вот так например:
# cat /etc/hosts.deny | sed ‘s/ALL: //’ >> denyhosts_blacklists.list

Если необходимо отсортировать уникальные (удалить дубликаты):
# sort denyhosts_blacklists.list | uniq > sorted_blacklists.list

Хорошие, обновляемые, готовые к использованию списки можно взять на форуме stopforumspam.com, будьте внимательны — есть суточное ограничение на количество скачиваний.
/…./
Блокируем.
В ipset нет таблиц, а есть set различных типов. Типы позволяют задавать ip адреса из определенной подсети (ipmap тип), связки ip адресов с MAC адресами (macipmap), порты из заданного диапазона (portmap), набор ip адресов или сетей (iphash, nethash), разные комбинации этих set-ов, или даже хранить ip адреса в set только определенное время (iptree). Более подробно советую посмотреть man ipset(8).

Для нашей задачи подходит тип iphash. Создаем (N -new) set с именем blacklist, и смотрим его содержимое:
# ipset -N blacklist iphash
# ipset -L blacklist
Name: blacklist
Type: hash:ip
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16480
References: 0
Members:

Добавляем (A — add) ip адреса blacklist и смотрим (L — list) содержимое set:
# ipset -A blacklist 192.168.0.211
# ipset -A blacklist 10.10.0.23
# ipset -L blacklist
Name: blacklist
Type: hash:ip
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16512
References: 0
Members:
10.10.0.23
192.168.0.222

Удаляем ip адреса из blacklist set (D — delete):
# ipset -D blacklist 192.168.0.222
# ipset -L blacklist
Name: blacklist
Type: hash:ip
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16512
References: 0
Members:
10.10.0.23

Проверяем, есть ли ip в blacklist set (T — test):
# ipset -T blacklist 10.10.0.23
10.10.0.23 is in set blacklist.

Удаляем все ip адреса из blacklist set (F — flush):
# ipset -F blacklist

Удаляем сам set (X):
# ipset -X blacklist

*** После создания set нам необходимо пропустить его через какую-либо цепочку фильтра iptables.
Вспомним путь прИхождения внешнего пакета в правилах iptables, сверху вниз:
-t raw PREROUTING
-t mangle PREROUTING
-t nat PREROUTING
-t mangle INPUT
-t filter INPUT

Или смотрим картинку.
Цепочка INPUT обрабатывает запросы, которые идут непосредственно на машину с iptables. Если надо блокировать трафик, который проходит от клиента к серверу через данную машину транзитно, то нужно использовать FORWARD, а то и PREROUTING.
Пример с INPUT:
** Правило не добавляем (-A), а вставляем (-I) в начало цепочки INPUT правил.
# iptables -v -I INPUT -m set —match-set blacklist src -j DROP
DROP all opt — in * out * 0.0.0.0/0 -> 0.0.0.0/0 match-set blacklist src

Т.е. мы подключили модуль set (-m set), потом указали какое совпадение set использовать (—match-set blacklist). src — это флаг, который показывает какие ip сравнивать с set, src (source — источник) или dst (destination — назначение) . Если нужно проверить и src и dst, то флаг задается так src,dst.
Посмотрим цепочку INPUT, на предмет нашего правила ipset (часть вывода):
# iptables -L INPUT -n -v —line-numbers
Chain INPUT (policy DROP 189 packets, 12489 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP all — * * 0.0.0.0/0 0.0.0.0/0 match-set blacklist src
2 108K 2115M ACCEPT all — lo * 0.0.0.0/0 0.0.0.0/0
3 18702 1834K ACCEPT all — eth1 * 0.0.0.0/0 0.0.0.0/0
4 3266 331K ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
5 23 920 DROP all — * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
6 0 0 DROP tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 ctstate

Хорошо видно, что наше правило (1) встало на первое место, т.е. пакеты при прохождении не минуют наш blacklist set.

Пример с FORWARD и логированием:
# iptables -v -I FORWARD -m set —match-set blacklist src -j DROP
DROP all opt — in * out * 0.0.0.0/0 -> 0.0.0.0/0 match-set blacklist src
# iptables -v -I FORWARD -m set —match-set blacklist src -j LOG —log-prefix «DROP blacklist entry»
DROP all opt — in * out * 0.0.0.0/0 -> 0.0.0.0/0 match-set blacklist src

** Замечание — почему логирование стоит вторым в инсерте правил? .. потому что мы вставляем правило в начало цепочки, и, казуса, что пакет не дошёл до правила с логированием не случится, в случае если правила мы добавляем, то очередность должна быть обратной, всегда смотрите и проверяйте правила прохождения пакетов:
# iptables -L FORWARD -n -v —line-numbers
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 LOG all — * * 0.0.0.0/0 0.0.0.0/0 match-set blacklist src LOG flags 0 level 4 prefix «DROP blacklist entry»
2 0 0 DROP all — * * 0.0.0.0/0 0.0.0.0/0 match-set blacklist src
3 983 55096 TCPMSS tcp — * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4 19889 2051K ACCEPT all — eth1 ppp0 0.0.0.0/0 0.0.0.0/0
5 19375 11M ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW,RELATED,ESTABLISHED
6 0 0 DROP all — * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID

… — все в порядке: сначала в LOG (1), потом в DROP (2), потом остальные правила.
/../
Удалять правила можно вот так:
# iptables -D INPUT -m set —match-set blacklist src -j DROP
# iptables -D FORWARD -m set —match-set blacklist src -j DROP
# iptables -D FORWARD -m set —match-set blacklist src -j LOG —log-prefix «DROP blacklist entry»

** Логи ipset и iptables искать в логах ядра, потому что это «ядерные» модули.
Я использую syslog-ng, kernel логи ловлю в отдельном файле:
Посмотреть через некоторое время, кто попал в сети можно так:
# grep «DROP blacklist entry» /var/log/syslog-ng/kernel.log

Если не знаете где логи можно грубо (может парсить долго!):
# grep -r «DROP blacklist entry» /var/log/*

Все что осталось, — это написать скрипт, который забирает из файла список блокировок.
Каталог для нашего скрипта (можно использовать любой):
# mkdir /etc/blacklist

Скачиваем список ip адресов и распаковываем его (можно автоматизировать, добавив задание в cron):
# cd /etc/blacklist
# wget http://www.stopforumspam.com/downloads/listed_ip_1.zip
# unzip listed_ip_1.zip

Примерный вариант скрипта:
#!/bin/bash
echo -n «Applying blacklist to IPSET…»
ipset -N blacklist iphash
xfile=$(cat /etc/blacklist/listed_ip_1.txt)
for ipaddr in $xfile
do
ipset -A blacklist $ipaddr
done
echo «…Done»
echo -n «Applying blacklist to Netfilter…»
iptables -v -I INPUT -m set —match-set blacklist src -j DROP
iptables -v -I INPUT -m set —match-set blacklist src -j LOG —log-prefix «DROP blacklist entry»
echo «…Done»

////**** Вариант скрипта предварительный, хотя много нового в нем не будет, но подправлю позже чуть.

upd: Замечание по правилу iptables — если firewall настроен как положено, (политики DROP), и открыты только нужные порты, следует указать более конкретное правило, для конкретного порта:
iptables -I INPUT -m set —match-set blacklist src -p TCP —destination-port 80 -j REJECT
iptables -I INPUT -m set —match-set blacklist src -p TCP —destination-port 80 -j LOG —log-prefix «DROP blacklist entry INPUT»

… вот что теперь я наблюдаю у себя в логах:

/var/log/syslog-ng/kern.log:Sep 28 22:44:02 HGATE kernel: [71402.569028] DROP blacklist entry INPUTIN=ppp0 OUT= MAC= SRC=218.6.12.99 DST=88.87.92.60 LEN=48 TOS=0x08 PREC=0x60 TTL=114 ID=19401 DF PROTO=TCP SPT=61453 DPT=80 WINDOW=8192 RES=0x00 SYN URGP=0
/var/log/syslog-ng/kern.log:Sep 29 01:14:18 HGATE kernel: [80411.694498] DROP blacklist entry INPUTIN=ppp0 OUT= MAC= SRC=79.134.234.200 DST=88.87.92.60 LEN=60 TOS=0x08 PREC=0x60 TTL=57 ID=12861 DF PROTO=TCP SPT=54571 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0
/var/log/syslog-ng/kern.log:Sep 29 01:37:20 HGATE kernel: [81792.214677] DROP blacklist entry INPUTIN=ppp0 OUT= MAC= SRC=176.8.88.134 DST=88.87.92.60 LEN=48 TOS=0x08 PREC=0x60 TTL=123 ID=11004 DF PROTO=TCP SPT=58019 DPT=80 WINDOW=8192 RES=0x00 SYN URGP=0

Можно посмотреть сколько заблокированных (посчитаем количество линий в файле) IP адресов:
# wc -l /etc/blacklist/listed_ip_7.txt
68611 /etc/blacklist/listed_ip_7.txt

Посмотреть на наш ipset и его размер:
# ipset —list -terse
Name: blacklist
Type: hash:ip
Revision: 0
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 142800
References: 0

////
Справочное руководство man ipset (англ).
Статья на англ. с графиками тестирования скорости обработки большого количества ip адресов.
Спасибо за внимание.
Похожие материалы:

Debian простой шлюз и firewall
Iptables: Учим правила
Конфиг iptables внезапно найденный на gentoo.ru

[28/09/2013 18:40 — zenon]
Теги:

ipset
blacklist
iptables
spam
script

Аватар zenon

[29/09/2013 03:38 — zenon]

Интересности:
To block IP addresses based on geo location (country) here is a simple shellscript:
#!/bin/sh
ipset -N geoblock nethash
for IP in $(wget -O – http://www.ipdeny.com/ipblocks/data/countries/{cn,kr,pk,tw,sg,hk,pe}.zone)
do
ipset -A geoblock $IP
done
iptables -A INPUT -m set –set geoblock src -j DROP

To auto-timeout a rule (and not generate any message if it already exists):
ipset create test hash:ip timeout 10
ipset add —exists test 91.83.231.25 120 (overwriting the default 10 seconds value)

To auto-learn a MAC address: (and define a range)
ipset create test bitmap:ip,mac range 192.168.0.0/24
ipset add test 192.168.0.1,11:11:22:22:11:11
ipset add test 192.168.0.2 (this one will auto-learn)

Источник статьи

 

Метки:

Sysdig — инструмент для диагностики Linux-систем


Для сбора и анализа информации о системе в Linux используется целый набор утилит. Для диагностики каждого из компонентов системы используется отдельный диагностический инструмент.

Информация о наиболее распространенных диагностических утилитах наглядно представлена на следующей схеме:

Недавно мы узнали об утилите Sysdig, разработанной компанией Draios. Она собирает информацию абсолютно обо всем:

о входящих сетевых соединениях и связанных с ними процессах;
о файлах, работа с которыми сопряжена с наибольшей нагрузкой на систему ввода/вывода;
о трафике в привязке к процессам;
о файлах и директориях, к которым обращаются пользователи;
о системных вызовах, файлах и сетевых соединениях, работа с которыми завершилась ошибкой…

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

DTrace, Systemtap и Sysdig

Sysdig является далеко не первой попыткой создать инструмент с расширенными возможностями для сбора информации о работающей Linux-системе.
В числе близких по функциональности инструментов следует прежде всего назвать, во-первых, DTrace — фреймворк динамической трассировки, разработанный компанией Sun Microsystems. Он используется для наблюдения за количеством потребляемой памяти, процессорным временем, сетевыми ресурсами, которые используются активными процессами на работающей системе.

В DTrace используются скрипты на языке D (Си-подобный язык, включающий также специализированные функции и переменные для трассировки). Скрипты включают список датчиков (probes), которым соответствуют определенные действия. Датчики срабатывают при выполнении заданного условия (например, при открытии файла или запуске процесса), после чего выполняется соответствующее действие. Имеется возможность передачи информации от одного датчика к другому.

DTrace представляет собой мощный, но при этом сложный в работе инструмент. Он требует от пользователя достаточно глубоких технических знаний. Написание и отладка D-скриптов также представляют собой трудоемкий (в особенности для пользователей, не имеющих должных навыков программирования) процесс, занимающий много времени.

Весьма близок к DTrace по принципу работы и набору функций инструмент Systemtap (год с небольшим назад о нем была опубликована небольшая статья на Хабре). Systemtap представляет собой интерфейс командной строки и скриптовый язык. Он осуществляет мониторинг системных событий и в случае наступления какого-либо события назначает для него обработчик.

В качестве событий могут выступать, например, начало или конец сессии Systemtap, срабатывание таймера и т.п.). Обработчиком события называется последовательность скриптовых операторов, которые выполняются, когда событие срабатывает. Обычно обработчики вычленяют информацию из контекста события или выводят ее на консоль.

Существенным минусом SystemTap является очень сложный синтаксис скриптового языка. Написание и отладка скриптов также забирают у пользователя немало времени и сил.

В отличии от упомянутых выше инструментов Sysdig устроен по-другому. По архитектуре он близок к таким продуктам, как libcap, tcpdump, wireshark. Специальный драйвер sysdig probe перехватывает системные события на уровне ядра, после чего запускается функция ядра tracepoints, которая, в свою очередь запускает для этих событий обработчики. Обработчики сохраняют информацию о событии в cовместно используемом буфере. Затем эта информация может быть выведена на экран или сохранена в текстовом файле.

Благодаря такой архитектуре sysdig не влияет на производительность системы. Детальную информацию о системных событиях можно получать при помощи простых команд. Для выполнения некоторых операций используются готовые скрипты на языке Lua (более подробно о них еще пойдет речь ниже).

Установка

В официальные репозитории sysdig пока что не включен. Чтобы запустить автоматическую установку Sysdig, нужно выполнить следующую команду:

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

О процедурах ручной установки для различных дистрибутивов Linux можно подробно почитать в официальной документации.

Первое знакомство

По завершении установки введем следующую команду:

# sysdig

Все события, происходящие в системе, будут записываться в стандартный вывод:

63889 15:25:12.908695644 3 notify-osd (7209) > poll fds=3:u5 timeout=4294967295
63890 15:25:12.908698249 3 notify-osd (7209) writev fd=3() size=4
63893 15:25:12.908704065 2 gnome-terminal (18260) > lseek fd=24(/tmp/vteIVHGFX (deleted)) offset=0 whence=2(SEEK_END)
63894 15:25:12.908704595 2 gnome-terminal (18260) lseek fd=24(/tmp/vteIVHGFX (deleted)) offset=0 whence=2(SEEK_END)
63896 15:25:12.908709655 2 gnome-terminal (18260) write fd=24(/tmp/vteIVHGFX (deleted)) size=80
63899 15:25:12.908710722 3 notify-osd (7209) > writev res=4 data=+…
63900 15:25:12.908713828 3 notify-osd (7209) < poll fds=3:u1 timeout=4294967295
63901 15:25:12.908714531 2 gnome-terminal (18260) < write res=80 data=1275 15:25:12.596942000 1 rs:main (941) < open fd=-2(ENOENT) name=/dev/xconsole

В каждой строке вывода содержится информация об одном событии. Она отображается в следующем формате:

%evt.num %evt.time %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.args

Вывод состоит из следующих полей:

evt.num — номер события;
evt.time — время события;
evt.cpu — номер процессора, в котором было перехвачено событие;
proc.name — имя процесса;
thread.tid — номер потока (у однопотоковых процессов он совпадает c номером процесса);
evt.dir — направление события ( — для исходящих);
evt.type — тип события;
evt.args — аргументы события.

Сохранение информации в файлах

Информацию о событиях, которую собирает sysdig, можно сохранять в отдельных файлах. Для этого используется команда вида:

# sysdig -w myfile.scap

Если нужно записать в файл информацию не обо всех системных событиях, а лишь об ограниченном их количестве (скажем, только о 100 событиях), используется опция -n:

# sysdig —n 100 —w myfile.scap

Вывести на консоль информацию, ранее сохраненную в файле, можно с помощью опции -r:

# sysdig -r myfile.scap

Sysdig сохраняет в каждом файле полный снимок операционной системы (запущенные процессы, активные файлы, активные пользователи и т.п.).

Фильтры

Как мы уже увидели из приведенных выше примеров, sysdig пишет в стандартный вывод вcю информацию о событиях. Мы можем сделать так, чтобы на консоль выводилась только та информация, которая нужна нам. Для этого используются фильтры.

Они указываются в конце строки (как, например, в tcpdump). Они могут быть применены как при записи событий «на лету», так и при записи в файл. Попытаемся проследить за работой какой-либо команды& — например, cat:

# sysdig proc.name = cat

21368 13:10:15.384878134 1 cat (8298) brk size=0
21372 13:10:15.384949909 1 cat (8298) mmap
21374 13:10:15.384979452 1 cat (8298) access
21376 13:10:15.384999211 1 cat (8298) open
21378 13:10:15.385014374 1 cat (8298) fstat fd=3(/etc/ld.so.cache)
21380 13:10:15.385016588 1 cat (8298) mmap
21382 13:10:15.385019763 1 cat (8298) close fd=3(/etc/ld.so.cache)
21384 13:10:15.385020556 1 cat (8298) < close res=0

Попробуем применить фильтры. Их можно задавать при помощи стандартных операторов сравнения (=, !=, <, , >=, contains). Можно также использовать булевы операторы (or, and, not) и скобки.

Введем следующую команду:

# sysdig proc.name = cat and proc.name = vi

Она будет отслеживать всю активность программ cat и vi:

56239 12:14:01.449463618 0 BrowserBlocking (2587) > open
56240 12:14:01.449467018 0 BrowserBlocking (2587) open
63177 12:14:01.493281181 3 gnome-terminal (3910) open
63205 12:14:01.493319526 3 gnome-terminal (3910) open
2112 12:15:47.656368926 1 rs:main (914) open
2114 12:15:47.656371170 1 rs:main (914) open
2116 12:15:47.656374373 1 rs:main (914) open
2118 12:15:47.656376563 1 rs:main (914) open
2120 12:15:47.656378615 1 rs:main (914) open

Полный список фильтров можно посмотреть, введя команду

# sysdig -l

(подробные разъяснения и комментарии см. здесь).

С помощью фильтров можно легко получать полезную и важную информацию. Например, просмотреть информацию о входящих сетевых соединениях, полученных всеми процессами, кроме apache, можно при помощи простой команды:

# sysdig evt.type=accept and proc.name!=apache

Как уже было сказано выше, в выводе sysdig присутствуют поля evt.arg и evt.rawarg. О них следует рассказать отдельно. Каждое событие, регистрируемое sysdig, относится к определенному типу (например, open, read и т.п.), а также обладает определенными параметрами (fd, name и т.п.), которые закодированы по определенным правилам. Не будем разбирать все это подробно (заинтересованных читателей отсылыем к официальной документации) и остановимся на том, как эти аргументы могут быть использованы при создании фильтров.

Рассмотрим следующую команду:

# sysdig evt.type=execve and evt.arg.ptid=bash

Она выведет на консоль список процессов, запущенных интерактивными пользователями. Установленный фильтр принимает системные вызовы execve (которые используются для выполнения программ) только в случае, если для них родительским процессом для них является bash.

Различие между evt.arg и evt.rawarg заключается в том, что последний не расшифровывает идентификационные номера процессов, коды ошибок и т.п., оставляя все аргументы в «сырой» цифровой форме.
Например, просмотреть список процессов, вызвавших ошибки, можно с помощью команды:

# sysdig «evt.rawarg.res<0 or evt.rawarg.fd<0"

257727 15:57:35.398754060 3 chrome (17326) < futex res=-110(ETIMEDOUT)
257737 15:57:35.399218996 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257749 15:57:35.399362914 1 Xorg (1153) < read res=-11(EAGAIN) data=
257834 15:57:35.401067094 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257836 15:57:35.401106092 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257849 15:57:35.402594284 2 chrome (4446) < futex res=-110(ETIMEDOUT)
257882 15:57:35.407348870 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257884 15:57:35.407358705 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257888 15:57:35.407373908 0 chrome (2493) < recvfrom res=-11(EAGAIN) data= tuple=NULL
257922 15:57:35.407757377 1 Xorg (1153) < read res=-11(EAGAIN) data=

Полный список событий и параметров, которые могут быть использованы в фильтрах, можно посмотреть при помощи команды

# sysdig -L

Форматирование выводов

Всю информацию, которую sysdig выводит на консоль, мы также можем представить в нужном нам формате. Для форматирования вывода нужно воспользоваться опцией -p, после которой указываются необходимые поля вывода:

# sysdig -p"user:%user.name dir:%evt.arg.path" evt.type=chdir

user:ubuntu dir:/root
user:ubuntu dir:/root/tmp
user:ubuntu dir:/root/Download

Приведенная выше команда собирает информацию о системных вызовах chdir (они осуществляются каждый раз при выполнении команды cd) и выводят на консоль имена пользователей, выполняющих команду cd и имена директорий, в которые они переходят.

С опцией -p используется следующий синтаксис:

перед именами полей ставится знак процента (%);
в строки можно добавлять любой текст (как в функции printf на языке С);
по умолчанию строка выводится на консоль только в том случае, когда в событии присутствуют все элементы, указанные после опции -p. Если в начале строки указать звездочку (*), то вывод будет представлен в неполном виде; отсутствующие поля будут обозначены как N/A.

Введем команду:

# sysdig -p"%evt.type %evt.dir %evt.arg.name" evt.type=open

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

open < /proc/23533/task/23533/stat
open < /proc/23533/task/23535/stat
open < /proc/23533/task/23536/stat
open < /proc/23533/task/23539/stat
open < /proc/23533/task/23540/stat
open < /proc/23533/task/23541/stat
open < /proc/23533/task/23542/stat
open < /proc/23533/task/23543/stat
open < /proc/23533/task/23544/stat

Входящие события не имеют имени, поэтому информация о них в выводе не отображается.

Если же мы введем команду

# sysdig -p "*%evt.type %evt.dir %evt.arg.name" evt.type=open

то в вывод будет включена информация и об исходящих событиях:

open
open
open
open
open
open
open < /dev/urandom

Чизелы

Для анализа списка событий в Sysdigs используются небольшие скрипты, написанные на языке Lua. Разработчики называют их chisels (в русском переводе слово chisel означает «долото», «стамеска»). Для этого термина вряд ли можно найти адекватный русский эквивалент, поэтому мы решили оставить его без перевода и называть эти скрипты чизелами.
Вывести на консоль список доступных чизелов можно при помощи команды:

# sysdig -cl

Просмотреть описание конкретного чизела и список используемых с ним аргументов можно с помощью опции -i:

# sysdig -i fileslower

Category: Performance
———————
fileslower Trace slow file I/O
Use the -i flag to get detailed information about a specific chisel
Trace file I/O slower than a threshold, or all file I/O

Args:
[int] min_ms — minimum millisecond threshold for showing file I/O

Запуск чизелов осуществляется с помощью опции -с. Попробуем запустить чизел topfiles_bytes (он выводит на экран список файлов на локальной машине, к которым осуществляется наибольшее количество обращений):

# sysdig -c topfiles_bytes

Bytes Filename
——————————
3.21KB /dev/input/event4
2.93KB /tmp/vte7IZWFX (deleted)
864B /dev/urandom
800B /tmp/vteL7ZWFX (deleted)
498B /dev/ptmx
224B /dev/dri/card0
219B /proc/16213/task/16221/stat
217B /proc/16213/task/16229/stat
217B /proc/16213/task/16219/stat
215B /proc/16213/task/16225/sta

При работе с чизелами также используются фильтры. Если нас, например, не интересует информация о частоте обращений к файлам в директории /dev, мы можем применить соответствующий фильтр:

# sysdig -c topfiles_bytes "not fd.name contains /dev"
Bytes Filename
——————————
1.90KB /tmp/vte7IZWFX (deleted)
438B /proc/16139/task/16145/stat
438B /proc/16139/task/16141/stat
434B /proc/16139/task/16150/stat
430B /proc/16139/task/16146/stat
430B /proc/16139/task/16147/stat
430B /proc/16139/task/16149/stat
430B /proc/16139/task/16148/stat
428B /proc/16139/task/16139/stat
420B /proc/16139/task/16142/stat

С помощью фильтров можно также просмотреть информацию об обращениях к файлам в конкретной директории:

# sysdig -c topfiles_bytes "fd.name contains /var/log/"

Bytes Filename
——————————
596B /var/log/kern.log
596B /var/log/syslog
596B /var/log/messages

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

# sysdig -c topfiles_bytes "proc.name=vi"

Можно также посмотреть, к каким файлам обращается пользователь:

$ sysdig -c topfiles_bytes "user.name=username"

Bytes Filename
——————————
1.90KB /tmp/vte7IZWFX (deleted)
576B /dev/urandom
384B /tmp/vteL7ZWFX (deleted)
355B /dev/ptmx

Можно запускать несколько чизелов одновременно:

# sysdig -c stdin -c stdout proc.name=cat

Как уже было отмечено, все чизелы написаны на языке Lua, поэтому их можно без труда отредактировать или даже написать новые.
С руководством по написанию скриптов можно ознакомиться здесь.

Примеры использования

Рассмотрим примеры типовых диагностических процедур, которые можно проводить с помощью sysdig.

Сеть

Просмотреть список всех подключений, не обслуживаемых Apache:

# sysdig -p "%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

Просмотреть, какими данными сервер обмениваются 192.168.0.1:
в двоичном коде:

# sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1

в кодировке ASCII:

# sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1

Просмотреть информацию о процессах, потребляющих больше всего трафика:

# sysdig -c topprocs_net
Bytes Process
——————————
885B avahi daemon
6.44KB Chrome

Просмотреть статистику использования серверных портов:
количество установленных соединений:

# sysdig -c fdcount_by fd.sport "evt.type=accept";

объем отправленной информации, байт:

# sysdig -c fdbytes_by fd.sport

Просмотреть информацию о клиентских IP:

количество установленных соединений:

# sysdig -c fdcount_by fd.cip "evt.type=accept"

объем отправленной информации, байт:

# sysdig -c fdbytes_by fd.cip

Bytes fd.cip
——————————
375B 192.168.40.99
250B 192.168.40.255
226B 192.168.40.101
133B 192.168.30.88
125B 255.255.255.255

Просмотреть информацию о запросах к внешнему MySQL серверу, осуществляемых через Apache:

# sysdig -A -c echo_fds fd.sip=192.168.30.5 and proc.name=apache2 and evt.buffer contains SELECT

Дисковая подсистема

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

# sysdig -c topprocs_file
Bytes Process
——————————
12.61KB BrowserBlocking
3.89KB Xorg
3.79KB Chrome_IOThread
3.09KB gnome-terminal

Просмотреть информацию о процессах, использующих большое количество файлов:

# sysdig -c fdcount_by proc.name "fd.type=file"

BrowserBlocking 365
Chrome_IOThread 44
irqbalance 12
upowerd 7
dropbox 5
Xorg 3
alsa-sink 2
rs:main 2
compiz 1
rsyslogd 1
gnome-terminal 1

Отслеживать операции чтения-записи, осуществляемые процессами:

# sysdig -c topfiles_bytes

Bytes Filename
——————————
5.41KB /dev/input/event4
1.90KB /tmp/vteHGSYFX (deleted)
576B /dev/urandom
554B /dev/ptmx
384B /tmp/vteHESYFX (deleted)
219B /proc/16139/task/16145/stat
219B /proc/15857/task/15865/stat
219B /proc/16139/task/16141/sta

Просмотреть список файлов, с которыми apache осуществляет наибольшее количество операций чтения-записи:

# sysdig -c topfiles_bytes proc.name=httpd

Отслеживать открытие файлов в реальном времени:

# sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

root 1143 irqbalance 3 f /proc/interrupts
root 1143 irqbalance 3 f /proc/stat
root 1143 irqbalance 3 f /proc/irq/42/smp_affinity
root 1143 irqbalance 3 f /proc/irq/41/smp_affinity
root 1143 irqbalance 3 f /proc/irq/16/smp_affinity
root 1143 irqbalance 3 f /proc/irq/43/smp_affinity
root 1143 irqbalance 3 f /proc/irq/17/smp_affinity
root 1143 irqbalance 3 f /proc/irq/23/smp_affinity
root 1143 irqbalance 3 f /proc/irq/40/smp_affinity
root 1143 irqbalance 3 f /proc/irq/10/smp_affinity
root 1143 irqbalance 3 f /proc/irq/18/smp_affinity

Использование процессора

Просмотреть статистику использования процессора:

# sysdig -c topprocs_cpu

CPU% Process
——————————
0.31% sysdig
0.09% sshd
0.03% mysqld
0.01% nginx
0.01% php5-fpm

Просмотреть статистику использования CPU0:

# sysdig -c topprocs_cpu evt.cpu=0

Просмотреть стандартный вывод для процесса:

# sysdig -s4096 -A -c stdout proc.name=cat

Производительность и ошибки

Просмотреть информацию об ошибках открытия файлов httpd:

# sysdig "proc.name=httpd and evt.type=open and evt.failed=true"

Просмотреть статистику о файлах, на которые затрачивается больше всего времени:

# sysdig -c topfiles_time

Time Filename
——————————
403us /dev/urandom
267us /dev/input/event4
84us /dev/dri/card0
63us /tmp/vte7IZWFX (deleted)
34us /tmp/vteL7ZWFX (deleted)
20us /proc/3467/task/3467/stat
13us /dev/ptmx
11us /proc/16010/task/16010/st

Просмотреть информацию о процессах, на которые apache затрачивает больше всего времени:

# sysdig -c topfiles_time proc.name=httpd

Просмотреть информацию о процессах, при выполнении которых возникают ошибки ввода-вывода:

# sysdig -c topprocs_errors

——————————
2363 notify-osd
1327 Xorg
688 compiz
349 chrome
82 pulseaudio
76 gtk-window-deco
62 gnome-terminal
50 alsa-sink
30 Chrome_ChildIOT
20 gnome-screensav
20 nautilus
14 Chrome_IOThread
10 syndaemon
10 gnome-settings-
7 soffice.bin
6 nm-applet
6 dbus-daemon
4 AudioThread
3 pidgin
2 NetworkManager
2 mission-control
1 gdbus

Просмотреть информацию о файлах, при работе с которыми возникают ошибки ввода-вывода:

# sysdig -c topfiles_errors

#Errors Filename
——————————
43 /dev/input/event4
2 /dev/ptmx

Просмотреть информацию о системных вызовах, возвращающих ошибки:

# sysdig -c topscalls "evt.failed=true"

# Calls System Call
——————————
384 recvfrom
273 futex
169 read
133 sendto
41 select
3 recvmsg

Отслеживать ошибки при открытии файлов по мере их появления:

# sysdig -p &quot%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true

root 1607 upowerd -1 f /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_now
root 1607 upowerd -1 f /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_avg
root 1607 upowerd -1 f /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/voltage_max_design
root 1607 upowerd -1 f /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0e/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power_now

Вывести список операций ввода-вывода, выполнение которых происходит с задержкой более 1 мс:

# sysdig -c fileslower 1

TIME PROCESS TYPE LAT(ms) FILE
2014-05-13 12:46:57.190 rsyslogd read 3524 /proc/kmsg
2014-05-13 12:46:57.197 rsyslogd read 7 /proc/kmsg
2014-05-13 12:46:57.205 rsyslogd read 7 /proc/kmsg
2014-05-13 12:46:57.209 rsyslogd read 4 /proc/kmsg
2014-05-13 12:46:57.221 rsyslogd read 11 /proc/kmsg
2014-05-13 12:46:57.225 rsyslogd read 3 /proc/kmsg
2014-05-13 12:46:57.233 rsyslogd read 7 /proc/kmsg
2014-05-13 12:46:57.241 rsyslogd read 7 /proc/kmsg
2014-05-13 12:46:58.362 upowerd read 220 /sys/devices/LNXSYSTM:00/LN

Безопасность

Просмотреть информацию о директориях, посещаемых root-пользователем:

# sysdig -p "%evt.arg.path" "evt.type=chdir and user.name=root"

Отслеживать активность ssh:

# sysdig -A -c echo_fds fd.name=/dev/ptmx and proc.name=sshd

Отображать все события при открытии файла из директории /etc:

# sysdig evt.type=open and fd.name contains /etc
97367 12:50:02.164137993 0 unity-panel-ser (2193) < open fd=13(/etc/timezone) name=/etc/timezone flags=1(O_RDONLY) mode=0
97385 12:50:02.164419642 0 unity-panel-ser (2193) < open fd=13(/etc/localtime) name=/etc/localtime flags=1(O_RDONLY) mode=0
97405 12:50:02.164642935 0 unity-panel-ser (2193) < open fd=13(/etc/localtime) name=/etc/localtime flags=1(O_RDONLY) mode=0

Заключение

Sysdig — проект еще молодой. В числе его несомненных преимуществ следует назвать простой синтаксис команд. Во многих случаях Sysdig дает более подробную, чем DTrace и Systemtap, информацию о системных событиях, и представляет ее в более понятной человекочитаемой форме. Еще один важный плюс заключается в том, что анализ работы системы может выполняться после сбора всех данных, а не одновременно с возникновением ошибки или проблемной ситуации.

Перспективы у sysdig, несомненно, есть, и весьма неплохие. Надеемся, что продукт будет усовершенствован и займет достойное место в ряду утилит для диагностики Linux-систем.

Источник статьи

 

Метки:

Прошивка/перепрошивка android телефонов с помощью fastboot


В этой статье я расскажу как прошить/перепрошить android телефон с помощью fastboot на ubuntu 12.10 на примере LG GT540 swift.

Благодаря тому, что все утилиты для прошивки есть в репозиториях это не есть сложно. Установим Их:

sudo apt-get install adb fastboot

done.

Так же, что бы ubuntu видела телефон, подключенный через usb, нужно создать конфиг:

sudo gedit /etc/udev/rules.d/51-android.rules

с таким вот содержанием:

SUBSYSTEM==»usb», SYSFS{idVendor}==»1004″, MODE=»0666″
SUBSYSTEM==»usb», SYSFS{idVendor}==»18d1″, MODE=»0666″

Для каждого производителя строки должны быть разные:

#Acer
SUBSYSTEM==usb, SYSFS{idVendor}==0502, MODE=0666

#ASUS
SUBSYSTEM==usb, SYSFS{idVendor}==0b05, MODE=0666

#Dell
SUBSYSTEM==usb, SYSFS{idVendor}==413c, MODE=0666

#Foxconn
SUBSYSTEM==usb, SYSFS{idVendor}==0489, MODE=0666

#Garmin-Asus
SUBSYSTEM==usb, SYSFS{idVendor}==091E, MODE=0666

#Google
SUBSYSTEM==usb, SYSFS{idVendor}==18d1, MODE=0666

#HTC
SUBSYSTEM==»usb», SYSFS{idVendor}==»0bb4″, MODE=0666

#Huawei
SUBSYSTEM==usb, SYSFS{idVendor}==12d1, MODE=0666

#K-Touch
SUBSYSTEM==usb, SYSFS{idVendor}==24e3, MODE=0666

#KT Tech
SUBSYSTEM==usb, SYSFS{idVendor}==2116, MODE=0666

#Kyocera
SUBSYSTEM==usb, SYSFS{idVendor}==0482, MODE=0666

#Lenevo
SUBSYSTEM==usb, SYSFS{idVendor}==17EF, MODE=0666

#LG
SUBSYSTEM==usb, SYSFS{idVendor}==1004, MODE=0666

#Motorola
SUBSYSTEM==usb, SYSFS{idVendor}==22b8, MODE=0666

#NEC
SUBSYSTEM==usb, SYSFS{idVendor}==0409, MODE=0666

#Nook
SUBSYSTEM==usb, SYSFS{idVendor}==2080, MODE=0666

#Nvidia
SUBSYSTEM==usb, SYSFS{idVendor}==0955, MODE=0666

#OTGV
SUBSYSTEM==usb, SYSFS{idVendor}==2257, MODE=0666

#Pantech
SUBSYSTEM==usb, SYSFS{idVendor}==10A9, MODE=0666

#Philips
SUBSYSTEM==usb, SYSFS{idVendor}==0471, MODE=0666

#PMC-Sierra
SUBSYSTEM==usb, SYSFS{idVendor}==04da, MODE=0666

#Qualcomm
SUBSYSTEM==usb, SYSFS{idVendor}==05c6, MODE=0666

#SK Telesys
SUBSYSTEM==usb, SYSFS{idVendor}==1f53, MODE=0666

#Samsung
SUBSYSTEM==usb, SYSFS{idVendor}==04e8, MODE=0666

#Sharp
SUBSYSTEM==usb, SYSFS{idVendor}==04dd, MODE=0666

#Sony Ericsson
SUBSYSTEM==usb, SYSFS{idVendor}==0fce, MODE=0666

#Toshiba
SUBSYSTEM==usb, SYSFS{idVendor}==0930, MODE=0666

#ZTE
SUBSYSTEM==»usb«, SYSFS{idVendor}==»19d2″, MODE=»0666″ #Это для adb
SUBSYSTEM==»usb«, SYSFS{idVendor}==»18d1″, MODE=»0666″ #Это для fastboot

И наконец:

sudo restart udev

Утилиты готовы к использованию.

Теперь можно подключить телефон и зайти в меню фастбут — для этого при включении зажимаем кнопку «включить» и на одну секунду нажимаем на кнопку «камера». Если все получилось, Вы увидите голубой экран.. Что бы убедиться, что убунту видит телефон в терминал вводим:

sudo fastboot devices

Телефон видно, отлично. Теперь можно приступить к прошивке. Все это нужно делать с правами рута.

fastboot -w # вайп
fastboot erase system # очистить раздел систем
fastboot erase boot # очистить раздел бут
fastboot flash system /home/username/system.img # записываем новый систем
fastboot flash boot /home/username/boot.img # записываем новый бут
fastboot -w # еще раз вайп
fastboot reboot # перезагружаемся

Прошивки можно найти на http://4pda.ru

Источник статьи

 

Метки:

Dynamic Host Configuration Protocol (DHCP)


Инсталяция

Наберите в консоле терминала команду:

sudo apt-get install dhcp3-server

Во-первых, Необходимо отредактировать /etc/default/dhcp3-server, в котором указать интерфейсы которые «слушает» dhcpd сервис. По умолчанию eth0. Служба посылает сообщения в syslog, который необходимо просматривать для диагностирования проблем.

Далее необходимо отредактировать настройки по умолчанию в файле /etc/dhcp3/dhcpd.conf

4.3.2. Configuration

В конце установки выдается сообщение об ошибке, но следующие шаги помогут вам правильно настроить сервис. Во первых, нам необходимо настроить автоматическую раздачу ip адресов:

# Sample /etc/dhcpd.conf

default-lease-time 600;

max-lease-time 7200;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.1.255;

option routers 192.168.1.3;

option domain-name-servers 10.0.2.3, 192.168.1.2;

option domain-name «mydomain.example»;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.10 192.168.1.100;

range 192.168.1.150 192.168.1.200;

}

В результате DHCP сервер будет выделять клиентам адреса в диапазоне

192.168.1.10-192.168.1.100 или 192.168.1.150-192.168.1.200. Адреса выдаются в «аренду» на 600 600 секунд, если клиент не укажет другое. Максимальное время «аренды» 7200 секунд. Далее, мы устанавливаем маску сети 255.255.255.0, 192.168.1.255 является адресом широковещательной рассылки, 192.168.1.3 — шлюз по умолчанию, а 10.0.2.3 (см.Настрой простой сети) и 192.168.1.2 DNS сервера.

Возможно вам будет необходимо указать вашим Windows клиентам адрес WINS (сервер разрешения имен windows ) сервера — добавьте следующую строчку:

option netbios-name-servers 192.168.1.1;

После внесения изменений перезапускаем:

sudo /etc/init.d/dhcp3-server restart

Теперь наши клиенты сети могут получать настройки сети автоматически.

Источник статьи

 

Метки: