pkg — обновление пакетов

Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.

Примечание: Узнать о том, как во FreeBSD раньше происходило управление бинарными пакетами, и о том, как пользоваться портами, вы можете из заметки Установка и обновление софта во FreeBSD. Не исключаю также, что вас могут заинтересовать статьи Использование FreeBSD на десктопе, версия 2.0 и Памятка по обновлению ядра и мира FreeBSD.

Итак, при первом запуске pkg без параметров вы скорее всего увидите такое сообщение:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:

Отвечаем утвердительно, и ждем, пока pkg установится.

Затем читаем справку:

pkg help

Посмотреть справку по конкретной команде можно так:

pkg help update

Пример, пакеты от которых зависит Webmin

# pkg info -d webmin
webmin-1.870:
 p5-Net-SSLeay-1.82
 p5-Authen-PAM-0.16_2
 python27-2.7.14_1
 perl5-5.24.3
 p5-IO-Tty-1.12_2
#

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

pkg update

Смотрим список установленных пакетов:

pkg info

Обновляем установленные пакеты:

pkg upgrade

Ищем пакет по названию:

pkg search xorg

Установка пакета/пактетов и всех его/их зависимостей:

pkg install xorg
pkg install git-lite vim-lite sudo

Удаляем пакет:

pkg delete xorg

Удаляем пакеты, которые больше не нужны:

pkg autoremove

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

pkg which /usr/local/bin/git

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

pkg info -l mesa-demos

Загружаем базу известных уязвимостей:

pkg audit -F

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

pkg audit

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

pkg check -s -a

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

pkg check -d -a

Удаляем из кэша старые пакеты:

pkg clean

Смотрим статистику:

pkg stats

Запрещаем/разрешаем обновление конкретного пакета:

pkg lock syncthing
pkg unlock syncthing

Посмотреть список «залоченых» пакетов:

pkg lock -l

Откатиться к более старой версии пакета:

sudo pkg remove chromium
sudo pkg install /var/cache/pkg/chromium-51.0.2704.106_2.txz

В целом я хочу сказать, что управление пакетами во FreeBSD стало намного лучше, чем оно было раньше. Прям действительно есть нормальный пакетный менеджер, не только не уступающий линуксовым Yum и Apt, но в чем-то даже и превосходящих их. Например, интерфейс у pkg прост, понятен и единообразен, чего уж точно нельзя сказать об Apt. Пакеты весьма свежие. Например, когда я разбирался с pkg, с его помощью можно было установить последний на тот момент Go версии 1.5, а в Ubuntu из коробки был доступен только древнейший Go 1.2. Аналога pkg audit в мире дистрибутивов Linux мне вот так с лету и вовсе неизвестно.

Все подробности, как обычно, в man pkg. А как вам новый пакетный менеджер FreeBSD?

Источник

 

OpenSSL дополнительные настройки

После установки OpenSSL, перед скачиванием пакетов выдается сообщение(предупреждение):

/!\ WARNING /!\

You have security/openssl installed but do not have
DEFAULT_VERSIONS+=ssl=openssl set in your make.conf

Для исправления добавляем нужную запись в make.conf командой:

echo 'DEFAULT_VERSIONS+=ssl=openssl' >> /etc/make.conf

Читать далее «OpenSSL дополнительные настройки»

NTPd настройка синхронизации времени

На Hyper-v моя Freebsd резво убегает вперед, на несколько часов в день, поэтому решено настроить синхронизацию времени с внешними серверами, выбрал Саратовские).

В данной статье научимся с вами настраивать ntp клиент и сервер на примере freebsd (FreeBSD vpn 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64)

1) Выставляем нужный часовой пояс (например, Москва)

portsnap fetch update
cd /usr/ports/misc/zoneinfo && make install clean
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

2) Для включения ntpdate во время загрузки добавим в файл /etc/rc.conf строки

ntpdate_enable=»YES»
ntpdate_flags=»-b 0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org»

3) В /etc/ntp.conf приводим к виду

restrict 127.0.0.1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict default ignore
erver ntp5.stratum2.ru burst
server ntp1.stratum2.ru burst
server 2.europe.pool.ntp.org iburst
server 3.europe.pool.ntp.org iburst
driftfile /var/db/ntp.drift
logfile /var/log/ntp.log

Читать далее «NTPd настройка синхронизации времени»

Пересборка ядра без GENERIC

Если после установки системы, как у меня, у вас каталог /usr/src/ пуст, тогда придется воспользоваться исходными файлами с официального сайта.

1. Устанавливаем пакет subversion

# cd /usr/ports/devel/subversion
# make install clean

