Операционная система Free BSD

Как удалить пользователя?


С одной стороны, очень просто - удалите его бюджет из базы. Это можно сделать программой vipw - найдите соответствующую строчку и удалите ее.

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

Что надо удалить?

Во-первых, домашнюю директорию юзера. Кстати, если администратор не предпринимал никаких действий, чтобы дать юзеру возможность писать в другие директории, то все файлы, которые мог "наплодить" юзер должны лежать в его Home dir. Если же вы дали юзеру права создавать файлы в других директориях (в публичном ftp архиве или в директории www сервера, например), то, возможно, надо "почистить" и там.

Во-вторых, "почтовый ящик" юзера в директории /var/mail (или /var/spool/mail). Сделайте это обязательно, даже если юзер просил пока не удалять почту. Дело в том, что название этого файла совпадает с Name юзера, а права на чтение/запись определяются его user ID, и, естественно, должны соответствовать друг другу.

Не вдаваясь в подробности, могу сказать, что если вы вскоре зарегистрируете нового пользователя с тем же user ID (он же освобождается), но с другим именем, или наоборот - с таким же именем, как у старого юзера, но с другим user ID, то у этого нового юзера возникнут серьезные проблемы с получением почты.

В-третьих. Могут быть еще где-то раскиданы файлы, владельцем которых был этот юзер. Например, в директории /tmp, /usr/tmp, /var/tmp.

Найти все эти файлы можно с помощью программы find. Например, так

find / -user <юзер>

(Обратите внимание, первый аргумент - директория, начиная с которой искать. В данном примере это корневая, то есть будут просмотрены все файлы в системе. С одной стороны это хорошо - ничего не пропустите, но, с другой стороны, если у вас стоит ньюс-сервер или огоромный ftp-архив, то ждать придется долго).

С помощью этой же команды можно и удалить все найденные файлы

find / -user <юзер> -delete

однако, поскольку она не спрашивает подтверждения, этот метод очень опасный.
Лучше уж заставить ее выполнять команду rm ( с подтверждением) для каждого найденного файла

find / -user <юзер> -exec rm -i {} \;

И, наконец, привожу небольшой список (скорее всего, неполный) - где еще могут остаться упоминания об этом юзере.



  • в файлах /etc/group, /etc/login.access, /etc/ftpusers
  • в таблицах программы sendmail: /etc/aliases и т.п. (virtusertable, genericstable и др.)
  • если у вас отдельным юзерам разрешается запускать задачи с помощью cron, то юзер может упоминаться в /etc/crontab или в /var/cron/allow, /var/cron/deny, а, также, может быть его индивидуальная crontab в /var/cron/tabs/
  • если юзерам разрешается пользоваться пакетным выполнением программ, то юзер может упоминаться в /var/at/at.allow, /var/at/at.deny
  • если у вас ведется квотирование дискового пространства, то должна быть quote для этого юзера
  • если юзер пользуется IP связью через модем, то он может упоминаться в файлах, лежащих в /etc/sliphome или /etc/ppp
  • от имени юзера могут запускаться какие-нибудь демоны (особенно это касается псевдо-юзеров), тогда имя юзера может быть в /etc/inetd.conf или /etc/rc.local.


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

Однако, в большинстве случаев все гораздо проще.

Самый простой способ удалить юзера

Большую часть работы по удалению юзера (и всяческих упоминаний о нем) выполняет программа rmuser <имя юзера>

Во всяком случае, кроме удаления бюджета, она удаляет


  • его домашнюю директорию;
  • его почтовый ящик в /var/mail;
  • упоминания о юзере в /etc/group;
  • персональную crontab юзера;
  • пакетные задания юзера в /var/at/jobs.


В большинстве случаев этого вполне достаточно.


Содержание раздела