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

Я использовал deluser без параметра --remove-all-files:

$ deluser 'user'

Есть ли способ, кроме rm -r /home/user, удалить все файлы, принадлежащие пользователю сейчас (так как я уже выполнил deluser )?

12
задан 31 May 2012 в 15:45

3 ответа

У gnu find есть опции -nouser и -nogroup, ищите это в man find. С помощью этих опций вы можете найти все файлы в вашей файловой системе (-ах), у которых нет соответствующего пользователя в / etc / passwd. Если вы не создали нового пользователя со старыми uid своих удаленных пользователей, это возможность найти эти потерянные файлы.

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

0
ответ дан 31 May 2012 в 15:45

Другим вариантом было бы повторно добавить пользователя с помощью adduser, указав старый UID, а затем снова запустить deluser, на этот раз с флагом --remove-all-files.

Предположим, например, что у пользователя было имя пользователя alice и UID 1001 :

sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
0
ответ дан 31 May 2012 в 15:45

Вам придется вручную находить файлы, что, вероятно, и было бы deluser.

Обратите внимание, что --remove-all-files - это , а не , как rm -r /home/user. Последний удаляет только homedir (который может включать в себя файлы, не принадлежащие этому пользователю, хотя и не обычно), первый удаляет все файлы, принадлежащие этому пользователю, из системы. По крайней мере, если man-страница заслуживает доверия .

GNU find имеет тест -user, поэтому вы можете выполнить find / -user xxx, чтобы найти все файлы, принадлежащие пользователю xxx. xxx будет именем пользователя и может (и в этом случае потребуется должен, поскольку пользователь больше не существует) быть числовым идентификатором пользователя. find также имеет опцию -delete, поэтому

find / -user xxx -delete

должна это сделать, хотя я не тестировал команду со всеми опциями одновременно.

РЕДАКТИРОВАТЬ: Числовой идентификатор: Причина, по которой я сказал, что вы должны использовать числовой идентификатор, заключается в том, что, поскольку вы уже удалили пользователя, его запись в /etc/passwd была удалена (вместе с другие вещи, идентификатор пользователя, вместе с его именем пользователя.

Итак, если вы не удалили его домашний каталог, один из самых простых способов - просто запросить идентификатор владельца этого домашнего каталога:

stat -c %u /home/user/

(stat - инструмент для читать данные файловой системы. -c %u говорит stat, как записать свой вывод, здесь я прошу его просто вывести идентификатор пользователя)

Если вам нравятся однострочные, вы можете даже объединить обе команды:

find / -user $(stat -c %u /home/user/) -delete

(Конечно, вы можете предпочесть запустить его сначала без -delete, чтобы убедиться, что вы ничего не хотите сохранить, и чтобы отследить любую ошибку, которую вы сделали при написании остальной части команды. Ошибки при выполнении рекурсивных операций удаления в / не для слабонервных.)

0
ответ дан 31 May 2012 в 15:45

Другие вопросы по тегам:

Похожие вопросы: