Я использовал deluser
без параметра --remove-all-files
:
$ deluser 'user'
Есть ли способ, кроме rm -r /home/user
, удалить все файлы, принадлежащие пользователю сейчас (так как я уже выполнил deluser )?
У gnu find есть опции -nouser и -nogroup, ищите это в man find
. С помощью этих опций вы можете найти все файлы в вашей файловой системе (-ах), у которых нет соответствующего пользователя в / etc / passwd. Если вы не создали нового пользователя со старыми uid своих удаленных пользователей, это возможность найти эти потерянные файлы.
Однако, вы можете найти больше файлов - не только те, которые принадлежали вашему удаленному.
Другим вариантом было бы повторно добавить пользователя с помощью adduser
, указав старый UID, а затем снова запустить deluser
, на этот раз с флагом --remove-all-files
.
Предположим, например, что у пользователя было имя пользователя alice
и UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
Вам придется вручную находить файлы, что, вероятно, и было бы 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
, чтобы убедиться, что вы ничего не хотите сохранить, и чтобы отследить любую ошибку, которую вы сделали при написании остальной части команды. Ошибки при выполнении рекурсивных операций удаления в /
не для слабонервных.)