Управление пользователями во 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:

 

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

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

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).

Пример:

 

При использовании (*) в /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)

 

Поэтому после каждого изменения файла /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)
Вам необходимо включить учёт используемых ресурсов. Учёт используемых
процессами ресурсов представляет собой метод защиты, при котором
администратор может отслеживать использование системных ресурсов и их
распределение между пользователями для нужд системного мониторинга и
минимального отслеживания команд пользователей.
Для того что бы включить систему учёта используемых ресурсов Вам необходимо выполнить несколько действий.


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

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

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


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

 

Давайте разберём наше действие:
-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:

 


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

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

 


Для более корректного удаления пользователя из
системы используйте команду 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’:

 


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

 


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

 


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

 

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


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

 


С помощью прекрасной команды 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. Тычем в него – открываются ресурсы, которые он предоставляет клиентам.

Источник

Памятка по командам Freebsd

/etc/rc.d/lighttpd restart

/etc/rc.d/ipfw restart

#перезапуск службы вебсервера(nas4free), сетевого экрана и т.п. Или stop, start.

 

pwd

#показать директорию, в которой сейчас находимся

cat /etc/passwd

#вывести список пользователей в системе. Или так:

grep -v “^#” /etc/passwd|awk -F : ‘{print $1}’|sort #вывести список пользователей

grep -v “^#” /etc/passwd|awk -F : ‘{print $7″\t”$1}’|sort #вывести доступ к шеллам SSH и пользователей

pw group show -a

#вывод всех групп

pw groupshow группа
#отобразить пользователей группы (Группы это механизм для контроля доступа к ресурсам на основе GID пользователя вместо его UID)

id root

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

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

 Устройства и ядро

cat /var/run/dmesg.boot
less /var/run/dmesg.boot

Отобразить сообщения ядра при загрузке системы. Файл /var/run/dmesg.boot содержит информацию о текущем ядре, процессе его запуска и список обнаруженных ядром устройств.

Содержание

Справка

man [номер секции] страница

Отобразить страницу справки.

man man

apropos ключевое-слово
whatis ключевое-слово
man -k ключевое-слово
man -f ключевое-слово

Поиск по страницам справки. whatis и man -f – поиск слова целиком. apropos и man -k – поиск части слова.

man apropos
man whatis
man man

info [раздел] [подраздел]

Чтение документации в формате Info.

Пользователи и группы

rmuser пользователь

Удалить пользователя.

man rmuser

passwd [пользователь]

Сменить пароль пользователя.

Если пользователь не задан, сменить свой пароль.

man passwd

pw lock пользователь

Заблокировать пользователя.

pw unlock пользователь

Разблокировать пользователя.

man pw

vipw

Открыть файл паролей в текстовом редакторе.

Будет запущен редактор, заданный в переменной окружения EDITOR, по умолчанию vi. В скрипте запуска командной оболочки: “/root/.cshrc“, в строке: “setenv EDITOR“, можно задать другой редактор, например ее или mcedit.

man vipw

pw groupadd группа

Создать группу.

pw groupdel группа

Удалить группу.

pw groupmod группа -m пользователь1,пользователь2

Добавить пользователей в группу.

pw groupmod группа -d пользователь1,пользователь2

Удалить пользователей из группы.

pw groupshow группа

Отобразить пользователей группы.

man pw

id пользователь

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

man id

Устройства и ядро

cat /var/run/dmesg.boot
less /var/run/dmesg.boot

Отобразить сообщения ядра при загрузке системы. Файл /var/run/dmesg.boot содержит информацию о текущем ядре, процессе его запуска и список обнаруженных ядром устройств.

kenv

Отобразить параметры загрузки ядра, модель материнской платы и версию BIOS.

man kenv

dmidecode

Отобразить информацию из DMI/SMBIOS о материнской плате, процессоре и памяти.

Требуется установка порта dmidecode.

man dmidecode

devinfo -r

Дерево устройств с информацией об используемых ресурсах (IRQ, DMA, Memory).

devinfo -u

Список устройств с группировкой по типу ресурса.

man devinfo

pciconf -lcv

Информация о PCI устройствах.

man pciconf

vmstat -i

Информация о количестве прерываний (IRQ) и использующих их устройств.

Полезно для решения проблемы высокой нагрузки процессора обработчиками прерываний (% interrupt, отображаемый командой top).

man vmstat

camcontrol devlist
atacontrol list

Список подключенных SCSI/ATA дисков.

camcontrol identify ada0
atacontrol cap ad0

Информация о SCSI/ATA диске.

camcontrol negotiate ada0 -v
atacontrol mode ad0

Текущий режим обмена данными с диском.

man camcontrol
man atacontrol

smartctl –scan

Список устройств поддерживаемых smartctl.

Требуется установка порта smartmontools.

smartctl -i /dev/ada0

Информация о дисковом устройстве и поддержке SMART.

smartctl -s on /dev/ada0

Включение SMART на устройстве.

smartctl –attributes /dev/ada0

Получить SMART-атрибуты с устройства.

smartctl -a /dev/ada0
smartctl -x /dev/ada0

Отобразить всю доступную smartctl информацию об устройстве.

man smartctl
Настройка постоянного мониторинга

usbconfig

Управление USB устройствами. Версия FreeBSD 8 и выше.

man usbconfig

usbdevs -dv

Информация о USB устройствах. Версии FreeBSD 7 и более ранние.

man usbdevs

acpiconf -i battery0

Информация о батарее ноутбука.

man acpiconf

cu -l cuadN

Подключение терминалом к устройству на COM-порте N. Для завершения сессии ввести “~.” с новой строки.

man cu

kldstat

Список динамически загруженных драйверов.

kldstat -v -n kernel

Список драйверов, статически скомпилированных в ядро.

man kldstat

kldload драйвер1 драйвер2 …

Загрузить драйверы.

Для постоянной загрузки драйвера при старте системы, необходимо добавить параметр: драйвер_load=”YES” в /boot/loader.conf.

man kldload
man loader.conf

kldunload драйвер1 драйвер2 …
kldunload -i id1 id2 …

Выгрузить драйверы с заданными именами или идентификаторами.
-f – выгрузить драйвер принудительно, в случае если он используется.

man kldunload
FreeBSD. Подробное руководство: Модули ядра

sysctl -a

Отобразить список переменных ядра.
-d – отображать описания переменных, вместо их значений.

sysctl переменная
var=sysctl -n переменная

Отобразить значение переменной ядра. Либо задать значение переменной скрипта.

vidcontrol -i mode | more
vidcontrol MODE_режим

Задать разрешение экрана физической консоли.
-i mode – отобразить список доступных видеорежимов.

Для автоматической смены разрешения при старте системы, необходимо задать параметр allscreens_flags="MODE_режим" в /etc/rc.conf

Руководство FreeBSD: Виртуальные консоли и терминалы
man rc.conf

vidcontrol -P -H < /dev/ttyv0

Получить содержимое первой физической консоли.
-H – включая буфер истории.

Для записи сообщений выводимых на консоль в лог-файл, необходимо раскомментировать строчку в /etc/syslog.conf:

Создать лог-файл и задать права доступа:

man vidcontrol
man syslog.conf

Сеть

ifconfig

Отобразить список сетевых интерфейсов, соответствующие им IP и MAC-адреса, статус и параметры подключения.

ifconfig ifn inet 192.168.0.1 netmask 255.255.255.0
ifconfig ifn inet 192.168.0.1/24

Задать IP-адрес и маску сети для интерфейса ifn. Адрес действителен до перезагрузки системы.

Постоянный адрес задается в /etc/rc.conf строкой:

ifconfig ifn inet 192.168.0.2 netmask 255.255.255.255 alias
ifconfig ifn inet 192.168.0.2 netmask 0xffffffff add

Задать дополнительный IP-адрес для интерфейса ifn. Если дополнительный адрес находится в той же подсети, что и основной адрес, в качестве маски подсети задаем: 255.255.255.255.

Постоянный адрес задается в /etc/rc.conf параметром ifconfig_интерфейс_aliasN. Где N – порядковый номер дополнительного адреса:

man rc.conf
Руководство FreeBSD: Настройка карт сетевых интерфейсов
FreeBSD. Подробное руководство: Настройка подключения к Ethernet

ifconfig ifn inet 192.168.0.2 -alias
ifconfig ifn inet 192.168.0.2 delete

Удалить IP-адрес для интерфейса ifn.

ifconfig ifn ether 00:1D:7D:E5:E5:EF

Задать MAC-адрес для интерфейса ifn.