теперь доступна команда svn, используется для извлечения чистой копии исходных кодов(с официльного сайта(репозитория) в локальный каталог(вашей машины). Для просмотра репозиториев через браузер используйте http://svnweb.FreeBSD.org/.

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

2. Заливаем к себе файлы с репозитория

# rm -rf /usr/src 
# svn checkout https://svn0.us-west.FreeBSD.org/base/releng/11.1/ /usr/src

, где первой строкой чистим папку, если в ней что-то еще есть, согласно предупреждению
svn0.us-west.FreeBSD.org   — репозиторий
base        — раздел с основными системными файлами FreeBSD
releng      — ветка с исправлениями(bug-fix и security patches для соответствующего RELEAZE)
11.1  — (номер моего релиза)копирую содержимое этого каталога в
/usr/src/    — приемный каталог

Дополнительная информация, которая привела к накоплению вышеизложенной выжимки: Читать далее «Пересборка ядра без GENERIC»

OpenVPN + OpenSSL + FreeBSD, работа над ошибками

При подключении клиентов к серверу ОпенВПН стала выскакивать ошибка.

После прочтения форумов по данной теме, оказалось самым распространенным является ошибка при просроченном файлом отозванных сертификатов clr.pem.

Просмотрел это следующей командой:

openssl crl -inform PEM -in crl.pem -text -noout

Результат:

Смотрим установленную версию openssl с помощью команды openssl version:

openssl version

OpenSSL 1.0.2k-freebsd 26 Jan 2017

Ошибка оказалась в конфиге от старого OpenSSL (1.0.1). В старом конфиге отличаются переменные путей. Заменил на конфиг по-умолчанию от текущей версии и изменил путь к папке с ключами ОпенВПНа. Запустил команду обновления

openssl ca -gencrl -keyfile keys/myserver/ca.key -cert keys/myserver/ca.crt -out keys/myserver/crl.pem -config openvpn-ssl.cnf

здесь myserver — заменить на своё
gencrl — создание списка отозванных сертификатов;
-config openvpn-ssl.cnf — использовать конфигурацию из файла openvpn-ssl.cnf

 

 

Инструмент для визуального сравнения на debian

Пакет kdiff3

KDiff3 сравнивает два или три входящих файла и показывает различия строка за строкой, символ за символом. Имеется автоматическое слияние и встроенный редактор для удобного решения конфликтов при слиянии. KDiff3 позволяет выполнять рекурсивное сравнение и слияние файлов в каталогах.

Installing kdiff3 package on Debian

sudo aptitude install kdiff3

Скачать kdiff3-0.9.98.tar

 

Aptitude менеджер пакетов

  • Aptitude — это менеджер пакетов debian, основанный на Ncurses как Фронтэнд к Apt. Так как Aptitude основан на тексте, то запускается в терминале или CLI (интерфейс командной строки). Aptitude имеет полезные возможности, включающие:

  • простой синтаксис для гибкого поиска по совпадению пакетов
  • пометка пакетов как «установлены автоматически» или «установлены вручную», т.о. эти пакеты могут быть автоматически удалены, когда они больше не требуются

  • предварительный просмотр действий, которые будут необходимы для установки пакетов.
  • отмена действий пользователя
  • отображение изменений, вносимых пакетом
  • AptCLI-like (= apt-get + apt-cache) в режиме командной строки («aptitude install foo»)

  • Централизованное хранилище и (обычно) более умное решение проблем с зависимостями, чем у apt-get

aptitude is also non-fattening, naturally cleansing, and housebroken. It does not, however, have Super Cow Powers, meaning that it does not implement the moo operation, verbosely or otherwise.

Сам пакет: aptitude.

Руководство по aptitude — настоящий кладезь информации. Нет смысла копировать ее сюда, поэтому загляните в него для получения дополнительной информации.

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

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

aptitude

После этого используйте:

  • F10 для доступа к меню и работы с aptitude. Это основная клавиша.
  • ? для получения справки
  • Клавиши ‘вверх’, ‘вниз’, ‘вправо’, ‘влево’ для перемещения
  • Клавишу ‘Enter’ для выделения
  • Клавиши ‘+’ и ‘-‘ для обновления/установки и удаления пакетов
  • Клавишу ‘g’ для просмотра/подтверждения действий
  • ‘q’ для выхода — это также закроет открытое в данный момент окно (‘g’ перемещает вперед, ‘q’ — назад)

Обычно aptitude в текстовом пользовательском интерфейсе используется следующим образом: запустить aptitude; нажать ‘u’ (обновить список доступных пакетов); нажать ‘U’ (отметить все пакеты, которые возможно обновить, к обновлению); (поискать/выбрать что-то еще для установки, по выбору); нажать ‘g’ (просмотреть действия, которые будут выполнены и, при необходимости, откорректировать их) ; нажать ‘g’ еще раз (начать загрузку).

Иногда, в случае, если необходимо разрешить конфликт, вы обнаруживаете, что сделали ошибку; в этом случае можно использовать ‘Отменить все незаконченные действия’ в меню ‘Действия’, что даст вам возможность изменить выбор.

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

  • ‘a’ явно разрешает действие (повторное нажатие отменяет разрешение)
  • ‘r’ запрещает действие
  • ‘g’ again goes ahead with pending actions

Посетите Доступ к информации о пакете для понимания смысла букв в строке синопсиса (к примеру, ‘i’ означает «будет установлен», ‘p’ — «не установлен», и т.д.)

Использование вручную от суперпользователя

Помимо прочего, можно использовать aptitude так же, как и apt-get:

Обновить список пакетов:

# aptitude update

Обновить имеющиеся пакеты:

# aptitude safe-upgrade

Установить пакет foo:

# aptitude install foo

Удалить пакет bar:

# aptitude remove bar

Вычистить пакет foo:

# aptitude purge foo

Функции для обычных пользователей

Поиск пакетов, содержащих в своем названии foo:

$ aptitude search foo

Лично я все еще использую apt-cache search foo для поиска – aptitude search foo работает медленнее. Но вам стоит попробовать aptitude search foo. Вы наверняка заметите отличие вывода от apt-cache, иногда, это может быть полезно для поиска пакета для того, чтобы узнать, установлен ли он.

Показать информацию о пакете foo:

$ aptitude show foo

Как обновить свой дистрибутив

Обновление от одного стабильного выпуска к другому (к примеру, от Lenny к Squeeze) можно произвести, следуя release notes для вашей архитектуры. Большинству пользователей с 32-битными системами пригодятся Release Notes for Intel x86, а большинству пользователей 64-битных систем — Release Notes for AMD64.

Обычно использование full-upgrade не рекомендуется (если только вы не используете sid, в этом случае вы вряд ли будете читать эту статью).

Небольшие обновления выпусков (например, с lenny 5.0.1 до lenny 5.0.2) и обновления, связанные с безопасностью, можно произвести с помощью safe-upgrade.

  • Определите версию Debian, используемую вами в настоящий момент:
$ cat /etc/debian_version

Пример обновления с etch 4.0r1 до 4.0r2 … и т.д., или же обновления, связанного с безопасностью:

# aptitude update
# aptitude safe-upgrade

переход с apt-get на aptitude

Action

apt-get command

aptitude command

 

Установить foo

apt-get install foo

aptitude install foo

 

Поиск foo

apt-cache search foo

aptitude search foo

 

Удалить foo

apt-get remove foo

aptitude remove foo

 

Вывести обратные зависимости

apt-cache rdepends foo

aptitude search ~Dfoo

 

Вывести информацию о приоритетах для foo

apt-cache policy foo

aptitude versions foo

 

Загрузить исходный код foo и собрать бинарный .deb пакет

apt-get source —compile foo

?

Продвинутые поисковые шаблоны

Поиск пакетов, установленных не из stable:

aptitude search '?narrow(?installed, !?archive(stable))'

Поиск пакетов, установленных из testing (предполагается, что в вашем списке репозиториев имеются stable и testing):

aptitude search '?narrow(?installed, ?archive(testing) !?archive(stable))'

Смотри также

а также … apt.conf, preferences, sources.list, Aptitude::Parse-Description-Bullets=true, AptitudeTodo

Источник

MC на nas4free 10.x

Оригинал взят у 2gusia в mc на nas4free 10.x

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

Этот вариант советует Даосуке Аояма, разработчик nas4free. C той дополнительной аргументацией, что библиотеки будут каждый раз актуальными. И, соответсвенно, исключён конфликт из-за подсовывания системе древних библиотек.

Итак, поехали

1) Нам надо определиться — куда ставить mc. Я ранее использовал раздел данных на флешке, но позже разочаровался в этой идее. Буду использовать датасет /Ext/Extensions на главном пуле (/mnt/Pool/), где создам папку mc

