Monthly Archive for March, 2009

FreeBSD: смена пароля пользователя

Как поменять пароль, если вы не суперпользователь root?

Для этого существует команда passwd. Она запросит старый пароль, а потом новый и подтверждение нового пароля.

Как поменять пароль, будучи root?

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

меняет пароль данного пользователя, не спрашиваю старого пароля.

Как заблокировать пользователя?

Самый простой способ - это отредактировать файл /etc/passwd. Запускаете

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

в о открывшемся редакторе перед полем с зашифроманым паролем ставите какой-либо символ, лучше звездочку - она точно не может быть в этом поле. Когда нужно будет разблокировать пользователя - можете эту звездочку оттуда убрать.

То есть

Password: $1$0p97EnFA$Vfj56ZC43BDRhac11866r/

меняется на

Password: *$1$0p97EnFA$Vfj56ZC43BDRhac11866r/

Этого достаточно чтоб заблокировать вход пользователя.

СМЕНА ПАРОЛЯ ПОЛЬЗОВАТЕЛЯ НЕ ПОМОЖЕТ, если настроен доступ по ssh ключам - читайте в следующих постах.

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Linux: Как посмотреть количество открытых файлов

Linux: lsof покажет открытые файлы

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

Соответственно, для подсчета количества

lsof | wc -l

Для подсчета количества по для одного процесса, скажем firefox

lsof | grep firefox | wc -l

Посчитать и найти, кто использует больше всего

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

lsof | awk '\!/^COMMAND.*PID/ {usage[$1]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

Для разбивки по PID можно запустить следующую команду:

lsof | awk '\!/^COMMAND.*PID/ {usage[$2 " " $1]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

(первая колонка - количество открытых файлов, вторая колонка - PID процесса)

А вот так можно посмотреть  количество открытых файлов в Linux :) Тоже ничего сложного :)

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Как посмотреть количество открытых файлов

FreeBSD: fstat посмотреть открытые файлы

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

Соответственно, для подсчета количества
fstat | wc -l

Для подсчета количества по для одного процесса, скажем firefox
fstat | grep firefox | wc -l

Посчитать и найти, кто использует больше всего

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

fstat | awk '\!/^USER.*CMD.*PID/ {usage[$2]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

Для разбивки по PID можно запустить следующую команду:

fstat | awk '\!/^USER.*CMD.*PID/ {usage[$3 " " $2]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

(первая колонка - количество открытых файлов, вторая колонка - PID процесса)

Вот так и можно посмотреть в FreeBSD количество открытых файлов :) Ничего сложного :)

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Unix/FreeBSD: Редактирование /etc/passwd

FreeBSD - редактирование /etc/passwd файла

Поскольку FreeBSD использует не только текстовый файл для хранения паролей, но и дополнительную базу данных (для ускорения поиска), то редактировать файл напрямик не даст вам никакой пользы. После этого все равно придется заново компилировать базу /etc/[s]pwd.db .

FreeBSD: Идеологически верный способ отредактировать /etc/passwd и /etc/master.passwd

Правильным методом является использование команд vipw, chsh, chfn. После редактирования passwd файла или его кусочка, они проверяют данные на соответствие формату и после этого заносят изменения в текстовый файл и пересобирают сами базу.

  • vipw поможет вам подредактировать весь файл
  • chsh и chfn - изменят информацию о пользователе (стати их может запускать и сам пользователь)

Все эти команды используют ваш редактор по умолчанию. Скорее всего это vi (и есть шпаргалка по использованию Vi).

Linux/Solaris - редактирование /etc/passwd файла

Под Linux и Solaris точно такие же команды - vipw, chsh, chfn.

Только вот для редактирования shadow файла (где лежат пароли) вам нужно будет запустить команду vipw -s .

Все эти команды используют ваш редактор по умолчанию. Скорее всего это vi (и есть шпаргалка по использованию Vi).

Будьте осторожны при редактировании файла /etc/passwd!
Особенно обращайте внимание на то, чтоб не разделить какую-либо
строчу на две - потом замучаетесь собирать обратно!

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Книга FreeBSD + apache + mysql + php - конфигурационный файл apache

В книгу добавилась глава о конфигурационном файле apache  - httpd.conf

Конфигурационный файл apache состоит из директив и из секций.
Директивы указывают различные настройки сервера, а секции показывают к чему
именно они относятся.

4 типа секций, которые нас интересуют:

VirtualHost –  указывает настройки для виртуального хоста, который имеет
собственное отдельное имя и/или отдельный IP и/или отдельный порт

Location — указывает на специфичные настройки внутри отдельного
виртуального хоста для конкретного URL. При этом Location не имеет ничего общего
с физической файловой системой для данного хоста - она оперирует только с URL, a
они могут кардинально отличаться от путей на файловой системе. Разновидностью
этой же директивы является LocationWatch, которую мы рассмотрим дальше.

