Câu trả lời:
Bạn sẽ phải tự tìm các tệp, có thể là những gì deluser
sẽ làm.
Hãy lưu ý --remove-all-files
là không giống như rm -r /home/user
. Cái sau chỉ xóa homedir (có thể bao gồm các tệp không thuộc sở hữu của người dùng đó, mặc dù không bình thường), cái trước sẽ xóa tất cả các tệp do người dùng đó sở hữu khỏi hệ thống. Ít nhất nếu manpage là đáng tin cậy .
GNU find
có một -user
bài kiểm tra, vì vậy bạn có thể làm find / -user xxx
để tìm tất cả các tệp do người dùng sở hữu xxx
. xxx
sẽ là tên người dùng và có thể (và trong trường hợp này sẽ phải, vì người dùng không còn tồn tại) là ID số của người dùng. find
cũng có một -delete
lựa chọn, vì vậy
find / -user xxx -delete
Nên làm điều đó, mặc dù tôi đã không kiểm tra lệnh với tất cả các tùy chọn cùng một lúc.
EDIT: ID số: Lý do tại sao tôi nói bạn phải sử dụng ID số là vì, khi bạn đã xóa người dùng, mục nhập của anh ấy /etc/passwd
đã bị xóa (cùng với những thứ khác, ID người dùng, cùng với tên người dùng của anh ấy) .
Vì vậy, nếu bạn không xóa homedir của anh ấy, một trong những cách dễ nhất là chỉ truy vấn ID của chủ sở hữu của homedir đó:
stat -c %u /home/user/
( stat
là một công cụ để đọc dữ liệu hệ thống tập tin. Cho -c %u
biết stat
cách ghi đầu ra của nó, ở đây tôi yêu cầu nó chỉ đơn giản là xuất ID người dùng)
Nếu bạn thích một lớp lót, bạn thậm chí có thể xâu chuỗi cả hai lệnh:
find / -user $(stat -c %u /home/user/) -delete
(Tất nhiên bạn có thể thích chạy nó trước mà không -delete
để đảm bảo không có gì bạn muốn giữ và để bắt bất kỳ lỗi nào bạn đã viết phần còn lại của lệnh. Lỗi khi thực hiện các thao tác xóa đệ quy /
không dành cho người mờ nhạt của trái tim.)
rm
sử dụng xargs
(nhưng điều này có thể sẽ đạt giới hạn đối số nếu có quá nhiều kết quả), nhưng hãy xem -depth
, trích dẫn hướng dẫn thông tin: "Nếu lệnh` find 'của bạn xóa thư mục, bạn có thể thấy rằng bạn nhận được một thông báo lỗi giả khi `find 'cố gắng lặp lại vào một thư mục đã bị xóa. Sử dụng tùy chọn` -depth' thường sẽ giải quyết vấn đề này." (và sau này trên cùng một phần, "(` -delete 'ngụ ý` -depth' anyway) ")
find: 'user' is not the name of a known use
/etc/passwd
nào liệt kê người dùng và ID của anh ta. Bạn sẽ phải tìm id số. Làm stat -c %u /home/user/
, nó sẽ cung cấp cho bạn id người dùng số, sử dụng như xxx
trên.
Một tùy chọn khác là thêm lại người dùng adduser
, chỉ định UID cũ và sau đó chạy deluser
lại, lần này với --remove-all-files
cờ.
Ví dụ, giả sử rằng người dùng có tên người dùng alice
và UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find có các tùy chọn -nouser và -nogroup, hãy tìm nó trong man find
. Với các tùy chọn này, bạn có thể tìm thấy tất cả các tệp trong (các) hệ thống tệp của mình không có người dùng tương ứng trong / etc / passwd. Nếu bạn chưa tạo người dùng mới với các uids cũ của người dùng đã xóa, đây có thể là tìm thấy các tệp mồ côi này.
Tuy nhiên, bạn có thể tìm thấy nhiều tệp hơn - không chỉ những người thuộc về tệp đã xóa của bạn.
-exec
tùy chọn find để chạy lệnh rm tùy chỉnh nếu bạn muốn kiểm soát nhiều hơn một chút đối với việc xóa của mình, nhưng tôi chưa bao giờ thử điều đó YMMV.