2) Идем в консоль через putty
mkdir /mnt/Pool/Ext/Extensions/mc
chmod -R 777 /mnt/Pool/Ext/Extensions/mc
cd /mnt/Pool/Ext/Extensions/mc

3)Теперь нам надо создать скрипт.
создаём файл скрипта
nano m-install.sh

Копируем в него следующий текст

#!/bin/sh
pkg update
pkg clean -ay
pkg fetch -y mc libslang2 libssh2
cd /
tar -xf /var/cache/pkg/mc-*-*.txz
tar -xf /var/cache/pkg/libssh2-*-*.txz
tar -xf /var/cache/pkg/libslang2-*-*.txz
rm /+*

4) Даём права на исполнение
chmod 744 m-install.sh

5) Запускаем
./m-install.sh

6) Вызываем mc и лицезреем знакомый синенький экран.
mc

mc

7) На этом я останавливаюсь — не так часто мне mc нужен. При необходимости — запущу скрипт mc-install. И он проживёт до следующей перезагрузки. Но если вам mc нужен постоянно — Задаём в System|Advanced|Command scripts как Postinit скрипт
/mnt/Pool/Ext/Extensions/mc/m-install.sh

И перегружаемся, чтобы убедиться, что всё ОК.
Прим. Русские буквы читаются нормально. Если в клиенте выставить кодировку UTF-8
PuttyUTF8

 

Управление пользователями во FreeBSD

Автор: atrium.

Полномочия пользователей и файлов,
принадлежащих им, формирует концепцию ОС UNIX. Так как FreeBSD является
многопользовательской ОС и принадлежит к семейству ОС относящихся к
общему названию UNIX, поэтому умение грамотно управлять пользователями
позволит избежать различных неприятностей.

Учётные записи пользователей и групп хранятся в двух файлах:

/etc/master.passwd – в данном файле хранятся учётные данные пользователей и их пароли в    зашифрованном виде.
/etc/group – файл, отвечающий за группы

В FreeBSD используется технология теневых паролей – это когда системные данные пользователей разделены на два файла:

1.файл /etc/master.passwd в котором находятся пароли в зашифрованном виде, он имеет права только на чтение и запись для пользователя root

2.файл /etc/passwd, созданный с помощью команды pwd_mkdb(8) (генерация базы с паролями) из файла /etc/master.passwd, он имеет права на чтение для группы и других пользователей, в нём пароли заменены на *. Также с помощью команды pwd_mkdb(8) из файла /etc/master.passwd создаются два файла — /etc/pwd.db и /etc/spwd.db
(индексированные базы данных), они предназначены для ускорения поиска, в
случае большого количества системных пользователей. Файл /etc/spwd.db является секретным как и файл /etc/master.passwd и имеет теже права доступа и владельца.

Рассмотрим синтаксис файла  /etc/master.passwd:

 

root:$1$SJSDMXQE$LRpetLGNt5xO8k980r2om.:0:0::0:0:Charlie &:/root:/bin/csh
toor:*:0:0::0:0:Bourne-again Superuser:/root:
daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin

