Відповіді:
Вам доведеться вручну знайти файли, що, ймовірно, було deluserб , що було б зробити.
Зверніть увагу, --remove-all-filesце не те саме, що rm -r /home/user. Останній лише видаляє homedir (який може включати файли, які не належать цьому користувачеві, хоча і не є звичайними), перший видаляє з системи всі файли, що належать цьому користувачеві. Принаймні , якщо сторінка керівництва повинен бути довіреною .
У GNU findє -userтест, тому ви можете зробити, find / -user xxxщоб знайти всі файли, що належать користувачеві xxx. xxxбуде ім'я користувача, і може (і в цьому випадку буде необхідно, так як користувач більше не існує) буде числовий ідентифікатор користувача. findтакож є -deleteваріант, так
find / -user xxx -delete
Повинен це робити, хоча я не перевіряв команду з усіма параметрами одночасно.
EDIT: Числовий ідентифікатор: Причина, по якій я сказав, що ви повинні використовувати числовий ідентифікатор, полягає в тому, що, як ви вже видалили користувача, його запис /etc/passwdбуло видалено (він, поряд з іншими речами, ідентифікатор користувача, разом з його ім'ям) .
Отже, якщо ви не видалили його homedir, один із найпростіших способів - це просто запитувати ідентифікатор власника цього hededir:
stat -c %u /home/user/
( statце інструмент для читання даних файлової системи. -c %uрозповідає, statяк записати її вихід, тут я прошу просто вивести ідентифікатор користувача)
Якщо вам подобаються однолінійки, ви навіть можете з'єднати обидві команди:
find / -user $(stat -c %u /home/user/) -delete
(Звичайно, ви можете скоріше запустити його спочатку, не -deleteпереконуючись, що нічого не хочете зберегти, і щоб помилитися з будь-якою помилкою, яку ви зробили при написанні решти команди. Помилки під час виконання рекурсивних операцій видалення /не для слабких серця.)
rmвикористання xargs(але це, ймовірно, вдасться до меж аргументу, якщо результатів занадто багато), але подивіться -depth, цитуючи інформаційну інструкцію: "Якщо ваша команда` find "видаляє каталоги, ви можете виявити, що ви отримуєте помилкове повідомлення про помилку, коли "find" намагається повторно вписатись у каталог, який зараз було видалено. Використання опції `-depth 'зазвичай вирішить цю проблему." (і пізніше в тому ж розділі, "(` -delete 'означає `-depth' все одно)")
find: 'user' is not the name of a known use
/etc/passwdцьому списку користувача та його ідентифікатора немає відображення . Вам доведеться знайти числовий ідентифікатор. Зробіть stat -c %u /home/user/це, він повинен дати вам числовий ідентифікатор користувача, використовуйте його, як xxxзазначено вище.
Іншим варіантом буде повторне додавання користувача із adduserзазначенням старого UID, а потім запуску deluserзнову, на цей раз із --remove-all-filesпрапором.
Припустимо, наприклад, що у користувача було ім’я користувача aliceта UID 1001:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find має параметри -nouser та -nogroup, знайдіть його man find. За допомогою цих параметрів ви можете знайти всі файли у вашій файловій системі (их), які не мають відповідного користувача в / etc / passwd. Якщо ви не створили нового користувача зі старими подіями видалених користувачів, це можливість знайти ці осиротілі файли.
Однак ви можете знайти більше файлів - не тільки тих, що належали вашому видаленому файлу.
-execопцією знайти, щоб запустити спеціальну команду rm, якщо ви хочете трохи більше контролювати свої видалення, але я ніколи цього не намагався YMMV.