Для постоянной подмены MAC-адреса, необходимо создать стартовый скрипт /etc/start_if.интерфейс, и прописать данную команду.

ifconfig ifn media 100baseTX mediaopt full-duplex

Принудительно задать стандарт передачи данных для интерфейса ifn, в случае, если при автосогласовании скорость определена неверно.

Для постоянного переопределения скорости, корректируем параметр ifconfig_интерфейс в /etc/rc.conf:

ifconfig -m ifn

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

ifconfig ifn up

Включить интерфейс ifn.

ifconfig ifn down

Отключить интерфейс ifn.

ifconfig wlan0 create wlandev ath0
ifconfig wlan0 up scan

Создать псевдоустройство wlan0 на базе ath0. Сканировать и отобразить доступные точки доступа Wi-Fi.

man ifconfig

wpa_passphrase ИдентификаторСети [Пароль] > /etc/wpa_supplicant.conf

Создать конфиг для подключения к беспроводной сети: /etc/wpa_supplicant.conf.

Если пароль не задан в параметрах, будет выдан запрос на ввод пароля.

man wpa_passphrase
man wpa_supplicant.conf

ifconfig wlan0 create wlandev ath0
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
dhclient wlan0

1. Создать псевдоустройство wlan0 на базе ath0.

2. Подключиться к беспроводной сети.

Дополнительные параметры для wpa_supplicant:

-B – запуск в фоновом режиме.

-s – отправлять сообщения в syslog вместо текущего терминала.

3. Получить сетевые реквизиты с DHCP-сервера.

Для автоматического подключения при старте системы добавим в /etc/rc.conf следующие параметры:

man wpa_supplicant
man rc.conf
Руководство FreeBSD: Wireless Networking

wpa_cli status

Статус текущего беспроводного подключения.

Для работы команды необходимо настроить интерфейс управления в wpa_supplicant.conf:

man wpa_cli

netstat -r

Отобразить таблицу маршрутов.

man netstat

route add -net 192.168.1.0/24 192.168.2.1

Добавить маршрут к сети 192.168.1.0, маска /24, шлюз 192.168.2.1.

route add -host 192.168.1.123 192.168.2.1

Добавить маршрут к хосту 192.168.1.123, шлюз 192.168.2.1.

route add default 192.168.2.1
route change default 192.168.2.1

Задать шлюз по умолчанию 192.168.2.1.

route del -net 192.168.1.0/24

Удалить маршрут к сети 192.168.1.0, маска /24.

route -n get адрес

Получить маршрут для заданного адреса.

-n – не выполнять реверсный DNS-запрос имени узла.

man route
Руководство FreeBSD: Сетевые шлюзы и маршруты

ping -s 1470 -c 10 адрес

Проверка связи до заданного узла, оценка задержек и потерь.

-s – размер пакета без учета ICMP-заголовка (8 байт для TCP/IPv4).

-c – количество запросов. Если ключ -c не задан, пинг выполняется до остановки вручную по Ctrl+C.

man ping

arping 192.168.0.1

Пинг ARP-пакетами. Полезно если внутрисетевой хост не отвечает на ICMP-запросы.

Требуется установка порта arping.

man arping

traceroute -I адрес

Трассировка маршрута ICMP пакетами до заданного адреса. Если не указан ключ -I трассировка ведется UDP пакетами.

traceroute -P TCP -ep 443 адрес

Трассировка маршрута TCP пакетами на фиксированный порт. Полезно для обнаружения вышестоящих брандмауэров, блокирующих порты.

man traceroute

drill адрес [@DNS-сервер] [типЗаписи]
host [-t типЗаписи] адрес [DNS-сервер]
dig [@DNS-сервер] адрес [типЗаписи]
nslookup [-query=типЗаписи] адрес [DNS-сервер]

Выполнение DNS-запросов.

Начиная с FreeBSD 10, dig и nslookup больше не входят в базовую поставку, но могут быть установлены из порта dns/bind-tools.

man drill
man host
man dig
man nslookup
FreeBSD. Подробное руководство: Основные инструменты DNS

sockstat -l -4

Список открытых портов.

-4 – отображать только порты протокола TCP/IP v4 (не отображать UNIX-сокеты).

-L – не отображать порты, открытые на локальных адресах: 127.0.0.0/8.

-u – отображать только UNIX-сокеты.

sockstat -c -4

Список установленных сетевых соединений.

-4 – отображать только соединения по протоколу TCP/IP v4 (не отображать UNIX-сокеты).

-p порт1,порт2,... – фильтр соединений по заданным портам.

Также отображается пользователь и процесс, установивший соединение.

man sockstat
FreeBSD. Подробное руководство: Открытые порты

netstat -nf inet

Список установленных сетевых соединений и открытых UDP-портов.

-n – отображать адреса и порты в числовом формате.

-f inet – отображать только соединения по протоколу TCP/IP v4 (не отображать UNIX-сокеты).

-x – отображать статистику сокетного буфера и tcp-таймеров.

В полях Recv-Q и Send-Q отображается входящая и исходящая очередь пакетов. Ненулевое значение входящей очереди, сигнализирует о проблеме: локальное приложение не успевает обрабатывать входящий трафик. Наличие исходящей очереди, является нормой, локальное приложение формирует трафик быстрее, чем он отправляется по сети.

netstat -i

Состояние сетевых интерфейсов. Число полученных и отправленных пакетов, количество ошибок и коллизий.

-d – отображать число отброшенных пакетов.

-b – отображать число полученных и отправленных байт.

-h – отображать данные в удобочитаемом формате.

netstat -w секунды [-I интерфейс]

Мониторинг числа полученных и отправленных пакетов, байт, количества ошибок и коллизий в заданном временном интервале.

-w – итервал в секундах.

-I – сетевой интерфейс для мониторинга. Если интерфейс не задан, отображаются суммарные данные по всем интерфейсам.

-q количество – выход после заданного каличества интервалов.

-d – отображать число отброшенных пакетов.

man netstat
UnixSystem: Команда netstat: получение всевозможной информации о состоянии сети

iftop -i интерфейс

Мониторинг текущей загрузки сети.

Данные отображаются в реальном времени в формате: источник, получатель, средняя скорость (бит/с) за последние 2 секунды, 10 секунд, 40 секунд.

Требуется установка порта iftop.

Ключи запуска:

-F 192.168.0.0/16 – считать внешний трафик относительно заданной сети.

-t – текстовый режим вывода, без использования ncurses.

Параметры запуска могут быть заданы в файле конфигурации, путь по умолчанию ~/.iftoprc

Горячие клавиши:

s, d – агрегация по источнику или получателю.

S, D – отображать порты для источника и получателя.

t – режим отображения.

<, >, 1, 2, 3 – Сортировка по источнику, получателю или одной из трех колонок скорости.

P, o – пауза или заморозка отображения.

j, k – прокрутка списка.

q – выход.

man iftop

arp -an
arp хост

Отобразить текущую ARP-таблицу или запись для заданного хоста.

-a – отобразить все записи.

-n – адреса в числовом формате.

-i – на заданном сетевом интерфейсе.

man arp

tcpdump -i интерфейс -n host 192.168.0.1

Перехват и анализ сетевого трафика, для заданного IP-адреса.

-i – сетевой интерфейс для захвата пакетов.

-n – отображать адреса и порты в числовом формате, не выполнять реверсных DNS-запросов.

-e – отображать данные канального уровня (MAC-адрес, протокол, длина пакета).

-A – отображать данные пакета в текстовой форме.

-s размер – число байт, захватываемых из пакета, по умолчанию начиная с FreeBSD 9 – 65535, в предыдущих версиях – 96 байт.

-w файл – запись пакетов в файл. Полученный файл можно просмотреть в Tcpdump или загрузить в Wireshark.

-C размер – максимальный размер сохраняемого файла, при превышении будет создан новый файл со следующим порядковым номером. Размер задается в миллионах байт.

-c число – максимальное количество захватываемых пакетов, выход при превышении заданного количества.

tcpdump -i интерфейс tcp port 80 or 443

Перехват сетевого трафика, по заданным портам.

tcpdump -i интерфейс ether host 11:22:33:44:55:66

Перехват сетевого трафика, для заданного MAC-адреса.

tcpdump -i интерфейс “ether[0:4] >> 8 = 0x112233 or ether[6:4] >> 8 = 0x112233

Перехват сетевого трафика, c фильтром по первым трем байтам MAC-адреса (идентификатору производителя устройства).

ether[0:4] и ether[6:4] – получаем старшие 4 байта MAC-адреса получателя и отправителя.

