Документация по ОС FreeBSD Четверг, 19.06.2025, 01:15
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Управление пользователями во FreeBSD - Часть 1 [2009]
Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС 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).

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


Источник: http://www.lissyara.su/?id=1949
Категория: Установка и настройка | Добавил: oleg (05.06.2009) | Автор: atrium
Просмотров: 709 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025