Каждая новая строка в файле описывает пользователя, она содержит в себе столбцы разделённые (:).

Столбцы по порядку:

1.name – логин пользователя, который будет использоваться при входе в систему
2.password – зашифрованный пароль в файле /etc/master.passwd и * в /etc/passwd
3.uid – уникальный идентификатор пользователя.
4.gid – уникальный идентификатор группы.
5.class – класс настроек и установок, который берётся из файла /etc/login.conf
6.change – время жизни пароля, т.е период через который
необходимо сменить пароль. Количество секунд с 1 января 1970. Проверить
на какую дату указывают секунды в поле можно с помощью команды: date –r seconds, где seconds – значение поля.
7.expire – время жизни аккуанта, после прошествия этого периода
времени он заблокируется, 1 января 1970. Проверить на какую дату
указывают секунды в поле можно с помощью команды: date –r seconds, где seconds – значение поля.
8.gecos – общая информация о пользователе
9.home dir – домашний каталог пользователя
10.shell – оболочка, которую будет использовать пользователь

При создании файла /etc/passwd из файла /etc/master.passwd поля class, change, expire удаляются, а пароль заменяется на *.
Поле логина (name) не может начинаться с символа (-), так же не
советуется использовать прописные буквы в имени пользователя и разделять
логин символом (.), что может вызвать проблемы при работе с почтой. В
файле /etc/master.passwd поле password зашифровано, если
поле отсутствует, т.е вместо пароля стоит символ *, то доступ к машине
вы не получите. Для быстрого редактирования файла /etc/master.passwd и без последующего применения команды pwd_mkdb(8) применяется команда vipw(8), это тот же редактор vi(1), поэтому перед применение команды vipw(8) ознакомьтесь с man страницей по vi(1).

Пример:

 

# vipw
root:$1$SJSDMXQE$LRpetLGNt5xO8k980r2om.:0:0::0:0:Charlie &:/root:/bin/csh
toor:*:0:0::0:0:Bourne-again Superuser:/root:
daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin

При использовании (*) в /etc/master.passwd вместо поля password
запрещается авторизация в системе так как символ (*) не может быть
зашифрованным паролем. Например, для временной блокировки пользователя,
можно использовать вместо поля password в файле /etc/master.passwd
такую комбинацию *LOCKED* или добавить такую комбинацию в начало
пароля, если он существует, а при разблокировке просто её удалить, для
этого Вам понадобится команда vipw(8). Для того, чтобы посмотреть как блокировать аккуант с помощью командной строки прочтите man по команде pw(8).
Поле gecos дающее общую информацию о пользователи, содержит в себе следующие поля, разделённые запятой:
name – полное имя пользователя
office – номер офиса
wphone – рабочий телефон
hphone – домашний телефон

Поле home_dir, определяет путь к домашнему каталогу пользователя, владельцем которого он будет являться.
Поле shell, определяет оболочку пользователя, список доступных оболочек для пользователя можно посмотреть в файле /etc/shells.
Для пользователя root изменять текущую оболочку не рекомендуется, т.к в
случае аварии файловая система /usr может быть не примонтирована, в
следствии чего пользователь root не получит доступ к системе.
Если Вы хотите запретить доступ пользователя к системе, замените его оболочку на /sbin/nologin. Данная программа более корректно, чем другие (пр.: /dev/null) обработает попытку входа пользователя.

При добавлении нового пользователя необходимо выбрать уникальное имя (login name) которое не будет встречаться в файле /etc/passwd и /etc/mail/aliases.
Так же имя не должно начинаться с символа (-) и содержать в себе символ
(.), и прописные буквы, так как могут возникнуть непредвиденные
ситуации при работе с почтой. Новый пользователь получает уникальный id –
UID и становится членом группы, имя которой совпадает с именем
пользователя, в которой он будет один. Такая стратегия именования группы
позволяет улучшить безопасность и гибкость при управлении доступом. UID
и имя пользователя(login name) являются уникальными в системе и будут
использоваться при осуществлении контроля доступа к файловой системе.
После добавления пользователя в систему, в его домашний каталог
копируются файлы .profile (выполняется при заходе пользователя в систему), если используется оболочка /bin/sh или .cshrc(при старте оболочки) и .login(при заходе пользователя в систему), если используется оболочка /bin/csh. Все эти файлы копируются из каталога /usr/share/skel.

В файле /etc/group находятся все локальные группы системы.
Данный файл можно редактировать любым текстовым редактором на Ваше
усмотрение, т.е чтобы добавить группу достаточно отредактировать
вышеуказанный файл.
Файл состоит из отдельных строк, столбцы в которых разделены с
помощью специального символа (:). Строка состоит из следующих столбцов
или полей:
group – название или имя группы
password – зашифрованный пароль для группы
gid – уникальный номер группы
member – члены данной группы

