Для управления пользователями и группами будут полезны следующие команды:
•pw(8) – создание, удаление, изменение, отображение пользователей и групп;
•adduser(8) – интерактивное добавление нового пользователя;
•rmuser(8) – удаление пользователя из системы;
•id(1) – отображение имени пользователя, UID и групп в которых он состоит с указанием их GID;
•finger(1) – отображает информацию о системном пользователе;
•users(1) – показывает список текущих пользователей;
•who(1) – показывает тех кто находится в системе;
•whoami(1) – показывает эффективный id пользователя соответствующий имени;
•last(1) – показывает когда пользователь пользовался терминалом;
•lastlogin(8) – показывает информацию о последнем использовании терминала;
•lastcomm(1) – показывает список последних выполняем команд пользователем;
•ac(8) – показывает время, которое пользователь находился в системе;
•sa(8) – показывает статистику по пользователям;
•passwd(8) – смена пароля пользователю;
•chpass(1) – смена пароля пользователя;
•chfn(1) – изменение пользовательских данных;
•groups(1) – показывает кто в каких группах состоит;
•chgrp(1) – изменение группы;
•chkgrp(8) – проверка синтаксиса файла групп;
Для полноценного использования команд lastcomm(1), sa(8) Вам необходимо включить учёт используемых ресурсов. Учёт используемых процессами ресурсов представляет собой метод защиты, при котором администратор может отслеживать использование системных ресурсов и их распределение между пользователями для нужд системного мониторинга и минимального отслеживания команд пользователей.
Для того что бы включить систему учёта используемых ресурсов Вам необходимо выполнить несколько действий.
1.mkdir /var/account
2.touch /var/account/acct
3.accton /var/account/acct
4.echo 'accounting_enable="YES"' >> /etc/rc.conf
|
После выполнения 3 действия Вы уже можите использовать команды lastcomm(1), sa(8). Команда accton(8) включает систему учёта используемых ресурсов.
Практика:
(Для более подробной информации о командах обязательно читайте манны)
Использование системы учёта ресурсов, команда lastcomm(1) и sa(8):
fdesktop1# lastcomm root
lastcomm - root ttyp0 0.023 secs Tue May 19 02:25
cron -F root __ 0.004 secs Tue May 19 02:25
sh - root __ 0.005 secs Tue May 19 02:25
atrun - root __ 0.004 secs Tue May 19 02:25
man - root ttyp0 0.032 secs Tue May 19 02:24
sh - root ttyp0 0.019 secs Tue May 19 02:24
more - root ttyp0 0.071 secs Tue May 19 02:24
zcat - root ttyp0 0.025 secs Tue May 19 02:24
man - root ttyp0 0.038 secs Tue May 19 02:24
sh - root ttyp0 0.020 secs Tue May 19 02:24
zcat - root ttyp0 0.030 secs Tue May 19 02:24
more - root ttyp0 0.039 secs Tue May 19 02:24
lastcomm - root ttyp0 0.014 secs Tue May 19 02:24
man - root ttyp0 0.013 secs Tue May 19 02:24
sh - root ttyp0 0.031 secs Tue May 19 02:24
|
fdesktop1# sa
73 9.617re 0.03cp 0avio 2804k
9 3.187re 0.01cp 0avio 1383k more
13 3.196re 0.00cp 0avio 4158k sh
9 3.197re 0.00cp 2avio 3484k man
9 0.026re 0.00cp 0avio 1547k zcat
7 0.003re 0.00cp 0avio 2386k sa
7 0.002re 0.00cp 0avio 4726k lastcomm
5 0.001re 0.00cp 0avio 4516k ***other
7 0.001re 0.00cp 0avio 4584k mv
|
Добавление нового пользователя в систему, будем использовать команду pw(8):
# pw useradd test -s /bin/sh -c "Test users" -m -b /home -e 03-06-2009 -p 02-6-2009
|
Давайте разберём наше действие:
-s – указывает какой терминал будет использоваться, поле shell
-с – комментарии к созданному пользователю, поле gecos
-e – время жизни аккуанта, поле expire. Формат поля аналогичен опции '-p'
-p – время жизни пароля, поле change. Формат задания даты или времени таков:
dd-mm-yy[yy], где dd – день, mm – месяц, yy[yy] – год. Или используется следующий формат: +0mhdwoy, где m – минуты, h – часы, d – дни, w – недели, o – месяц, y - год -m – заставляет создать домашний каталог пользователя и скопировать в него стандартные файлы и каталога /usr/share/skel
-b – базовая директория в которой будет находится домашний каталог пользователя, поле home_dir
-L – задаёт класс для пользователя из файла login.conf, поле class
Результаты работы, из файла /etc/master.passwd:
test:*:1002:1002::40:30:Test users:/home/test:/bin/sh
|
Более интерактивная команда adduser(8), она имеет конфигурационный файл, в котором вы можите предопределить вводимые данные.
Как видим пользователь у нас не имеет пароля, поэтому не сможет войти в систему, для того что бы задать пароль используем команду passwd(8):
# passwd test
Changing local password for test
New Password:
Retype New Password:
|
Для более корректного удаления пользователя из системы используйте команду rmuser(8), данная команда не просто удаляет пользователя из файла /etc/master.passwd, но и все его данные в системе:
1.Удаляет пользовательский crontab(1), если он существует
2.Удаляет задания пользователя, созданные командой at(1)
3.Отправляет всем процессам работающим от имени этого пользователя сигнал SIGKILL
4.Удаляет пользователя из файла /etc/passwd
5.Удаляет домашнюю директорию пользователя, включая символические ссылки на домашний каталог
6.Удаляет входящие письма из каталога /var/mail
7.Удаляет все файлы владельцем которых является пользователь из каталогов /tmp, /var/tmp и /var/tmp/vi.recover
8.Удаляет пользователя из всех группы, в которых он состоит (файл /etc/groups)
9.Удаляет все очереди сообщений, общую разделяемую память, семафоры владельцем которых является пользователь. (Для справки: все это интерфейсы межпроцессорного взаимодействия)
Используйте утилиту rmuser(8) с параметром ‘–y’ что бы она не спрашивала подтверждения на удаление.
Пример удаления без опции '-y' и с опцией 'y':
fdesktop1# rmuser test
Matching password entry:
test:*:1002:1002::0:0:Test users:/home/test:/bin/sh
Is this the entry you wish to remove? y
Remove user's home directory (/home/test)? y
Removing user (test): mailspool home passwd.
fdesktop1# pw useradd test -s /bin/sh -m -b /home -c "Test users"
fdesktop1# rmuser -y test
Removing user (test): mailspool home passwd.
|
Посмотрим теперь информацию о существующих пользователях, для этого будем использовать каманды id(1), finger(1):
fdesktop1# id root
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
|
Как видим утилита показывает информацию, к каким группам принадлежит пользователь. У данной команды есть много полезных опций, поэтому почитайте манн.
fdesktop1# id -P root
root:$1$SJSDMXQE$LRpetLGNt5xO8k980r2om.:0:0::0:0:Charlie &:/root:/bin/csh
fdesktop1# finger root
Login: root Name: Charlie Root
Directory: /root Shell: /bin/csh
On since Sun May 17 23:10 (MSD) on ttyp0 from 192.168.0.2
New mail received Wed Feb 18 01:21 2009 (MSK)
Unread since Fri Feb 13 00:52 2009 (MSK)
No Plan.
|
Давайте теперь узнаем кто сейчас находится в системе, для этого будем использовать команды users(1) и who(1):
$ who
root ttyp0 May 17 23:10 (192.168.0.2)
atrium ttyp1 May 17 23:19 (192.168.0.2)
$ users
atrium root
|
Создадим новую группу:
fdesktop1# echo 'test:*:200:atrium' >> /etc/group
fdesktop1# id atrium
uid=1001(atrium) gid=20(staff) groups=20(staff),200(test)
|
Мы создали новую группу ‘test’ и сразу же добавили в неё пользователя ‘atrium’.
fdesktop1# pw groupadd list -M atrium,root
fdesktop1# pw groupshow list
list:*:1002:atrium,root
|
С помощью прекрасной команды pw(8) мы создали группу 'list’ и добавили в неё пользователя atrium и root. Так же посмотрели созданную группу.