Автор: atrium.
Полномочия пользователей и файлов,
принадлежащих им, формирует концепцию ОС UNIX. Так как FreeBSD является
многопользовательской ОС и принадлежит к семейству ОС относящихся к
общему названию UNIX, поэтому умение грамотно управлять пользователями
позволит избежать различных неприятностей.
Учётные записи пользователей и групп хранятся в двух файлах:
•/etc/master.passwd – в данном файле хранятся учётные данные пользователей и их пароли в зашифрованном виде.
•/etc/group – файл, отвечающий за группы
В FreeBSD используется технология теневых паролей – это когда системные данные пользователей разделены на два файла:
1.файл /etc/master.passwd в котором находятся пароли в зашифрованном виде, он имеет права только на чтение и запись для пользователя root
2.файл /etc/passwd, созданный с помощью команды pwd_mkdb(8) (генерация базы с паролями) из файла /etc/master.passwd, он имеет права на чтение для группы и других пользователей, в нём пароли заменены на *. Также с помощью команды pwd_mkdb(8) из файла /etc/master.passwd создаются два файла – /etc/pwd.db и /etc/spwd.db
(индексированные базы данных), они предназначены для ускорения поиска, в
случае большого количества системных пользователей. Файл /etc/spwd.db является секретным как и файл /etc/master.passwd и имеет теже права доступа и владельца.
Рассмотрим синтаксис файла /etc/master.passwd:
|
root:<span style="color: green;">$1</span><span style="color: green;">$SJSDMXQE</span><span style="color: green;">$LRpetLGNt5xO8k980r2om</span>.:<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Charlie &:/root:/bin/csh toor:*:<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Bourne-again Superuser:/root: daemon:*:<b><span style="color: darkblue;">1</span></b>:<b><span style="color: darkblue;">1</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Owner of many system processes:/root:/usr/sbin/nologin operator:*:<b><span style="color: darkblue;">2</span></b>:<b><span style="color: darkblue;">5</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:System &:/:/usr/sbin/nologin bin:*:<b><span style="color: darkblue;">3</span></b>:<b><span style="color: darkblue;">7</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Binaries Commands <span style="color: blue;">and</span> Source:/:/usr/sbin/nologin tty:*:<b><span style="color: darkblue;">4</span></b>:<b><span style="color: darkblue;">65533</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Tty Sandbox:/:/usr/sbin/nologin kmem:*:<b><span style="color: darkblue;">5</span></b>:<b><span style="color: darkblue;">65533</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:KMem Sandbox:/:/usr/sbin/nologin games:*:<b><span style="color: darkblue;">7</span></b>:<b><span style="color: darkblue;">13</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>: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).
Пример:
|
<span style="color: red;"># vipw</span> root:<span style="color: green;">$1</span><span style="color: green;">$SJSDMXQE</span><span style="color: green;">$LRpetLGNt5xO8k980r2om</span>.:<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Charlie &:/root:/bin/csh toor:*:<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Bourne-again Superuser:/root: daemon:*:<b><span style="color: darkblue;">1</span></b>:<b><span style="color: darkblue;">1</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Owner of many system processes:/root:/usr/sbin/nologin operator:*:<b><span style="color: darkblue;">2</span></b>:<b><span style="color: darkblue;">5</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:System &:/:/usr/sbin/nologin bin:*:<b><span style="color: darkblue;">3</span></b>:<b><span style="color: darkblue;">7</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Binaries Commands <span style="color: blue;">and</span> Source:/:/usr/sbin/nologin tty:*:<b><span style="color: darkblue;">4</span></b>:<b><span style="color: darkblue;">65533</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Tty Sandbox:/:/usr/sbin/nologin kmem:*:<b><span style="color: darkblue;">5</span></b>:<b><span style="color: darkblue;">65533</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:KMem Sandbox:/:/usr/sbin/nologin games:*:<b><span style="color: darkblue;">7</span></b>:<b><span style="color: darkblue;">13</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>: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)
Поэтому после каждого изменения файла /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)
Вам необходимо включить учёт используемых ресурсов. Учёт используемых
процессами ресурсов представляет собой метод защиты, при котором
администратор может отслеживать использование системных ресурсов и их
распределение между пользователями для нужд системного мониторинга и
минимального отслеживания команд пользователей.
Для того что бы включить систему учёта используемых ресурсов Вам необходимо выполнить несколько действий.
|
<b><span style="color: darkblue;">1</span></b>.<span style="color: magenta;">mkdir</span> /var/account <b><span style="color: darkblue;">2</span></b>.<span style="color: magenta;">touch</span> /var/account/acct <b><span style="color: darkblue;">3</span></b>.accton /var/account/acct <b><span style="color: darkblue;">4</span></b>.<span style="color: magenta;">echo</span> 'accounting_enable="YES"' >> /etc/rc.conf |
|
После выполнения 3 действия Вы уже можите использовать команды lastcomm(1), sa(8). Команда accton(8) включает систему учёта используемых ресурсов.
Практика:
(Для более подробной информации о командах обязательно читайте манны)
Использование системы учёта ресурсов, команда lastcomm(1) и sa(8):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
fdesktop1<span style="color: red;"># lastcomm root</span> lastcomm - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">023</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">25</span></b> cron -F root __ <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">004</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">25</span></b> <span style="color: magenta;">sh</span> - root __ <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">005</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">25</span></b> atrun - root __ <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">004</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">25</span></b> <span style="color: magenta;">man</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">032</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">sh</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">019</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">more</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">071</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">zcat</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">025</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">man</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">038</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">sh</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">020</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">zcat</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">030</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">more</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">039</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> lastcomm - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">014</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">man</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">013</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> <span style="color: magenta;">sh</span> - root ttyp0 <b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">031</span></b> secs Tue May <b><span style="color: darkblue;">19</span></b> <b><span style="color: darkblue;">02</span></b>:<b><span style="color: darkblue;">24</span></b> |
|
|
fdesktop1<span style="color: red;"># sa</span> <b><span style="color: darkblue;">73</span></b> <b><span style="color: darkblue;">9</span></b>.617re <b><span style="color: darkblue;">0</span></b>.03cp 0avio 2804k <b><span style="color: darkblue;">9</span></b> <b><span style="color: darkblue;">3</span></b>.187re <b><span style="color: darkblue;">0</span></b>.01cp 0avio 1383k <span style="color: magenta;">more</span> <b><span style="color: darkblue;">13</span></b> <b><span style="color: darkblue;">3</span></b>.196re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 4158k <span style="color: magenta;">sh</span> <b><span style="color: darkblue;">9</span></b> <b><span style="color: darkblue;">3</span></b>.197re <b><span style="color: darkblue;">0</span></b>.00cp 2avio 3484k <span style="color: magenta;">man</span> <b><span style="color: darkblue;">9</span></b> <b><span style="color: darkblue;">0</span></b>.026re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 1547k <span style="color: magenta;">zcat</span> <b><span style="color: darkblue;">7</span></b> <b><span style="color: darkblue;">0</span></b>.003re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 2386k sa <b><span style="color: darkblue;">7</span></b> <b><span style="color: darkblue;">0</span></b>.002re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 4726k lastcomm <b><span style="color: darkblue;">5</span></b> <b><span style="color: darkblue;">0</span></b>.001re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 4516k ***other <b><span style="color: darkblue;">7</span></b> <b><span style="color: darkblue;">0</span></b>.001re <b><span style="color: darkblue;">0</span></b>.00cp 0avio 4584k <span style="color: magenta;">mv</span> |
|
Добавление нового пользователя в систему, будем использовать команду pw(8):
|
<span style="color: red;"># pw useradd test -s /bin/sh -c "Test users" -m -b /home -e 03-06-2009 -p 02-6-2009</span> |
|
Давайте разберём наше действие:
-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:
|
<span style="color: magenta;">test</span>:*:<b><span style="color: darkblue;">1002</span></b>:<b><span style="color: darkblue;">1002</span></b>::<b><span style="color: darkblue;">40</span></b>:<b><span style="color: darkblue;">30</span></b>:<span style="color: magenta;">Test</span> users:/home/test:/bin/sh |
|
Более интерактивная команда adduser(8), она имеет конфигурационный файл, в котором вы можите предопределить вводимые данные.
Как видим пользователь у нас не имеет пароля, поэтому не сможет войти в
систему, для того что бы задать пароль используем команду passwd(8):
|
<span style="color: red;"># passwd test</span> Changing <span style="color: blue;">local</span> password <span style="color: orange;">for</span> <span style="color: magenta;">test</span> New Password: Retype New Password: |
|
Для более корректного удаления пользователя из
системы используйте команду rmuser(8), данная команда не просто удаляет
пользователя из файла /etc/master.passwd, но и все его данные в
системе:
1.Удаляет пользовательский crontab(1), если он существует
2.Удаляет задания пользователя, созданные командой at(1)
3.Отправляет всем процессам работающим от имени этого пользователя сигнал SIGKILL
4.Удаляет пользователя из файла /etc/passwd
5.Удаляет домашнюю директорию пользователя, включая символические ссылки на домашний каталог
6.Удаляет входящие письма из каталога /var/mail
7.Удаляет все файлы владельцем которых является пользователь из каталогов /tmp, /var/tmp и /var/tmp/vi.recover
8.Удаляет пользователя из всех группы, в которых он состоит (файл /etc/groups)
9.Удаляет все очереди сообщений, общую разделяемую память, семафоры
владельцем которых является пользователь. (Для справки: все это
интерфейсы межпроцессорного взаимодействия)
Используйте утилиту rmuser(8) с параметром ‘–y’ что бы она не спрашивала подтверждения на удаление.
Пример удаления без опции ‘-y’ и с опцией ‘y’:
|
fdesktop1<span style="color: red;"># rmuser test</span> Matching password entry: <span style="color: magenta;">test</span>:*:<b><span style="color: darkblue;">1002</span></b>:<b><span style="color: darkblue;">1002</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:<span style="color: magenta;">Test</span> users:/home/test:/bin/sh Is this the entry you wish <span style="color: blue;">to</span> remove? y <span style="color: teal;">Remove</span> user's home <span style="color: teal;">directory</span> (/home/test)? y Removing <span style="color: teal;">user</span> (<span style="color: magenta;">test</span>): mailspool home passwd. fdesktop1<span style="color: red;"># pw useradd test -s /bin/sh -m -b /home -c "Test users"</span> fdesktop1<span style="color: red;"># rmuser -y test</span> Removing <span style="color: teal;">user</span> (<span style="color: magenta;">test</span>): mailspool home passwd. |
|
Посмотрим теперь информацию о существующих пользователях, для этого будем использовать каманды id(1), finger(1):
|
fdesktop1<span style="color: red;"># id root</span> uid=<b><span style="color: darkblue;">0</span></b>(root) gid=<b><span style="color: darkblue;">0</span></b>(wheel) groups=<b><span style="color: darkblue;">0</span></b>(wheel),<b><span style="color: darkblue;">5</span></b>(operator) |
|
Как видим утилита показывает информацию, к каким группам принадлежит
пользователь. У данной команды есть много полезных опций, поэтому
почитайте манн.
|
fdesktop1<span style="color: red;"># id -P root</span> root:<span style="color: green;">$1</span><span style="color: green;">$SJSDMXQE</span><span style="color: green;">$LRpetLGNt5xO8k980r2om</span>.:<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>::<b><span style="color: darkblue;">0</span></b>:<b><span style="color: darkblue;">0</span></b>:Charlie &:/root:/bin/csh fdesktop1<span style="color: red;"># finger root</span> <span style="color: magenta;">Login</span>: root <span style="color: blue;">Name</span>: Charlie Root <span style="color: teal;">Directory</span>: /root Shell: /bin/csh On since Sun May <b><span style="color: darkblue;">17</span></b> <b><span style="color: darkblue;">23</span></b>:<b><span style="color: darkblue;">10</span></b> (MSD) on ttyp0 <span style="color: blue;">from</span> <b><span style="color: darkblue;">192</span></b>.<b><span style="color: darkblue;">168</span></b>.<b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">2</span></b> New <span style="color: magenta;">mail</span> received Wed Feb <b><span style="color: darkblue;">18</span></b> <b><span style="color: darkblue;">01</span></b>:<b><span style="color: darkblue;">21</span></b> <b><span style="color: darkblue;">2009</span></b> (MSK) Unread since Fri Feb <b><span style="color: darkblue;">13</span></b> <b><span style="color: darkblue;">00</span></b>:<b><span style="color: darkblue;">52</span></b> <b><span style="color: darkblue;">2009</span></b> (MSK) <span style="color: teal;">No</span> Plan. |
|
Давайте теперь узнаем кто сейчас находится в системе, для этого будем использовать команды users(1) и who(1):
|
$ <span style="color: magenta;">who</span> root ttyp0 May <b><span style="color: darkblue;">17</span></b> <b><span style="color: darkblue;">23</span></b>:<b><span style="color: darkblue;">10</span></b> (<b><span style="color: darkblue;">192</span></b>.<b><span style="color: darkblue;">168</span></b>.<b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">2</span></b>) atrium ttyp1 May <b><span style="color: darkblue;">17</span></b> <b><span style="color: darkblue;">23</span></b>:<b><span style="color: darkblue;">19</span></b> (<b><span style="color: darkblue;">192</span></b>.<b><span style="color: darkblue;">168</span></b>.<b><span style="color: darkblue;">0</span></b>.<b><span style="color: darkblue;">2</span></b>) $ users atrium root |
|
Создадим новую группу:
|
fdesktop1<span style="color: red;"># echo 'test:*:200:atrium' >> /etc/group</span> fdesktop1<span style="color: red;"># id atrium</span> uid=<b><span style="color: darkblue;">1001</span></b>(atrium) gid=<b><span style="color: darkblue;">20</span></b>(staff) groups=<b><span style="color: darkblue;">20</span></b>(staff),<b><span style="color: darkblue;">200</span></b>(<span style="color: magenta;">test</span>) |
|
Мы создали новую группу ‘test’ и сразу же добавили в неё пользователя ‘atrium’.
|
fdesktop1<span style="color: red;"># pw groupadd list -M atrium,root</span> fdesktop1<span style="color: red;"># pw groupshow list</span> <span style="color: orange;">list</span>:*:<b><span style="color: darkblue;">1002</span></b>:atrium,root |
|
С помощью прекрасной команды pw(8) мы создали группу 'list’ и добавили в неё пользователя atrium и root. Так же посмотрели созданную группу.
Оффлайн версия:
PDF |
файл |
скачан |
размер |
размещён |
примечание |
|
2084 |
479.4kb |
2009-06-04 |
Оффлайн версия |
|
Источник
👀 1