В данном файле, каждая строка, начинающаяся с символа (#) является комментарием.
Поле group  является именем группы, которое определяет доступ пользователям к файлам, являющимися членами данной группы. С полем group
ассоциируется поле gid, которое определяет уникальный идентификатор
группы. Два этих поля неразрывно связаны, точно также как имя
пользователя и его UID. Поле password является необязательным, оно редко используется и поэтому символ (*) никак лучше подходит вместо шифрованного пароля. Поле member
содержит членов группы, виде имён пользователей разделённых между собой
с помощью сивола (,) – запятая.  В группе может находится не больше 200
пользователей. Максимальная длина строки в файле /etc/group 1024 символа.

Управление ресурсами пользователя и ограничения.

Управление ресурсами пользователя осуществляется с помощью классов, которые определяются в специальном файле /etc/login.conf,
а также задаются пользователю при его добавлении.  Если для
пользователя не определён какой-либо класс, то ему присваивается класс –
default. Каждый класс имеет набор характеристик в виде имя=значение.
Для ускорения доступа к данным система непосредственно не читает файл /etc/login.conf,  а вместо этого читает файл /etc/login.conf.db, который создаётся специальной командой cap_mkdb(1)

 

cam_mkdb /etc/login.conf

Поэтому после каждого изменения файла /etc/login.conf не забывайте исполнять команду cap_mkdb(1)
Изменить или задать класс пользователю можно в файле /etc/master.passwd, в котором для этого имеется специальное поле class.
Это обсуждалось выше. Пользователь с UID = 0, т.е администратор системы
(root) не имеет действующего класса, к нему применяется запись root в /etc/login.conf или класс default, если запись root отсутствует.
Пользователь может для себя создать индивидуальный файл с настройками ресурсов в домашнем каталоге под названием ~/login.conf, этот файл использует тот же синтаксис, что и файл /etc/login.conf,
но он содержит только запись id с именем «me». В этом файле
пользователь может только уменьшать предоставляемые ему ресурсы, но
никак не увеличивать.
В качестве разделителя полей в файле /etc/login.conf
используется символ (:). Первое поле в файле означает имя класса,
который в последующем будет применяться к тому или иному пользователю.

Каждое поле в файле /etc/login.conf  может принимать следующие значения:
bool – если параметр является булевым, то оно может принимать следующие значения – true или false; Просто запись опции в файле /etc/login.conf без указания явного значения означает – true. Для определения false необходимо явно указать.
file – опция принимает значение в виде  пути к файлу;
program – опция принимает значение в виде пути к исполняемуму файлу или программе;
list – опция принимает значения в виде списка разделённого запятой или пробелом;
path – опция принимает значения путей, разделённых запятой или пробелом. Тильда (~) раскрывается в домашний каталог пользователя;
number – числовой значение, в десятичном, шестнадцатиричном или восьмеричном виде.
string – в виде строки;
size – размер. По умолчанию принимается в байтах. Может принимать следующие суффиксы для обозначения единиц размеров:
b – байты
k – килобайты
m – мегабайты
g – гигабайты
t – терабайты
Возможно объединение значений с указанием соответствующих суффикосв: 1m30k
time – период времени, по умолчанию выраженный в секундах. В качестве суффикса используются следующие обозначения:
y – год
w – неделя
d – день
h – час
m – минуты
s – секунды
Возможно объединение значений с указанием соответствующих суффиксов: 2h30m
unlimited – отсутствие ограничений

Ограничение ресурсов:

 

Название опции    Тип значения Описание
coredumpsize size Ограничивает размер файла coredump
cputime time Ограничивает время использования процессора
datasize size Максимальный размер данных
filesize size Максимальный размер файла. Запрещает создавать файлы больше указанного размера
maxproc number Максимальное число процессов которые может создать пользователь
memorylocked size Максимальный размер в core memory котрую может заблокировать процесс
memoryuse size Максимальный размер памяти которую может использовать процесс
openfiles number Максимально количество файлов которые может открыть каждый процесс
sbsize size Максимально разрешённый размер сокетбуфера
vmemoryuse size Максимально разрешенный размер виртуальной памяти для каждого процесса
stacksize size Максимальный размер стека


Ресурсы могут ограничиваться как мягкими, так и жёсткими
ограничениями, разница между ними состоит  в том, что жёсткие
ограничения пользователь не сможет увеличивать, а мягкие сможет, но не
больше чем жёсткое значение. Для обозначения мягких и жёстких
ограничений используются специальные суффиксы –max и –cur. Пр: filesize-max

Окружение пользователя:

 

Название опции    Тип значения    Дефолт    Описание
charset    string Устанавливает значение переменной окружения $MM_CHARSET. Пр: KOI8-R
hushlogin    bool    false    Разрешает (false) показывать файл /etc/motd при загрузке или запрещает (true). Тоже самое что присутствие файла ~/.hushlogin в домашнем каталоге.
ftp-chroot    bool    false    Делать chroot(2) пользователя в его домашнем каталоге при заходе по FTP. Применительно только к стандартному демону ftpd(8).
ignorenologin    bool    false    Логин не блокируется nologin.
label    string Политика MAC (maclabel(7)) применяемая к пользователю.
lang    string Устанавливает значение переменной окружения $LANG. Пр: ru_RU.KOI8-R
manpath    path Определяет пути поиска man страниц
nocheckmail    bool    false    Показывать состояние почтового ящика при заходе пользователя в систему.
nologin    file Если данный файл существует то отображается его содержимое при заходе в систему и сессия закрывается. Можно указать данную опцию в классе для пользователя и заблокировать для него вход в систему если даже у него в файле /etc/master.passwd установлена оболочка.
path    path Определяет пути поиска выполняемых файлов или программ.
priority    number Определяет первоначальный приоритет пользователя (nice(1)).
requirehome    bool    false    Требуется ли пользователю рабочий домашний каталог. Если его нет то пользователь не сможет войти в систему.
setenv    list Устанавливает переменные окружения в виде переменная=значение разделённые запятой
shell    prog Оболочка пользователя. Имеет приоритет над оболочкой указанной в файле /etc/master.passwd.
term    string Определяет тип терминала.
timezone    string Устанавливает значение переменной окружения $TZ. Зоны находятся /usr/share/zoneinfo.
umask    number    022    Определяет права на создаваемые файлы. Права рассчитываются вычитанием маски из 666 а на каталог из 777.
welcome    file    ./etc/motd    Файл приветствия который показывается при заходе пользователя в систему.



Авторизация пользователя:

 

Название опции    Тип значения    Дефолт    Описание
copyright    file Дополнительный файл содержащий информацию о кооперайтах
host.allow    list Список удалённых хостов с которых пользователи данного класса могут заходить на машину.
host.deny    list Список удалённых хостов с которых пользователи данного класса не могут заходить на машину.
login_prompt    string Строка выводимая при запросе логина login(1)
login-backoff    number Определяет величину задержки умноженную на 5 секунд между неправильными логинами после того как исчерпаются попытки входа параметр ниже. Применимо к неудалённому терминалу.
login-retries    number    10    Количество разрешённых неправильных попыток входа прежде чем логин будет признан неудачным.
passwd_format    string Формат в котором будет шифроваться новый пароль. Значения которые можно использовать – ‘md5’ ‘blf’ ‘des’. Советую по умолчанию использовать формат шифрования – ‘blf’ так как это наиболее криптостойкий алгоритм.
passwd_prompt    string Приветствие для пароля.
times.allow    list Список периодов времени в течение которых заходить в систему можно
times.deny    list Список периодов времени в течение которых заходить в систему запрещено
ttys.allow    list Список терминалов или групп терминалов которые пользователь с данным классом может использовать. Группы терминалов указаны в файле /etc/ttys(5)
ttys.deny    list Список терминалов или групп терминалов которые пользователю с данным классом запрещено использовать. Группы терминалов указаны в файле /etc/ttys(5)
warnexpire    time Период времени за который необходимо предупреждать пользователя об истечении срока действия учётной записи.
warnpassword    time Период времени за который необходимо предупреждать пользователя об истечении срока действия пароля.


В опциях host.allow и host.deny  разделителем хостов является запятая.

В опциях times.allow и times.deny записи разделяются запятой. Значения периодов времени записываются в 24 –х часовом формате, отделённых друг от друга дефисом.
Для примера: MoThSa0200-1300 Данная запись
расшифровывается следующим образом: доступ пользователю разрешён по
понедельникам, четвергам, субботам в период с 2 –ч часов ночи до часу
дня. Если обе опции в пользовательском классе отсутствуют, то доступ
разрешается в любое время. Если период времени разрешённый в опции times.allow запрещается периодом времени в файле times.deny, то приоритет имеет опция times.deny.

В опциях ttys.allow и ttys.deny содержаться записи tty устройств, разделённые запятой (без префикса /dev/) и список ttygroups (смотрите getttyent(3) и ttys(5))
к которым пользователь данного класса имеет или не имеет доступ. Если в
опции нет ни одной записи, то пользователь имеет неограниченный доступ.

Параметры пароля такие как минимальная длинна (minpasswordlen) и
параметр отвечающий за предупрждение, если пользователь вводит пароль
только в нижнем регистре (minpasswordcase) не поддерживаются, для этих
ограничений применяется pam модуль pam_passwdqc(8).

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

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

pw(8) – создание, удаление, изменение, отображение пользователей и групп;
adduser(8) – интерактивное добавление нового пользователя;
rmuser(8) – удаление пользователя из системы;
id(1) – отображение имени пользователя, UID и групп в которых он состоит с указанием их GID;
finger(1) – отображает информацию о системном пользователе;
users(1) – показывает список текущих пользователей;
who(1) – показывает тех кто находится в системе;
whoami(1) – показывает эффективный id пользователя соответствующий имени;
last(1) – показывает когда пользователь пользовался терминалом;
lastlogin(8) – показывает информацию о последнем использовании терминала;
lastcomm(1) – показывает список последних выполняем команд пользователем;
ac(8) – показывает время, которое пользователь находился в системе;
sa(8) – показывает статистику по пользователям;
passwd(8) – смена пароля пользователю;
chpass(1) – смена пароля пользователя;
chfn(1) – изменение пользовательских данных;
groups(1) – показывает кто в каких группах состоит;
chgrp(1) – изменение группы;
chkgrp(8) – проверка синтаксиса файла групп;

Для полноценного использования команд lastcomm(1), sa(8)
Вам необходимо включить учёт используемых ресурсов. Учёт используемых
процессами ресурсов представляет собой метод защиты, при котором
администратор может отслеживать использование системных ресурсов и их
распределение между пользователями для нужд системного мониторинга и
минимального отслеживания команд пользователей.
Для того что бы включить систему учёта используемых ресурсов Вам необходимо выполнить несколько действий.

1.mkdir /var/account
2.touch /var/account/acct
3.accton /var/account/acct
4.echo 'accounting_enable="YES"' >> /etc/rc.conf


После выполнения 3 действия Вы уже можите использовать команды lastcomm(1), sa(8). Команда accton(8) включает систему учёта используемых ресурсов.

Практика:
(Для более подробной информации о командах обязательно читайте манны)

Использование системы учёта ресурсов, команда lastcomm(1) и sa(8):


fdesktop1# lastcomm root
lastcomm         -       root             ttyp0     0.023 secs Tue May 19 02:25
cron             -F      root             __        0.004 secs Tue May 19 02:25
sh               -       root             __        0.005 secs Tue May 19 02:25
atrun            -       root             __        0.004 secs Tue May 19 02:25
man              -       root             ttyp0     0.032 secs Tue May 19 02:24
sh               -       root             ttyp0     0.019 secs Tue May 19 02:24
more             -       root             ttyp0     0.071 secs Tue May 19 02:24
zcat             -       root             ttyp0     0.025 secs Tue May 19 02:24
man              -       root             ttyp0     0.038 secs Tue May 19 02:24
sh               -       root             ttyp0     0.020 secs Tue May 19 02:24
zcat             -       root             ttyp0     0.030 secs Tue May 19 02:24
more             -       root             ttyp0     0.039 secs Tue May 19 02:24
lastcomm         -       root             ttyp0     0.014 secs Tue May 19 02:24
man              -       root             ttyp0     0.013 secs Tue May 19 02:24
sh               -       root             ttyp0     0.031 secs Tue May 19 02:24


fdesktop1# sa
      73       9.617re        0.03cp        0avio     2804k
       9       3.187re        0.01cp        0avio     1383k   more
      13       3.196re        0.00cp        0avio     4158k   sh
       9       3.197re        0.00cp        2avio     3484k   man
       9       0.026re        0.00cp        0avio     1547k   zcat
       7       0.003re        0.00cp        0avio     2386k   sa
       7       0.002re        0.00cp        0avio     4726k   lastcomm
       5       0.001re        0.00cp        0avio     4516k   ***other
       7       0.001re        0.00cp        0avio     4584k   mv


Добавление нового пользователя в систему, будем использовать команду pw(8):

 

# pw useradd test -s /bin/sh -c "Test users" -m -b /home -e 03-06-2009 -p  02-6-2009

Давайте разберём наше действие:
-s – указывает какой терминал будет использоваться, поле shell
-с – комментарии к созданному пользователю, поле gecos
-e – время жизни аккуанта, поле expire. Формат поля аналогичен опции '-p'
-p – время жизни пароля, поле change. Формат задания даты или времени таков:
dd-mm-yy[yy], где dd – день, mm – месяц, yy[yy] – год. Или используется следующий
формат: +0mhdwoy, где m – минуты, h – часы, d – дни, w – недели, o – месяц, y - год
-m – заставляет создать домашний каталог пользователя и скопировать в него стандартные файлы
и каталога /usr/share/skel
-b – базовая директория в которой будет находится домашний каталог пользователя, поле home_dir
-L – задаёт класс для пользователя из файла login.conf, поле class

Результаты работы, из файла /etc/master.passwd:

 

test:*:1002:1002::40:30:Test users:/home/test:/bin/sh


Более интерактивная команда adduser(8), она имеет конфигурационный файл, в котором вы можите предопределить вводимые данные.

Как видим пользователь у нас не имеет пароля, поэтому не сможет войти в
систему, для того что бы задать пароль используем команду passwd(8):

 

# passwd test
Changing local password for test
New Password:
Retype New Password:


Для более корректного удаления пользователя из
системы используйте команду rmuser(8), данная команда не просто удаляет
пользователя из файла /etc/master.passwd, но и все его данные в
системе:

1.Удаляет пользовательский crontab(1), если он существует
2.Удаляет задания пользователя, созданные командой at(1)
3.Отправляет всем процессам работающим от имени этого пользователя сигнал SIGKILL
4.Удаляет пользователя из файла /etc/passwd
5.Удаляет домашнюю директорию пользователя, включая символические ссылки на домашний каталог
6.Удаляет входящие письма из каталога /var/mail
7.Удаляет все файлы владельцем которых является пользователь из каталогов /tmp, /var/tmp и  /var/tmp/vi.recover
8.Удаляет пользователя из всех группы, в которых он состоит (файл /etc/groups)
9.Удаляет все очереди сообщений, общую разделяемую память, семафоры
владельцем которых является пользователь. (Для справки: все это
интерфейсы межпроцессорного взаимодействия)

Используйте утилиту rmuser(8) с параметром ‘–y’ что бы она не спрашивала подтверждения на удаление.

Пример удаления без опции ‘-y’ и с опцией ‘y’:

 

fdesktop1# rmuser test
Matching password entry:
test:*:1002:1002::0:0:Test users:/home/test:/bin/sh
Is this the entry you wish to remove? y
Remove user's home directory (/home/test)? y
Removing user (test): mailspool home passwd.
fdesktop1# pw useradd test -s /bin/sh -m -b /home -c "Test users"
fdesktop1# rmuser -y test
Removing user (test): mailspool home passwd.


Посмотрим теперь информацию о существующих пользователях, для этого будем использовать каманды id(1), finger(1):

 


fdesktop1# id root
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)