>> 8 – сдвигаем младший байт.

= 0x112233 – сравниваем оставшиеся 3 байта с искомым адресом: 11:22:33

man tcpdump
Википедия: tcpdump
Фильтры захвата для сетевых анализаторов (tcpdump, Wireshark, Paketyzer)
tcpdump – формат вывода

fetch URL

Загрузить файл по заданному URL.

-o имя – задать имя локального файла.

-n – не сохранять дату модификации файла.

Поддерживаются протоколы: HTTP, HTTPS, FTP.

При работе по HTTPS-протоколу возникнет ошибка: “Certificate verification failed”, необходимо установить пакет корневых сертификатов ca_root_nss, поддерживаемый проектом Mozilla, и создать ссылку в /etc/ssl:

man fetch

axel -a URL [зеркала]

Многопоточная загрузка файла по заданным URL с поддержкой докачки.

-a – отображать однострочный индикатор прогресса.

-n – число потоков загрузки, по умолчанию 4.

-o путь – путь и (или) имя сохраняемого файла

Требуется установка порта axel.

man axel

openssl s_client -connect адрес:порт

Тест SSL/TLS-подключения.

man openssl s_client

ssh [пользователь@]сервер

Установить SSH-подключение к серверу.

-i путь – путь к ключу авторизации.

-p порт – порт для подключения.

Параметры подключения к серверу могут быть заданы в файле конфигурации: ~/.ssh/config, или /etc/ssh/ssh_config.

Для завершения подключения, вводим комбинацию “~.” в новой строке.

SSH также поддерживает форвардинг TCP-подключений и создание VPN-туннелей через защищенное SSH-подключение.

man ssh

scp файл1 файл2 … [пользователь@]сервер:[путь-назначения]
scp [пользователь@]сервер:”файл1 файл2 …путь-назначения

Передача файлов по SSH-протоколу на сервер, или с сервера.

-i путь – путь к ключу авторизации.

-P порт – порт для подключения.

-r – рекурсивное копирование каталогов.

-p – сохранить дату модификации и доступ исходного файла.

-C – использовать gzip-сжатие.

При передаче одного файла с сервера кавычки не требуются.

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

man scp

snmpwalk -v 2c -Cp -c public адрес .iso

Получить всю доступную информацию от SNMP-агента.

-v – версия SNMP-протокола: 1, 2с, 3.

-Cp – отобразить общее число полученных переменных.

-c public – строка сообщества, она же пароль.

Требуется установка порта net-snmp.

man snmpwalk
Сайт проекта: www.net-snmp.org

Samba

Требуется установка порта samba.

testparm

Проверка файла конфигурации.

man testparm

pdbedit -L -v

Получить список пользователей Samba.

-v – отобразить подробную информацию о пользователях.

man pdbedit

smbpasswd -a логин

Добавить пользователя.

Предварительно пользователь должен быть зарегистрирован в системе командой adduser.

smbpasswd -x логин

Удалить пользователя.

smbpasswd логин

Сменить пароль.

smbpasswd -d логин

Отключить пользователя.

smbpasswd -e логин

Включить пользователя.

man smbpasswd

smbclient //server/share -U ‘логин%пароль’ -D ПапкаНаСервере -c ‘prompt off;del *;mput *’ 2>/dev/null

Копирование текущей папки на удаленный SMB сервер, с предварительной очисткой удаленной папки.

2>/dev/null – отключает вывод сообщений при использовании в сценарии.

Требуется установка порта samba-smbclient.

man smbclient

SMB-протокол

Команды входят в базовую поставку FreeBSD, установка пакета Samba не требуется. Подробнее о настройке SMB-клиента читаем FreeBSD. Подробное руководство: FreeBSD и CIFS.

mount -t smbfs -o -E=KOI8-R:CP866 //пользователь@сервер/ресурс /mnt
mount -t smbfs -o -E=KOI8-R:CP866,-I=адрес //пользователь@сервер/ресурс /mnt

Подключить сетевой диск Windows.

-I=адрес – использовать заданный IP-адрес или DNS, минуя разрешение имен NetBIOS.

Подключение производится по устаревшему SMB-протоколу на 139 порт.

man mount_smbfs

smbutil lookup хост

Получить IP-адрес по NetBIOS-имени хоста.

smbutil view //пользователь@хост

Отобразить список сетевых дисков хоста.

Требует ручной загрузки модуля ядра, командой: kldload smbfs.ko

man smbutil

Мониторинг системы

dmesg -a

Отобразить недавние сообщения ядра. -a – отобразить весь буфер сообщений системы, включая записи syslog и сообщения консоли.

man dmesg

systat -ifstat

Мониторинг нагрузки сетевых интерфейсов.

systat -netstat

Мониторинг текущих сетевых подключений.

systat -iostat

Мониторинг загрузки процессора и дисковой подсистемы.

gstat

Мониторинг загрузки дисковой подсистемы.

man gstat
FreeBSD. Подробное руководство: Дисковый ввод-вывод

systat -ip

Мониторинг статистики IP протокола.

systat -vmstat
vmstat

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

man systat
man vmstat
FreeBSD. Подробное руководство: Выявление узких мест с помощью vmstat(8)

w
who

Список активных пользовательских сессий.

man w
man who

last

Список последних пользовательских сессий.

man last

fstat -f /mnt/fs

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

man fstat

lsof

Отобразить все открытые файлы, сокеты, сетевые подключения и открывшие их процессы.

Требуется установка порта lsof.

man lsof

truss command
truss -p PID

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

Смотри также: ktrace, strace, DTrace.

man truss

Процессы

top -P

Мониторинг нагрузки системы и процессов.
-P – раздельное отображение нагрузки для каждого ядра процессора.

man top
FreeBSD. Подробное руководство: Исследование процессора, памяти и операций ввода-вывода с помощью top(1)

atop

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

Требуется установка порта atop.

man atop

ps -ax -l
procstat -a

Отобразить список процессов.

Параметры команды ps:
-a – отображать процессы всех пользователей.
-x – отображать процессы не связанные с терминалами.
-j, -l, -u, -v вывод различного набора столбцов.
-d – отобразить процессы в виде дерева родитель-потомок.
-r – упорядочить список по текущей нагрузке на процессор.
-ww – отображать команду запуска полностью.

ps -lp PID
ps -axl | grep процесс

Отображение информации о процессе c заданным PID или именем.

man ps
man procstat
man grep
FreeBSD. Подробное руководство: Исследование процессов

pgrep -l regexp-шаблон

Найти процессы с именем, соответствующим заданному шаблону. Проверить, запущен ли процесс.
-l – отображать имя процесса в дополнение к идентификатору.

man pgrep

killall имя-процесса
pkill regexp-шаблон

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

man killall
man pkill

kill PID

Отправить сигнал завершения процессу с заданным PID.

man kill

procstat -b -a
procstat -b PID
procstat -b pgrep -a ^процесс$

Отобразить путь к исполняемому файлу процесса.

procstat -c -a
procstat -c PID
procstat -c pgrep -a ^процесс$

Отобразить командную строку запуска процесса.

procstat -f PID
procstat -f pgrep -a ^процесс$

Отобразить список файлов, открытых процессом.

procstat -s PID
procstat -s pgrep -a ^процесс$

Отобразить параметры безопасности процесса: идентификаторы пользователя и группы, umask, флаги.

procstat -t PID
procstat -t pgrep -a ^процесс$

Отобразить потоки процесса.

man procstat
man pgrep

nice -n 20 команда

Выполнить команду с минимальным приоритетом.

man nice

nice +20 команда

Выполнить команду с минимальным приоритетом. Вариант для csh

man csh
FreeBSD. Подробное руководство: Изменение приоритетов с помощью nice

renice приоритет -p PID

Задать приоритет процессу.

Приоритет задается в диапазоне от -20 до 20, отрицательные значения увеличивают приоритет, положительные – уменьшают.

man renice

idprio 15 команда
idprio 15 –PID

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

man idprio

rtprio 15 команда
rtprio 15 –PID

Выполнять команду или процесс в реальном времени.
15 – приоритет среди других процессов реального времени.

man rtprio

Файловые системы

gpart show -p ada0

Отобразить таблицу разделов на диске ada0.
-p – отобразить имена устройств, вместо индексов разделов.

gpart create -s GPT ada5

Создать таблицу разделов формата GPT на диске ada5.

Таблица разделов GUID

gpart add -t freebsd-boot -a 8 -s 64kb ada5
gpart bootcode -p /boot/gptboot -i 1 ada5