Directory — указывает на специфичные настройки именно для данной директории

Files — указывает на спефицичные настройки для данного файла или всех
файлов попадающих под соответстсвующий шаблон

Более подробно - в 16-ой главе книги по ‘Установке и настройке FAMP‘.

Там же вы найдете:
- Подробное описание секций VirtualHost, Location, Directory, Files
- Как указывать несколько имен для одного и того же хоста
- Как разрешать/запрещать доступ с конкретного IP/подсети к определенным директориям и файлам
- Как менять настройки PHP интерпретатора только для одной директории или только для одного хоста.

Все в подробностях - на странице  книги ‘Установка и настройка FreeBSD+apache+mysql+php‘. Узнайте в подробностях, из чего состоит конфигурационный файл apache и как его настраивать.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Как выйти из команды less и more

Новые пользователи unix систем часто открывают страницу справки и застревают в просмотрщике more или less.

Как же выйти из less?

Очень просто - нажимаете кнопочку ‘q’ и вы из него вышли.

Другие полезные комбинации less

  • Пробел или f - листает вниз
  • b - поднимается на страницу наверх
  • ?текст  Enter - ищет заданный текст с текущей позиции наверх
  • /текст  Enter - ищет заданный текст с текущей позиции вниз
  • n - продолжает поиск в заданом направлении и ищет следующее вхождение (т.е. если предыдущая команда была / - то вниз, если ? - то вверх)
  • N - продолжает поиск в противоположном направлении
  • Enter - просто промотать вниз на 1 строку
  • r, Ctrl+r или Ctrl+l - обновляют, перерисовывают экран
  • = - печатает информацию о текущем файле и положение в нем
  • q - выходит из просмотрщика

Команда more существенно более урезаная в возможностях, но тем не менее поддерживает большинство этих команд.

Если хотите, чтоб во время работы less делал бы поиск вне зависимости от регистра - тогда вызывайте его с ключем -i .

Мои настройки:

В профайле у меня прописано (используйте это есть у вас csh или tcsh)

alias less 'less -i -r -x4 -w -S -M -g'
setenv PAGER 'less -i -M -g'

Используйте если у вас bash, sh, ksh, zsh и другие

alias less 'less -i -r -x4 -w -S -M -g'
export PAGER=''less -i -M -g'

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Apache: файлы .htaccess и .htpasswd, как ставить пароли

Как создать и поменять .htpasswd, файл паролей apache

Перемещено! Я поменял и доработал материал по .htaccess и .htpasswd.

Для работы с файлами паролей есть утилита htpasswd, поставляемая вместе с apache.

Для того, чтоб посмотреть какие пользователи определены - можно просто открыть файл и посмотреть - имена пользователей написаны в начале строки до символа :. Пароли в расшифрованом виде оттуда прочести невозможно. Только путем перебора паролей.

Для создания файла можно применить команду
htpasswd -c имя_файла имя_пользователя
и ввести пароль пользователя.

Для того, чтоб поменять пароль у уже существующего пользователя — достаточно сделать
htpasswd имя_файла имя_пользователя
и тоже ввести новый пароль и подтверждение.

Доступ к .htaccess и .htpasswd

По умолчанию apache отказывает в любой попытке чтения при помощи HTTP запроса этих файлов. Это не надо ни в коем случае менять, эти файлы должны быть недоступны при помощи web сервера.

Тем не менее, нужно убедиться, что сам веб сервер может их прочитать — поэтому либо они должны принадлежать пользователю www, либо иметь права доступа -rwxr–r–.

Новая глава в книге по FAMP

Я дописал еще одну главу в книжку по ‘Установке и настройке FreeBSD+apache+mysql+php+phpmyadmin‘, которую и выложу сегодня.

Вот новые разделы в книжке:

  • Как поставить пароль на директорию в apache

    • Все в конфигурационном файле
    • Гибкий вариант при помощи .htaccess
    • Как создать и поменять .htpasswd, файл паролей apache
    • .htaccess и .htpasswd
    • Что следует проверить, если пароль не запрашивается
  • Как ограничить доступ только с определенных IP
    • Все в конфигурационном файле
    • Гибкий вариант при помощи .htaccess
    • Allow from
    • Deny from
    • Order allow,deny
    • Order deny,allow
    • Что необходимо для работы?

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Создание пакета из порта

Сталкивались с ситуацией, когда нужно перенести установленную программу с одного компьютера на другой?

При этом вы ее установили из портов (/usr/ports) и сделали много специфичных настроек при компиляции?

Когда это нужно?