Как видим утилита показывает информацию, к каким группам принадлежит
пользователь. У данной команды есть много полезных опций, поэтому
почитайте манн.

 

fdesktop1# id -P root
root:$1$SJSDMXQE$LRpetLGNt5xO8k980r2om.:0:0::0:0:Charlie &:/root:/bin/csh



fdesktop1# finger root
Login: root                             Name: Charlie Root
Directory: /root                        Shell: /bin/csh
On since Sun May 17 23:10 (MSD) on ttyp0 from 192.168.0.2
New mail received Wed Feb 18 01:21 2009 (MSK)
     Unread since Fri Feb 13 00:52 2009 (MSK)
No Plan.


Давайте теперь узнаем кто сейчас находится в системе, для этого будем использовать команды users(1) и who(1):

 


$ who
root             ttyp0    May 17 23:10 (192.168.0.2)
atrium           ttyp1    May 17 23:19 (192.168.0.2)

$ users
atrium root

Создадим новую группу:


fdesktop1# echo 'test:*:200:atrium' >> /etc/group
fdesktop1# id atrium
uid=1001(atrium) gid=20(staff) groups=20(staff),200(test)


Мы создали новую группу ‘test’ и сразу же добавили в неё пользователя ‘atrium’.

 


fdesktop1# pw groupadd list -M atrium,root
fdesktop1# pw groupshow list
list:*:1002:atrium,root