Создать загрузочный раздел, -s размером 64Кб, -a 8 – выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.
Записать загрузчик системы, -i – индекс раздела для записи загрузчика.

gpart add -t freebsd-swap -a 8 -s 4gb ada5

Создать swap-раздел, -s – размером 4Гб , -a 8 – выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.

gpart add -t freebsd-ufs -a 8 -s 10gb ada5

Создать UFS-раздел, -s – размером 10Гб, -a 8 – выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.

gpart add -t freebsd-ufs -a 8 ada5

Создать UFS-раздел, занимающий все доступное пространство, -a 8 – выравнивание для дисков Advanced Format в режиме эмуляции 512 байтных секторов.

gpart delete -i 3 ada5

Удалить раздел на диске ada5. -i – индекс раздела.

gpart destroy ada5

Удалить таблицу разделов на диске ada5. -F – вместе с имеющимися разделами.

man gpart
Разметка диска с таблицей разделов MBR

newfs -j -L метка ada5p1

Создать новую файловую систему, оно же форматирование раздела. Все данные на указанном устройстве будут уничтожены.
-U – включить Soft Updates.
-j – включить журналирование Soft Updates (версия FreeBSD 9 и выше), при использовании этого режима в FreeBSD 9.1 не поддерживаются снапшоты, вследствие чего не работает dump для смонтированных файловых систем.
-L – метка тома. Позволяет монтировать файловую систему из /dev/ufs/метка, без привязки к имени контроллера и номеру порта.

man newfs

tunefs -j enable /dev/ada0p2

Задать параметры файловой системы. Файловая система должна быть размонтирована, либо смонтирована в режиме чтения. -n enable – включить Soft Updates. -j enable – включить журналирование Soft Updates (версия FreeBSD 9 и выше), при использовании этого режима в FreeBSD 9.1 не поддерживаются снапшоты, вследствие чего не работает dump для смонтированных файловых систем.

Руководство FreeBSD: Soft Updates

tunefs -L метка /dev/ada0p2

Задать метку для файловой системы. Позволяет монтировать файловую систему из /dev/ufs/метка, без привязки к имени контроллера и номеру порта. Файловая система должна быть размонтирована.Начиная с FreeBSD 7.2, поддерживаются метки на основе уникальных идентификаторах файловых систем, называемых ufsid. Что позволяет монтировать файловую систему из /dev/ufsid/идентификатор, без необходимости присвоения меток.

man tunefs

glabel label метка /dev/ada0p1

Задать метку на уровне GEOM. Работает для swap-раздела, и любых других файловых систем, включая UFS2. Позволяет монтировать файловую систему из /dev/label/метка, без привязки к имени контроллера и номеру порта.

glabel status
glabel list

Получить список меток, ufsid и соответствующих им устройств.

man glabel
Руководство FreeBSD: Метки дисковых устройств

dumpfs ada0p2 | more

Отобразить параметры файловой системы.

man dumpfs

fsck /
fsck ada0p2

Проверка файловой системы, исправление ошибок. -y – отвечать “да” на все запросы (лечить всё). -n – отвечать “нет” на все запросы.

man fsck
FreeBSD. Подробное руководство: «Грязные» диски

fsdb -r /dev/ada0p2

Низкоуровневое редактирование файловой системы. Использовать с осторожностью, можно убить файловую систему. -r – запуск в режиме чтения, команды модификации будут недоступны.

man fsdb

mount

Отобразить смонтированные устройства и параметры монтирования.
-p – вывод в формате fstab.
-v – вывод дополнительной информации о файловых системах.

mount -ufr /usr

Перевод смонтированной файловой системы в режим чтения.

mount -t msdosfs -o -L=ru_RU.KOI8-R,-D=CP866 /dev/da0 /mnt

Монтировать флешку в формате FAT32.

man mount_msdosfs

ntfs-3g /dev/da0s1 /mnt

Монтировать NTFS-раздел, на чтение и запись. Начиная с версии 2009.1.1, перекодировка кириллицы в KOI8-R больше не поддерживается. Настройка UTF-8 в FreeBSD.

Требуется установка порта fusefs-ntfs и запуск демона fusefs.

man ntfs-3g

umount /mnt

Демонтировать устройство.
-f – демонтировать принудительно, если устройство используется.

man umount

mount -t cd9660 -o -C=KOI8-R /dev/mdconfig -f образ.iso /mnt
mount -t udf -o -C=KOI8-R /dev/mdconfig -f образ.iso /mnt

Монтировать iso-образ диска.

Команда “mdconfig -f образ.iso” создает виртуальный диск и возвращает имя устройства.

Затем команда “mount -t cd9660 /dev/устройство /media” монтирует созданный диск в /media.

man mount_cd9660
man mount_udf

umount /media && mdconfig -d -u 0

Демонтировать виртуальный диск.

После размонтирования необходимо отключить виртуальный диск командой mdconfig -d. Параметр “-u 0” задает номер md-устройства.

mdconfig -lv

Отобразить список подключенных виртуальных дисков.

man mdconfig

dump -a -C 32 -L -f архив /

Резервное копирование файловой системы (раздела).
-a – отключить разбивку архива по лентам, разбивать только при исчерпании дискового пространства.
-C – размер кэша в мегабайтах.
-L – бэкап файловой системы, смонтированной на запись, использовать снапшот (не работает в FreeBSD 9.1 при использовании журналирования Soft Updates).
-f – путь к архиву.
/ – точка монтирования копируемой файловой системы.

dump -a -C 32 -L -f – / | gzip -9 > архив.gz

Резервное копирование файловой системы с gzip-сжатием. -9 – степень сжатия от 1 до 9.

man dump
man gzip

restore -rf архив

Восстановление файловой системы из резервной копии в текущую папку. Перед восстановлением файловую систему необходимо отформатировать (newfs), смонтировать (mount), сделать текущей папкой (cd). При загрузке с LiveCD, также необходимо смонтировать раздел /tmp, либо задать путь в переменной окружения TMPDIR, при нехватке свободного пространства в /tmp возникнет ошибка.

gunzip -c архив.gz | restore -rf –

Восстановление файловой системы из сжатого gzip-архива.

man gunzip

restore -xf архив [путь1 путь2 …]

Извлечение файлов в текущую папку. Путь задает папки или файлы для извлечения.

restore -tf архив [путь1 путь2 …]

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

restore -rNyf архив

Проверка архива.

df [-g]

Отобразить свободное место на дисках.
-g – в гигабайтах.
-m – в мегабайтах.

man df

du -kxd 1 папка | sort -n

Рассчитать объем дискового пространства, занимаемое папкой и ее подпапками. Сортировать список по возрастанию.
-k – отображать объем в килобайтах.
-x – игнорировать точки монтирования.
-d 1 – отображать размер подпапок с уровнем вложенности не более 1.

По умолчанию, символические ссылки и повторные жесткие ссылки не учитываются. Расчет ведется в занятых блоках на диске.

man du
man sort
FreeBSD. Подробное руководство: Насколько заполнен раздел?

Файлы

ls -lT [папка]

Список файлов в папке.
-T – отображать полную дату и время модификации.
-i – отображать номер индексного дескриптора файла (inode).

ls -lTUtr [папка]

Список файлов в папке.
-U – в качестве даты использовать дату создания,
-t – сортировать список по убыванию даты,
-r – сортировать в обратном порядке.

man ls

stat файл
stat -x файл

Отображение информации о файле.
-x – в развернутом формате с заголовками полей. В этом режиме не отображается дата создания файла.

man stat

cp файл1 файл2 … папка

Копировать файлы в заданную папку.

cp -Rpx папка1 папка2 … папка-назначение
cp -Rpx папка-источник/ папка-назначение

Копировать заданные папки в папку назначения либо копировать содержимое папки источника в папку назначения.
-R – включая вложенные папки,
-p – копировать атрибуты и права доступа,
-x – исключить файлы с других файловых систем.

man cp

mv источник назначение
mv файл1 файл2 папка-назначение

Переименование либо перемещение файлов.

man mv

ln -s файл ссылка
ln -s файл1 файл2 папка

Создать символическую ссылку.

man ln

truncate -s 0 файл

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

man truncate

mkdir -p путь

Создать папку, -p создавать родительские папки, если отсутствуют.

man mkdir

rm файл1 файл2 …
rm -r папка …

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

man rm

chown пользователь:группа файл1 файл2 …

Смена владельца файлов.

man chown

chgrp группа файл1 файл2 …

