Відповіді:
Вам доведеться вручну знайти файли, що, ймовірно, було 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.