С помощью прекрасной команды pw(8) мы создали группу 'list’ и добавили в неё пользователя atrium и root. Так же посмотрели созданную группу.

Оффлайн версия:

 

PDF
файл скачан размер размещён примечание
Managment_Users_FreeBSD.pdf
2084 479.4kb 2009-06-04 Оффлайн версия

Источник

Настройка DLNA/UPnP на nas4free

DLNA — его место в домашней сети

Наверное этот путь уже проходило большинство — в доме появляются новые медиа-устройства, растет количество членов семьи потребляющих медиа-контент, распухает сама база фильмов, музыки и фотографий.
При этом каждый строит медиа-инфрастуктуру по-своему. У кого-то это компьютер с TV-OUT, у кого-то нетбук или HTPC. Кто-то расшаривает папки с NAS-а по NFS, кто-то подключает HDD к медиаплееру, кто-то использует возможности Sony PS…
Появляется неразбериха в местах хранения, форматах, кодеках и т.п.
Так, в моем случае оказалось:

  • плазме в гостинной лучше подавать 720p чем FullHD
  • телевизору Sony в детской подключеному по Wi-Fi больше 15Mbit/s лучше не скармливать, H.264 ему нужен максимум Profile 4.1, а файлы на сетевых хранилищах он не видит вообще
  • спутниковый ресивер Openbox не умеет играть звуковые дорожки в DTS, по SMB не тянет больше 30Mbit/s, по NFS-не отображают кириллицу
  • Nokia Lumia и iPhone вообще ограниченны везде и всюду