Смена группы-владельца файлов

man chgrp

chmod 755 файл1 файл2 …
chmod -R 755папка …

Задать права доступа к указанным файлам, или для всех файлов в заданной папке. -R – включая подпапки.

Доступ определяется восьмеричными значениями, каждое из которых соответственно задает разрешения для владельца файла, группы-владельца и остальных пользователей. Права доступа определяются суммой следующих значений: 4 – чтение, 2 – запись, 1 – исполнение файла. В рассмотренном примере, режим 755 разрешает чтение, запись и исполнение владельцу; чтение и исполнение для одногруппников и прочих пользователей

chmod 6755 файл

Особый режим запуска двоичного исполняемого файла: 4 – setuid, запускать от имени владельца вместо текущего пользователя; 2 – setgid, запускать от имени группы-владельца. Использование данных флагов для файлов с владельцем root, представляет собой риск повышения привилегий. Система уведомляет об обнаружении таких файлов в ежедневном отчете безопасности.

chmod 1777папка

1 – sticky bit, задается для папок, разрешает удаление и переименование файла только его владельцу, либо владельцу папки. Обычно используется для папки /tmp.

man chmod
Статья Википедии
Руководство FreeBSD: Права доступа
Руководство FreeBSD: Списки контроля доступа файловой системы (ACL)

bzip2 файл1 файл2 …

Сжать файлы в файл1.bz2, файл2.bz2 с удалением исходных файлов.

man bzip2

bzcat файл.bz2

Отобразить содержимое сжатого файла, оно же распаковка на стандартный вывод. Имеется также bzgrep.

man bzcat

bzip2 -d файл1.bz2 файл2.bz2 …

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

man bzip2

tar -cyf архив.tar.bz2 файл1 файл2 …

Архивация файлов и папок в tar.bzip2-архив.

tar -czf архив.tar.gz файл1 файл2 …

Архивация файлов и папок в tar.gzip-архив.

tar -tvvf архив.tar

Отобразить список файлов в tar-архиве.

tar -xf архив.tar -C папка-назначение

Извлечь все файлы из tar-архива в заданную папку.

man tar

find папка -depth -print0 | cpio -o0 -y -F архив.cpio

Архивация папки в cpio-архив. Список файлов, сформированный командой find, подается на ввод cpio. -y включает bzip2-сжатие, также доступные алгоритмы сжатия: -J – xz, -lzma – LZMA, -z – gzip, -Z – compress.

man find

cpio -itF архив.cpio

Отобразить список файлов в cpio-архиве.

cpio -idmF архив.cpio

Извлечь все файлы из cpio-архива в текущую папку.

man cpio
Смотри также: man pax
Руководство FreeBSD: Backup Basics

mtree -c -x -K cksum -K md5digest -K sha256digest -p папка > mtree.out

Рассчитать контрольные суммы, MD5 и SHA-256 хеши для файлов в указанной папке. Сохранить полученную спецификацию в файле mtree.out. -x – пропускать точки монтирования.

mtree -f список1 -f список2

Сравнить две спецификации, отобразить различия.

Чтобы проверить целостность файлов с помощью mtree, рассчитываем текущую спецификацию файлов и сравниваем со спецификацией, созданной ранее.

man mtree
FreeBSD. Подробное руководство: Подготовка к вторжению с помощью mtree(1)

md5 -r файл1 файл2 …
sha256 -r файл1 файл2 …

Рассчитать MD5 или SHA-256 хеши для заданных файлов. -r – вывод в формате: “хеш файл”.

man md5
Википедия: алгоритм хеширования MD5

md5deep -rel -o f * >files.md5

Создать список хешей для всех файлов в текущей папке, и сохранить в files.md5.
-r – включая подпапки.
-e – отображать прогресс.
-l – выводить относительные пути.
-o f – обсчитывать только файлы (исключить символьные ссылки).

Требуется установка порта md5deep.

md5deep -erlx files.md5 -o f *

Сравнить все файлы в текущей папке со списком: -x /path/to/files.md5, созданным ранее и отобразить различия, Для частичной проверки файлов можно указать путь к папке.

CFV – программа с тем же функционалом.

AIDE – контроль целостности системы путем сравнения хешей файлов с рассчитанными ранее.

man md5deep

Работа с текстом

cat файл
more файл
less файл

Отобразить содержимое файла.

man cat
man more
man less

cat файл1 файл2 >файл3

Объединить текстовые файлы.

man cat

head

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

man head

tail

Отобразить последние десять строк файла.

tail -f файл

Отобразить последние десять строк файла, ожидать и отображать последующие добавляемые в файл строки. Удобно для мониторинга логов в реальном времени.

man tail

ee

Тесктовый редактор

man ee

fg

Вернуться в программу, приостановленную по Ctrl+Z.

grep -R text *

Поиск текста во всех файлах текущей папки, включая вложенные папки.

man grep