Очень часто  нет охоты и желания пересобирать порт(port) на другой машине. А иногда это даже не возможно.  Скажем, собрали вы порт на тестовой машине, у которой есть выход в интернет, а поднять реальную систему нужно уже внутри защищеной сети, где никакого выхода в интернет нет.

Еще бывает ситуацию, когда вам конкретно этот софт нужно распространить на большое количество машин одновременно  не компилировать же его на каждой из них?

Из такой ситуации есть выход, досточно на исходной машине создать бинарную версию порта - пакет (package).

Ограничение

Архитектура исходной машины и той, на которую вы устанавливаете порт,  должны совпадать. Если они разные - то тоже можно собрать порт под другую архитектуру - но это существенно более сложный и редкий вариант и здесь мы его не рассматриваем.

Как собрать собственный пакет (package)?

После того, как вы скомпилировали и установили порт, нужно выполнить следующие команды

Узнаем точную версию порта, которую мы поставили (в нашем случае это будет apache сервер)

> ls -ald /var/db/pkg/apache*
drwxr-xr-x  2 root  wheel  512 Feb 25 17:55 /var/db/pkg/apache-2.0.63_2
>

Нам нужно именно полное название установленной версии - вместе с версией ПО  и версией порта. В нашем случае это apache-2.0.63_2

Запускаем сборку пакета:

> pkg_create -b /var/db/pkg/apache-2.0.63_2

либо просто

> pkg_create -b apache-2.0.63_2

Эта команда тихо-мирно поработает сама по себе и соберет вам в текущей директории файл

> ls -al apache-2.0.63_2.tbz
-rw-r–r–  1 nm  nm  2442690 Mar 25 06:50 apache-2.0.63_2.tbz

Этот файл можно спокойно переносить на другие компьютеры и устанавливать командой

pkg_add  apache-2.0.63_2.tbz

Зависимости, зависимости …

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

> grep @pkgdep /var/db/pkg/apache-2.0.63_2/+CONTENTS
@pkgdep expat-2.0.1
@pkgdep perl-5.8.8_1
@pkgdep libiconv-1.11_1
>

Это название еще трех пакетов, от которых зависит ваша сборка apache сервера. Без них он будет отказываться инсталлироваться на другой машине. Поэтому соберите их тоже в виде пакетов

pkg_create -b expat-2.0.1
pkg_create -b perl-5.8.8_1 # скорее всего это не нужно,
# так как perl инсталлируется при установке системы
pkg_create -b libiconv-1.11_1

Ну, За автоматизацию!

Итак, вы сэкономили себе лишние полчаса времени на установку программы на другом компьютере :)

Поздравляю! Теперь это время можно убить на чтение этого и других блогов.

Полностью автоматический скрипт сборки пакетов –  щелкни на линк и скачай :)

Другой варинт (спасибо, polkan)

1. Узнать полное имя пакета:

pkg_info -xE apache

2. Собрать пакет с зависимостями:

pkg_create -R -b apache-2.0.63_2

и все :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Не помните, устанавливали вы порт или нет?

Не беда, это очень легко проверить - команда

pkg_info  -Ix port_name

Альтернатива этой команде - просто посмотреть в каталог /var/db/pkg, в котором и хранятся все записи об установленых портах.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD - Локальная Безопасность: Ошибка в ядре (FreeBSD-SA-09:06.ktimer)

В седьмой ветке FreeBSD нашли проблемы  с безопасностью.

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

1. Предыстория

В 7.x ветке FreeBSD был введен новый тип таймеров для соответствия realtime расширениям POSIX. Это позволяло каждому процессу иметь несколько разных таймеров и когда они достигали нулевого значения реагировать на это событие.

2. Описание проблемы

Целое число (integer), которое определяет номер таймера с которым хочет работать процесс неправильно проверялось на предельыне значения.

3. Воздействие на систему

Непривелигированый пользователь может перезаписать любую ячейку в памяти ядра. Это может быть использовано для того, чтоб поменять  User ID процесса - чтоб получить привелегии root, для того, чтоб выйти за
пределы тюрьмы :) (jail) или чтоб обойти механизмы безопасности каким-нибудь другим путем.

4. Обходные пути

Обходных путей, как можно это запретить - не существует. Но если у вас на системе нету непривегированых пользователей, которым вы не доверяете - вы можете пока не исправлять эту ошибку - на вас она сильно не влияет.

Хотя на пару с ошибкой в любой сервисе, который работает на этом компьютере и который позволит выполнить   злоумышленнику исполняемый код - может оказаться критической проблемой.

5. Как исправить?

Обновить исходники ядра FreeBSD и перекомпилировать.

Подробнее - http://security.freebsd.org/advisories/FreeBSD-SA-06:09.ktimer.asc

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).