В общем, единственным вариантом сдружить весь этот зверинец между собой — это использование DLNA сервера.
Теоретически — он и контент из разных мест в одиное дерево папок сведет, и разрешение подгонит и совместимость кодеков проверит и при необходимости перекодирует. Красота…

Всем привет! Хоть это действие и простое, но все же рассмотрим его, так как появляются вопросы на тему — как настроить dlna на nas4free?.

Содержание:

1. Настройка Fuppes на nas4free

2. Настройка MiniDLNA на nas4free

3. Заключение

Само по себе все очень просто. Для начала заходим в WebGui нашего nas4free. Вверху выбираем «Службы->DLNA/UPnP»

Тут у нас есть 2 варианта: «Fuppes» и «MiniDLNA«. Из этих двух мне больше всего нравится Fuppes. Он меньше глючит, практически никогда не отваливается и «кушает» больше форматов. Единственный его минус — он автоматически не обновляет базу файлов, это приходится делать вручную, но это не так уж и напряжно (лично для меня).

Настройка Fuppes на nas4free

1. Активируем выбранный dlna сервер.

2. Пишем имя, с которым он будет «светиться» в сети

3. Порт (сетевая карта), по которой будет работать наш сервер

4. Порт — оставляем «По умолчанию»

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

6. Выбираем папки, которые будет проверять dlna сервер

7. Профиль — меня устраивает по умолчанию, если ваше устройство не будет «видеть» сервер, то тогда стоит поиграться, повыбирать разные профили

8. Адрес, по которому надо будет заходить на Fuppes для обновления библиотеки

9. Сохраняем и перезагружаем DLNA сервер. Через минуту можем идти и с нашего устройства и проверять корректность настройки.

Все, Fuppes готов к работе!

Настройка MiniDLNA на nas4free

Для включения MiniDLNA необходимо выключить Fuppes, сохранить и перезагрузить dlna-сервер и перейти на вкладку MiniDLNA. Тут настройки практически аналогичные:

1. Имя, которое отображается в сети

2. Интерфейс, с которого идет вещание dlna-сервера

3. Порт, на котором он работает

4. Как часто сервер сообщает о себе в сеть устройствам

5. Каталог, где хранятся файлы настроек

6. Папку, которую просматривает MiniDLNA

7. Как отображаться файлы. Мне лично больше нравится — Просмотр папки.

8. Инфо вполне хватает, если вы не хотите заниматься debug’ом

9. Адрес, на котором можно посмотреть статус MiniDLNA сервера

10. Сохранение и перезагрузка.

Все, на этом простая настройка MiniDLNA сервера завершена.

Заключение

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

P.S.: Если у вас, например, активирован Fuppes, то при попытке перейти на вкладку MiniDLNA вы увидите вот такое предупреждение:

Перед тем, как переходить к настройкам отличного от активированного сервера — необходимо снять галочку «включить» на активированном dlna сервере.

как пользоваться этим Fuppes

Как и любым DLNA/UPnP сервером. Нужен UPnP клиент. Например, у меня планшет с соотв софтом, ресивер. Многие телевизоры (но у меня такого нет)

На этом клиенте, включённом в локальную сеть, надо сделать поиск медиасерверов. Он покажет список, среди них — Fuppes. Тычем в него — открываются ресурсы, которые он предоставляет клиентам.

Источник