egrep “^[^#]” файл
egrep -v ‘^ *[#]|^$’ файл

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

man egrep

diff файл1 файл2

Сравнить файлы, отобразить различия.

man diff

sdiff -s файл1 файл2

Сравнить файлы, отобразить различия с выводом в два столбца. -s – отображать только несовпадающие строки.

man sdiff

diff -r папка1 папка2

Сравнение файлов двух папках. -r – включая вложенные папки.

man diff

cut -d : -f 1,3 /etc/passwd

Отобразить определенные столбцы файла, в данном примере – имена и идентификаторы пользователей. Ключ “-d :” задает разделитель столбцов – двоеточие, ключ -f задает вывод первого и третьего столбца.

man cut

awk -F: ‘{print($1);}’ /etc/passwd

Отобразить определенный столбец файла средствами awk, в данном примере – список имен пользователей. Ключ -F: задает разделитель столбцов – двоеточие, команда print($1); отображает первый столбец. Описание языка.

man awk

sed -i .bak “s/найти/заменить/gI” file

Поиск и замена текста в файле. Ключ -i – править исходный файл, сохранить копию, добавив к имени файла .bak. Строка поиска является регулярным выражением. Флаги: g – заменять все найденные вхождения, I – поиск без учета регистра.

man sed

iconv -f koi8-r -t cp1251file.txt

Перекодировать файл из KOI8-R в кодировку Windows-1251.

В FreeBSD 10 входит в базовую систему, для предыдущих версий потребуется установка порта iconv.

man iconv
Википедия: iconv

Дата и время

date

Отобразить текущую дату и время.

date 200902200351

Установить дату и время в 20.02.2009 03:51.

date 0351

Установить время в 03:51 без изменения даты.

man date

ntpdate pool.ntp.org

Синхронизировать время с NTP-сервером.

man ntpdate
Руководство FreeBSD: Синхронизация часов через NTP

tzsetup

Выбор часового пояса.

man tzsetup

date -j 200902200351 ‘+%s’

Преобразовать время в формате год, месяц день, часы, минуты в UNIX-время.

date -r UNIX-время

Расшифровать UNIX-время.

man date
man strftime

ncal [-my месяц год]

Отобразить календарь на текущий или заданный месяц.

man ncal

Порты и пакеты

pkg search РегулярноеВыражение

Получить список доступных для установки пакетов.

man pkg-search

pkg delete -f пакет1 [пакет2 …]

Деинсталлировать заданные пакеты или порты,
-f – принудительное удаление, если имеются зависимые пакеты.

man pkg-delete

pkg autoremove

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

man pkg-autoremove

pkg info

Список установленных пакетов.

pkg info пакет
pkg info -drl пакет

Информация об установленном пакете:
-d – список пакетов, от которых зависит данный пакет;
-r – список пакетов, которые зависят от данного пакета;
-l – список установленных файлов.

man pkg-info

pkg which /полный/путь/к/файлу

Определить пакет, которому принадлежит указанный файл.

man pkg-which

pkg check -s -a

Проверить целостность установленных пакетов, отобразить измененные файлы.

man pkg-check

freebsd-update IDS

Проверить целостность системы, отобразить измененные файлы.

man freebsd-update
Руководство FreeBSD: Сравнение состояния системы

pkg lock пакет
pkg unlock пакет

Заблокировать или разблокировать операции с пакетом и его зависимостями.

Блокировка необходима для предотвращения автоматического обновления программ, собранных из портов с нестандартными параметрами.

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

man pkg-lock

pkg upgrade

Обновить установленные пакеты.

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

man pkg-upgrade

pkg query “%t %#d %n-%v” | sort

Список установленных пакетов, с сортировкой по дате установки пакета.

pkg query запрашивает следующие данные:
%t – дата установки в формате UNIX-времени, расшифровать значение можно командой date -r число
%#d – число зависимостей пакета
%n – наименование пакета
%v – версия пакета

man pkg-query
man pkg
man pkg.conf
Руководство FreeBSD: Использование pkgng для управления бинарными пакетами

portsnap fetch extract

Получить коллекцию портов, используя portsnap.

portsnap fetch update

Обновить коллекцию портов, используя portsnap.

man portsnap
man portsnap.conf

svnlite checkout svn://svn.FreeBSD.org/ports/head /usr/ports
svn checkout svn://svn.FreeBSD.org/ports/head /usr/ports

Получить коллекцию портов, используя Subversion.

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

Команда svnlite доступна начиная с FreeBSD 10. В предыдущих версиях требуется установка полной версии из порта subversion.

svnlite update /usr/ports
svn update /usr/ports

Обновить коллекцию портов, используя Subversion.

svnlite log -l 10 /usr/ports/категория/порт
svn log -l 10 /usr/ports/категория/порт

Получить журнал ревизий порта.
-l – число получаемых записей
-q – список ревизий в кратком формате

svnlite update -r номер ревизии /usr/ports/категория/порт
svn update -r номер ревизии /usr/ports/категория/порт

Откатить порт к заданной ревизии.

svnlite help
svn help

Справка по параметрам.

man svn
Книга о Subversion

whereis порт

Найти путь к заданному порту.

Кроме коллекции портов, выполняется поиск системных исполняемых файлов, man-страниц, исходных файлов системы.

man whereis

cd /usr/ports && make search name=имя

Поиск по индексу коллекции портов с частичным совпадением имени.

cd /usr/ports/категория/порт && make config

Настройка порта.

cd /usr/ports/категория/порт && make

Сборка порта.

cd /usr/ports/категория/порт && make install

Установка порта.

cd /usr/ports/категория/порт && make package

Создать пакет для порта.

В процессе создания пакета выполняется установка порта.

cd /usr/ports/категория/порт && make deinstall
pkg_delete порт-версия

Удаление порта.

portupgrade порт
portupgrade -o категория/портV2 портV1

Получить и собрать свежую версию порта, в случае успеха, удалить предыдущую версию и установить новую.
-o категория/портV2 – обновление с заменой порта.
-f – принудительная пересборка текущей версии порта, например, после обновления зависимостей.

Требуется установка порта portupgrade.

man portupgrade
Руководство FreeBSD: Обновление портов
FreeBSD. Подробное руководство: Обновление установленных «портов»

pkgdb -F

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

Требуется установка порта portupgrade.

man pkgdb

pkg audit -F
portaudit -Fda

Проверка установленных портов и пакетов на наличие известных уязвимостей.
-F – получить свежую базу уязвимостей,
-d – отобразить дату создания базы,
-a – отобразить список уязвимостей в установленных портах.

В первой команде аудит выполняется средствами pkgng. Для работы второй команды, потребуется установка порта portaudit.

man pkg-audit
man portaudit
FreeBSD. Подробное руководство: Обеспечение безопасности при работе с «портами» и пакетами
Настройка почтовых уведомлений

ldd программа

Список динамических библиотек, необходимых для запуска программы.

man ldd
FreeBSD. Подробное руководство: Управление разделяемыми библиотеками

libchk

Сканировать исполняемые файлы, отобразить ссылки на отсутствующие библиотеки.

Требуется установка порта libchk.

man libchk

service -r
rcorder /etc/rc.d/* /usr/local/etc/rc.d/*

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

Полезно при нарушении порядка старта служб.

man service
man rcorder

Shell-скрипты

man sh

команда >лог-файл 2>&1

Перенаправить вывод команды в файл, включая ошибки.

echo текст | mail -E -s “Тема письма” user@domain.ru

Отправить вывод команды на почту заданному адресату. -E не выполнять отправку, если вывод пуст.

man mail

pgrep процесс >/dev/null && echo Процесс запущен
pgrep процесс >/dev/null || echo Процесс не запущен

Выполнить действие в зависимости от того, запущен или не запущен процесс.

man pgrep

test -e файл && echo Файл существует
test -e файл || echo Файл отсутствует

Проверка наличия файла.
-e – любой файл,
-d – папка,
-f – обычный файл
-L – символическая ссылка,
-s – файл ненулевого размера,
-r – файл доступен для чтения,
-w – доступен для записи,
-x – исполняемый файл,
-b – блочное устройство,
-c – символьное устройство и др.

man test

eval $(stat -s файл)

Извлечение информации о файле в переменные скрипта.

man stat

test “$str1” = “$str2” && echo Равно
test -n “$str1” && echo $str1
test -z “$str1” && echo Пустая строка

Строковое сравнение.
Доступны операторы: =, !=, <, >.
-n – строка ненулевого размера,
-z – пустая строка.

test $n1 -eq $n2 && echo Равно

Числовое сравнение.
-eq – равно, -ne – не равно,
-gt – больше,
-ge – больше или равно,
-lt – меньше,
-le – меньше или равно.

man test

tm=date "+%Y-%m-%d-%H_%M"

Получить текущую дату и время в формате 2009-02-20-03_51 в переменную shell-скрипта. Полезно для скриптов архивации.

man date
man strftime

ver=uname -r

Получить версию системы в переменную $ver.

ver=uname -r | awk '{print(tolower($0));}'

Получить версию системы с преобразованием прописных букв в строчные в переменную $ver.

man uname
man awk

sleep секунды

Приостановка выполнения скрипта на заданное число секунд.

man sleep

exit [код завершения]

Завершение выполнения скрипта. Код завершения: 0 – в случае успеха, номер ошибки от 1 до 255.

man sleep

Разное

tmux
tmux attach

Терминальный мультиплексор, или терминальный оконный менеджер.

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

Первая команда создает новый сеанс. Вторая выполняет подключение к сеансу, запущенному ранее.

Требуется установка порта tmux.

Комбинации клавиш:
Ctrl+b – переход в режим управления Tmux, все команды, указанные ниже, вызываются с данным префиксом.
c – создать новое окно.
n, p, l – переход к следующему, предыдущему или предыдущему активному окну.
0 ... 9 – переход к окну с заданным номером.
w – выбор окна в меню.
& – закрыть окно.
", % – разбивка окна на две панели, вертикальная или горизонтальная.
o – переход к следующей панели.
стрелки – переход панели расположенной сверху, снизу, слева, справа.
пробел, Alt+1 ... 5 – переключение схемы расположения панелей.
Ctrl+o, Alt+o – ротация панелей по часовой и против часовой стрелки.
z – развернуть или свернуть текущую панель.
d – выход с сохранением сессии.
? – отобразить все клавиатурные комбинации.

man tmux
Linux для всех: Терминальный оконный менеджер Tmux

bsdconfig
sysinstall

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

man bsdconfig
man sysinstall

sysrc -a
sysrc параметр
sysrc параметр=значение

Получение и изменение параметров в rc.conf.
-a – отобразить все измененные параметры.

Команда доступна начиная с FreeBSD 9.2.

man sysrc

service -e
service rc.d-скрипт start
service rc.d-скрипт stop
service rc.d-скрипт restart

Запуск и остановка служб.
-e – отобразить все включенные службы в порядке их запуска.

man service

bc

Калькулятор.

Переменные калькулятора:

scale=7 – число знаков после запятой.

ibase=16 – задает шестнадцатеричную систему для ввода. Шестнадцатеричные значения вводятся заглавными буквами.

obase=10 – задает систему счисления для вывода. Если для ввода была задана шестнадцатеричная система счисления, то в качестве значения задаем “A” для выбора десятичной системы, или “10” – для шестнадцатеричной.

man bc

echo $((0x3ffe))

Быстрая конвертация шестнадцатеричного числа в десятичное средствами bash.

7z b

Тест производительности процессора. Дополнительная фишка известного архиватора.

Требуется установка порта p7zip.

man 7z

script файл команда

Сохранить копию вывода команды в файл, включая ввод пользователя.

man script

команда1 | tee файл | команда2

Дублировать вывод команды 1 в файл и передать на ввод команды 2.

man tee

Завершение работы

exit

Выход из командного интерпретатора, завершение сеанса.

shutdown -p now
poweroff

Завершение работы системы с отключением компьютера.

shutdown -r now

Перезагрузка системы.

shutdown -r +15
shutdown -r ГГММДДЧЧММ

Отложенная перезагрузка системы.
+15 – через заданное число минут.
ГГММДДЧЧММ – дата и время перезагрузки в формате: год, месяц, день, час, минута.

Пригодится для тестирования новых правил брандмауэра и других сетевых настроек, если в случае ошибки доступ к системе будет утерян. Перезагрузка вернет рабочие параметры, если конфигурация загрузки системы не была изменена.

Запланированную перезагрузку можно отменить, завершив процесс командой: pkill ^shutdown$

man shutdown

halt -p
reboot

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

man halt
man reboot

Ссылки

Книга: «FreeBSD. Подробное руководство», автор: Майкл Лукас.

Википедия: Стандартные команды ОС UNIX

Переводы man-страниц: muff.kiev.ua/menutree/menu-man, vds-admin.ru/unix-commands, frdp.rinet.ru/man/

commandlinefu.com

 

Источник

Ручной ввод чёрных списков в transmission

Не сложно

Месяц-полтора назад прошла волна по поводу слежки за тем, кто и что качает. Большая часть была то ли фейковая вообще, то ли качали что-то такое (как в моём случае), что следильщиков не интересует. Но осадочек остался. Захотелось, и не мне одному, активировать чёрный список в Transmission. Да чтобы перезагрузку пережило, что сделать не вдруг. Сегодня будетпростой вариант, ручной.

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

1. Выбираем чёрный список. Гугл в помощь, обычно пишут о таком ресурсе. iblocklist.com публикует множество разных списков для разных целей. Например по странам или список учебных организаций, что для нашей нужды ни о чём. Список level1 по описанию нравится.

Вот только их источник, bluetack.co.uk лежит и не пингуется, причём судя по гуглингу – уже давно. То есть список не обновляется и стоит поискать другой.
UPD от 26 февраля 2017 В личку мне написал камрад, который пользует этот список.
Скачал нынешний и сохранил, дата/время файла: 24.02.2014/4:44

Через пару дней проверю опять.

Скачал, сохранил: 26.02.2014/10:03, стал больше на 13 записей.
Обновляется, можно использовать

/UPD

Я нагуглил рекомендации (раз, два) john.bitsurge.net/public/biglist.p2p.gz
Скачал, в архиве 26 мегабайт текста, действительно список IP адресов. Знать бы насколько актуальный и вообще к делу относящийся 🙂

Но, за не имением лучшего, настроим на него.

2. Создадим папку для чёрных списков. Можно руками,но давайте через вебгуй
Идём в вебгуй transmission (в Transmission Remote GUI тоже есть такая возможность)
Services > BitTorrent, URL, самая нижняя строка

Жмём гаечный ключ в панели, она в нижнем левом углу окна

Открывается диалог настроек transmission


Идём на вкладку Peers и ставим галку на Enable blocklist
Теперь я на всякий случай щёлкаю другую вкладку, speed, к примеру, и возвращаюсь.

если теперь презапустить сервис transmission в Services > BitTorrent, то он создаст в своей конфигурационной папке подпапку blocklists
Для примера в моей системе получилось

nas4free sys/ root~$ ls -la /mnt/WD2T/Files/start/sys/
total 207
drwxrwxrwx 7 www www 13 Feb 24 01:15 ./
drwxrwxr-x 3 www www 5 Jul 15 2016 ../
drwxr-xr-x 2 transmission www 2 Feb 24 01:09 blocklists/
-rw------- 1 transmission www 928 Feb 24 01:09 dht.dat
drwxrwxrwx 2 www www 119 Feb 24 01:15 resume/
-rw------- 1 transmission www 2174 Feb 24 01:09 settings.json
-rw------- 1 transmission www 166 Feb 24 01:15 stats.json
drwxrwxrwx 2 www www 87 Feb 23 01:16 torrents/
-rw-r--r-- 1 root www 2404 Mar 18 2016 tr.log
-rw-r--r-- 1 transmission www 249 Feb 23 02:16 update_blocklists.log

3. После перезапуска transmission снова идём в его вебгуй, в настройки.
Вносим http://john.bitsurge.net/public/biglist.p2p.gz в строку
Жмём кнопку Update

Если всё OK, то ненадолго появится надпись Updating и, затем, справа внизу надпись, что теперь в списке столько-то правил
Если что-то не так, например http в начале забыли – то вокруг строки будет красная рамочка.

Ура, transmission принял чёрный список!

4. Но есть проблема. После рестарта NAS галка на Enable Blocklist исчезнет. И даже редактирование json конфига transmission не поможет. Но камрад Камрад Максим Чернов посоветовал решение

4.1 Идем в веб-морду: System|Advanced|rc.conf и добавляем новую запись:
transmission_blocklist -> YES -> Transmission blocklist enable
(формат, напомню, параметр, значение, опциональный комментарий)

Почему так? Логика /etc/rc.d/transmission такова, что именно эту опцию он затирает в settings.json при перезагрузке системы (а значение по умолчанию принимает равным FALSE), но может прочесть эту опцию из общего rc.conf

4.2 Перезагружаем Nas4Free (самое простое решение, т.к. settings.json обновится автоматически).

4.3 После загрузки логинимся в шелл и командой “ps ax -w -w” убеждаемся, что Transmission загрузился с поддержкой блоклистов. Должны увидеть в конце вывода следующую надпись: “–blocklist” вместо “–no-blocklist”. В моём случае

nas4free ~/ root~$ ps ax -w -w | grep transmission
2485
- Ss 0:07.41 /usr/local/bin/transmission-daemon --allowed *.*.*.*
--no-auth --download-dir /mnt/WD2T/Files/Download --port 9091
--config-dir /mnt/WD2T/Files/start/sys --peerport=26789 --portmap
--watch-dir /mnt/WD2T/Files/start --no-incomplete-dir --blocklist

Бинго!

Автоматическое обновление чёрных списков в transmission

Намедни мы настроили transmission понимать черный список и не терять его при рестарте. Сегодня для альтернативно ленивых – автоматизация обновления этого чёрных списков, в том числе из нескольких источников.

1. Настраиваем трансмишн на работу с черными списками как описано ранее

2. Выясняем папку где лежит конфиг. Для этого
Смотрим в Services > BitTorrent
параметр Configuration directory
(напоминаю, мы его давным-давно задавали руками)
В моем случае /mnt/WD2T/Files/start/sys

3. К сожалению, ЖЖ корёжит коды, а яндекс не даёт долгоживущих прямых ссылок, так что здесь слегка через париЖ .
Качаем скрипт blocklists_updater.sh с моего яндекс диска
https://yadi.sk/d/Pdkbrzpv3EryDQ
Переносим на NAS, например в папку Медиа. А оттуда – в созданную в подпапку blocklists папки из п 2
Задаём права и владельца. Хоть это и скрипт, права на исполнения давать не считаю нужным, будем вызывать явным образом

nas4free sys/ root~$ cp -a /mnt/Pool/Media/blocklists_updater.sh /mnt/WD2T/Files/start/sys/blocklists
nas4free sys/ root~$ cd /mnt/WD2T/Files/start/sys/blocklists
nas4free blocklists/ root~$ chown transmission:www blocklists_updater.sh
nas4free blocklists/ root~$ chmod 666  blocklists_updater.sh
nas4free blocklists/ root~$ ls -la
total 3358
drwxr-xr-x  2 transmission  www        4 Mar  1 22:35 ./
drwxrwxrwx  7 www           www       13 Mar  1 22:32 ../
-rw-rw-rw-  1 transmission  www  3280728 Feb 24 01:23 blocklist.bin
-rw-rw-rw-  1 transmission  www     3789 Mar  1 22:29 blocklists_updater.sh

3. редактируем скрипт blocklists_updater.sh

nas4free blocklists/ root~$ nano blocklists_updater.sh

Здесь параметр в 9 строке надо указать имя вашей конфигурационной папки (из п 2).
В моём случае 8 и 9 строки

#Path configuration
folderConfigTransmission=/mnt/WD2T/Files/start/sys

Выходим из nano с сохранением (Ctrl-X, Y, Enter)

4. Список блоклистов скрипт читает из файла list_blocklist, расположенного в конфигурационной папке.
При желании что-то изменить можете заполнить его по шаблону: LIST_NAME AUTHOR FILENAME_AFTERDOWNLOAD BLOCKLIST_URL
Списков в файле может быть несколько – трансмишн сам при нужде должен склеить. Я использую тот же список, что в ручном варианте.

В результате у меня содержимое файлика выглядит так:

JohnBitsurge JohnBitsurge biglist.gz “http://john.bitsurge.net/public/biglist.p2p.gz

Кладём эту строку в этот файл,
nas4free blocklists/ root~$ cd ..
nas4free sys/ root~$ nano list_blocklist

Выходим из nano с сохранением (Ctrl-X, Y, Enter)
Задаём права-владельца
nas4free sys/ root~$ chown transmission:www list_blocklist
nas4free sys/ root~$ chmod 666 list_blocklist

5. Давайте запустим наш скрипт с полными путями, как будем запускать в кроне
/bin/sh /mnt/WD2T/Files/start/sys/blocklists/blocklists_updater.sh

В результате нескольких запусков в логе вижу
nas4free sys/ root~$ cat update_blocklists.log
[Wed Mar  1 23:03:03 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Wed Mar  1 23:03:57 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Wed Mar  1 23:04:02 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)

То есть первый раз файл загрузился, далее скрипт проверяет оставшийся неизменным размер и не грузит. Если размер изменится, скрипт должен его загрузить и  рестартовать transmission. Убедимся в этом со временем. Но для этого

6. Добавляем через веб-морду наш скриптик в крон от пользователя root (к сожалению, от transmission в nas4free не удаётся рестартовать одноимённый сервис 🙁 ). Я запускаю его раз в сутки, но можно и раз в неделю/месяц.

На картинке я вызываю скрипт ежедневно в 02:05

Жмём Add, затем Apply changes
Затем вернуться к редактированию скрипта и прогнать скрипт, нажав кнопку Run Now
И взглянуть в лог как выше.

UPD от 05 марта 2017
Вроде работае, обновления выходят, скрипт их качает

nas4free sys/ root~$ cat update_blocklists.log
(…)
[Thu Mar  2 02:05:01 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Fri Mar  3 02:05:09 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Fri Mar  3 02:05:10 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
[Sat Mar  4 02:05:10 MSK 2017] Update found and downloaded for: JohnBitsurge (JohnBitsurge)
[Sat Mar  4 02:05:10 MSK 2017] No update for: JohnBitsurge (JohnBitsurge)
сейчас пишет что 757 944 правил /UPD

Скрипт допилил камрад Максим Чернов на основе ветки из оффрума

Источник

Вселенная

Если солнце уменьшить до размера твоего ногтя(~2см), то ближайшая к нему звезда (Альфа Центавра), будет на расстоянии примерно 20км от тебя.

Вот такой вид, по-современным представлениям, имеет наша вселенная.

вселенная

Отдельные точки на этой модели, это даже не галактики, это сверх-скопления галактик (от нескольких тысяч до нескольких миллионов галактик).

 

Сравнительные размеры небесных тел

По этим фотографиям (8 фото) можно попробовать оценить сравнительные размеры Земли, Солнца и некоторых других звезд в галактике. Умом мы все понимаем, что существует множество звезд гораздо больше солнца, но вот на сколько больше, мы даже представить себе не можем.

Земля, Венера, Марс

Итак начали с планеток, ну тут все ясно Земля рулит 🙄 , хотя мне почему то всегда казалось что Марс больше Венеры…

Земля, Юпитер, Сатурн

Юпитер конечно огромен, где то читал, что Юпитеру нехватает совсем немного массы, чтоб стать маленькой звездой…

Солнце, Юпитер, Сатурн

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

Сириус, Поллукс, Арктуриус

Теперь понятно, почему Солнце классифицируют как желтый карлик…

Ригель, Альдебаран, Антарес.

Ригель, Альдебаран, Антарес, а где там Солнце? Эту пылинку еще видно?

Антарес, Пистол

Ага, и Антарес тут не самый главный. 🙂

Пистол, Цефей

Просто нет слов…

Млечный путь

Млечный путь. 200 миллиардов звезд.

 

Настройка нажатий тачпада (сенсорной панели) ноутбука в Debian + XFCE

 TouchPadTapping

Дано: Debian 9.3 + XFCE, ноутбук DEXP O117

По умолчанию, если найдены кнопки тачпада, то эффект одинарного и двойного клика по тачпаду отключены. В GNOME это можно настроить утилитой «Мышь» из Центра управления. Для всех X-приложений исправить можно так:

1.Проверяем есть для драйвера в сестеме:

# synclient

Результат:

Couldn’t find synaptics properties. No synaptics driver loaded?

Если как здесь, пишет в результате “нет драйверов”, – ставим пакет xserver-xorg-input-multitouch:

# apt install xserver-xorg-input-multitouch

2. Далее в любом случае открываем в редакторе файл настройки установленного пакета: 70-synaptics.conf, (здесь в nano):

# nano /usr/share/X11/xorg.conf.d/70-synaptics.conf

Добавляем в секции нашего тачпада(у меня эта секция в начале файла) три новых строки:

Section “InputClass”
Identifier “touchpad catchall”
Driver “synaptics”
MatchIsTouchpad “on”
Option “TapButton1” “1” <– Добавить
Option “TapButton2” “1” <– Добавить эти строки
Option “TapButton3” “1” <– Добавить
EndSection

Если этого оказалось вам мало, можете попробовать поиграть с настройками сенсорной панели, представленными ниже. Читать далее «Настройка нажатий тачпада (сенсорной панели) ноутбука в Debian + XFCE»

Что делать с ошибкой W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169 например при обновлении ядра? Собственно это не совсем ошибка, а предупреждение. Просто для работы realtek не хватает пакета firmware-realtek.

На самом деле все будет работать и без установленных firmware-realtek, но не факт, что корректно. Да и не приятно все время видеть предупреждения.

Для начала надо убедиться, что добавлены non-free репозитории.

cat /etc/apt/sources.list

deb http://ftp.no.debian.org/debian/ stable main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

 

Далее можно поставить apt-file и найти нужную версию прошивки.

apt-get install apt-file
apt-file update

Далее поищем нашу версию отсутствующей прошивки. Вот что получим.

apt-file find rtl8105e
firmware-realtek: /lib/firmware/rtl_nic/rtl8105e-1.fw

Тут видно, что искомая фраза содержится в пакете firmware-realtek.
Можно посмотреть информацию о пакете. В моем случае она такая.

aptitude show firmware-realtek

Пакет: firmware-realtek
Состояние: установлен
Автоматически установлен: нет
Версия: 0.28+squeeze1
Приоритет: необязательный
Раздел: non-free/kernel
Сопровождающий: Debian Kernel Team <debian-kernel@lists.debian.org>
Размер в распакованном виде: 344 k
Предлагаются: initramfs-tools, linux-image
Описание: Binary firmware for Realtek wired and wireless network adapters
This package contains the binary firmware for Ethernet adapters with the RTL8111D/RTL8168D chips supported by the r8169 driver; and wireless network cards with the RTL8192 and RTL8712 chips supported by the
r8192_pci, r8192s_usb and r8712u drivers.

Contents:
* Realtek RTL8192E boot code (RTL8192E/boot.img)
* Realtek RTL8192E init data (RTL8192E/data.img)
* Realtek RTL8192E main code (RTL8192E/main.img)
* Realtek RTL8192SU firmware, version 902B (RTL8192SU/rtl8192sfw.bin)
* Realtek RTL8105E-1 firmware (rtl_nic/rtl8105e-1.fw)
* Realtek RTL8111D-1/RTL8168D-1 firmware (rtl_nic/rtl8168d-1.fw)
* Realtek RTL8111D-2/RTL8168D-2 firmware (rtl_nic/rtl8168d-2.fw)
* Realtek RTL8168E-1 firmware (rtl_nic/rtl8168e-1.fw)
* Realtek RTL8168E-2 firmware (rtl_nic/rtl8168e-2.fw)
* Realtek RTL8168E-3 firmware (rtl_nic/rtl8168e-3.fw)
* Realtek RTL8192SU/RTL8712U firmware (rtlwifi/rtl8712u.bin)
Сайт: http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git

 

Осталось только установить.

apt-get install firmware-realtek

 

Источник (о снах также пишет)

Устанавливаем TeamViewer12 на debian

Дано:

  • Operating System: – Debian 9.3 Stretch
  • Software: – TeamViewer 12.0.93330

 

Порядок установки:

 

Next, install prerequisites and tools to help with the actual installation:

Download and install TeamViewer

Скачиваем TeamViewer с сайта(на момент написания к скачиванию прежних версий предлагался этот – teamviewer_12.0.93330_i386.deb). Скачиваем, смотрим у себя в загрузках:


The TeamViewer package should be now located withing your working directory and ready to be installed. Use gdebi(можно из пакетов ставить: apt install gdebi) to install TeamViewer package:

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

TeamViewer installation on Debian 9 stretch